JAVA语言中的参数传递
导语:在程序设计中,C语言或者C++语言的一些参数传值或者地址都十分明确,但是在JAVA中还存在着一些争论,甚至有所谓的结论认为:在JAVA里参数传递是按值传递。下面就由小编为大家介绍一下JAVA语言中的参数传递,欢迎大家阅读!
一、按值传递
所谓的按值传递是指在调用方法时,是根据值的拷贝进行参数传递,其最显著的特点也是其所传递的参数是值的拷贝,传递后即互不相干,可以通过以下示例说明:
public class TempTest{
private void test1(int a){
a=5;
tln("test1方法中的a==="+a);
}
public static void main(String[]args){
TempTest t=new TempTes(t);
int a=3;
1(a);//
在进行传递后,test1方法中所改变的变量值不会对此处的a产生影响。
tln("main方法中的a==="+a);
}
}
运行结果是:
test1方法中的a===5
main方法中的a===3
二、按引用传递
所谓的按引用传递是指方法调用的过程中,按照引用实现参数的传递,其所传递的参数内容是引用地址,即变量对的内存空间地址。按引用传递也着显著的特点,它所传递的内容是值的引用,无论传递前还是传递后均指向同个内存空间。可以通过以下示例加以说明:
第1行public class TempTest{
第2行private void test1(A a){
第3行=20;
第4行tln("test1方法中的age="+);
第5行}
第6行public static void main(String[]args){
第7行TempTest t=new TempTes(t);
第8行A a=new A();
第9行=10;
第10行1(a);
第11行tln("main方法中的age="+);
第12行}
第13行}
第14行class A{
第15行public int age=0;
第16行}
运行结果如下:
test1方法中的age=20
main方法中的age=20
三、内存分配示意图
要准确理解按引用传递的过程,就要清楚的知道内存分配的过程,可以通过以下示例进行说明:
(1):运行开始,运行第8行,创建了一个A的实例,内存分配示意如下:
main方法中的变量a
(此处是一个A的实例,age=0)
(2):运行第9行,是修改A实例里面的age的值,运行后内存分配示意如下:
main方法中的变量a
(此时age=10)
3):运行第10行,是把main方法中的变量a所引用的内存空间地址,按引用传递给test1方法中的a变量。请注意:这两个a变量是完全不同的`,不要被名称相同所蒙蔽。内存分配示意如下:
main方法中的变量a
(此时age=10)
按引用传递赋值给test1方法中的变量a,因为是按引用传递,即所传递的内容是内存空间地址,因此在传递结束后,内存示意图就会形成一个新的形式:
main方法中的变量a
test1方法中的变量a
(此时age=10)
即两个变量均指向同一空间。
(4):运行第3行,为test1方法中的变量a指向的A实例的age进行赋值,完成后形成的新的内存示意图如下:
main方法中的变量a
test1方法中的变量a
(此时age=20)
此时A实例的age值的变化是由test1方法引起的
(5):运行第4行,根据此时的内存示意图,输出test1方法中的age=20
(6):运行第11行,根据此时的内存示意图,输出main方法中的age=20
四、利用ASP实现JAVA在网页中的参数传递
通常JAVA要从其所在的超文本中获取参数,假如这些参数可预知或者不常改变,那么只需将对应的参数直接输出超文本中即可。但是如果这些参数是无法预知或者经常变化的动态参数,那么就要相应的更改超文本中的这些参数。我们可以利用ASP实现这一功能。我们可以通过以下案例加以说明:
-
Java创建线程的三种方法
导语:编写多线程程序是为了实现多任务的并发执行,从而能够更好地与用户交互。下面是Java创建线程的三种方法,一起来学习下吧:Runnable和Callable的区别(1)Callable规定的方法是call(),Runnable规定的方法是run().(2)Callable的任务执行后可返回值,而Runnable的任务...
-
java的应用范围
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。自从sun公司推出java语言以来,java极大受到开发者和企业的欢迎,在互联网如此发达的今天,java语言得到了广泛的应用,比如网站,游戏,电子商务等,java语言在这些领域开发占很大的比例。在全球云计算和移动互...
-
Java类加载器类介绍
类加载器是Java语言的一个创新,也是Java语言流行的重要原因之一。它使得Java类可以被动态加载到Java虚拟机中并执行。以下是小编为大家搜索整理的java类加载器,希望能给大家带来帮助!更多精彩内容请及时关注我们。类加载器:java虚拟机中可以安装多个类加载,系统默...
-
Java测试题及答案
Java测试题及答案学习是把知识能力思维方法等转化为你的私有产权的重要手段,是公有转私的重要途径。以下是本站小编整理的Java测试题及答案,欢迎学习!试题1指出下面语句没有编译错误的是()。A.longn=999999999999;n=999999999999L;C.longn=999999999999L;D.doubl...