以String为例:
public static void main(String[] args) {
String s="123";
new test().fun(s);
}
public void fun(String s){
String h="123";
System.out.println(h==s);
}
这样就是按值传:返回true
public static void main(String[] args) {
String s=new String("123");
new test().fun(s);
}
public void fun(String s){
String h="123";
System.out.println(h==s);
}
这样就是按引用:返回true
原理:
1、直接赋值:只会开辟一块堆内存空间,并且会自动保存在对象池之中,以供下次重复使用
2、构造方法:会开辟两块堆内存空间,其中有一块空间将成为垃圾,并且不会自动入池,但是用户可以使用intern()自动入池