值引用java
① java 值引用,对象引用 的问题,求解释,为什么执行了 clear 方法后,对象,没有变成null
你对引用传递的理解还是有问题。
你new的Item对象。在进入clear方法后。
一共有三个引用,在引用着这个Item对象
他们是:item、object(方法参数)和list中的数组引用
clear方法执行完以后,object的生命周期结束。
此时还生item和list中的数组引用这两个引用了。
一次循环结束后,下一次循环
item = new Item();
item又指向了其他的item对象。
此时原来的item对象只有list中的数组引用在引用着它了。
所以你的clear方法是没起到任何作用的。即便你不去设置为null
方法结束之后,object的作用范围也已经无效了。
所以真正要把它置为null
必须list.set(i, null);
② Java值类型和引用类型,以及复制的是什么东西
java 中的数据类型分为两大类:值类型(基本数据类型)和引用类型(复合数据类型)
一,值类型分为 1,整数类型(byte,short,int,long) 2,浮点类型(float,double) 3,布尔类型(boolean) 4,字符类型(char)
二,引用值类型 除了值类型外就是引用值类型了,引用值类型有1,类类型(class) 2,数组 3,接口类型(interface)
关于复制的是什么?我还真不知道。。。。。
③ java到底是值传递还是引用传递
java中方法参数传递方式是按值传递。所谓值传递,就是将实际参数值的副本(复制品)传入方法内,而自己本身不会受到任何影响。
如果参数是基本类型,传递的是基本类型的字面量值的拷贝。
④ java类方法如何实现引用传递和值传递
参数是基本类型就是传值,传对象就是引用传递。
swap(Integer x, Integer y)可以传递引用,但是没办法实现交换。这跟Integer的实现方式有关。所以不是引用传递就一定能改变外面的值。
下面是引用传递,交换的情况,又臭又长。
classUntitled{
intneedFix;
publicstaticvoidswap(Untitledx,Untitledy){
inttemp=x.needFix;
x.needFix=y.needFix;
y.needFix=temp;
}
publicstaticvoidmain(String[]args){
Untitle1=newUntitled();
Untitle2=newUntitled();
u1.needFix=3;
u2.needFix=4;
swap(u1,u2);
System.out.println(u1.needFix+","+u2.needFix);
}
}
另外,你可以考虑一下引用传递,不过也是一种传值,java里面没有事实上的指针。直接交换引用指向的对象是没有作用的。
Untitledtemp=x;
x=y;
y=temp;
无效。
⑤ Java方法参数是引用调用还是值调用
Java中方法是值调用还是引用调用取决于方法中参数的类型。Java基本数据类型的参数为值调用,其他的数组、自定义的类,这几种类型为引用类型,
String类特殊:
当String变量定义时这样定义:String name = "张三";,这样的定义参数的方法为值传递。
⑥ Java类是值传递还是引用传递
基本类型是值传递,
引用类型
可以看作是是
引用传递
.举个简单的例子吧
public
class
tt
{
public
static
void
change(int
a)
{
a=2;
}
public
static
void
change(int[]
A)
{
A[0]=2;
}
public
static
void
main(String[]
args)
{
int
b=1;
change(b);
System.out.println(b);//基本类型是
值传递
,所以b的值没有改变
int[]
B={1};
change(B);
System.out.println(B[0]);//数组版,对象等引用类型是引用传权递,所以B的值发生改变
}
}