引用传递和值传递

引用传递和值传递

既然除了值类型以外都是引用类型,但是在涉及到传递问题的时候,是不是有一部分引用类型会采用值传递的方式。

在这道题目中,我认为stringbuilder创建的对象,采用的就是引用传递,直接变了对象中的值,

但是在integer创建的对象中,到底是怎么执行操作的不太懂

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕珊 2018-10-26 09:22:06

你好!不是哪些类执行了值传递,要看具体的方法参数和在方法内做了什么。

基本数据类型如int等,作为方法参数,在方法内对参数的改变是不影响主方法中的变量的。

如果是引用数据类型,比如数组,在方法中对数组的值进行改变,会影响到主方法中的数组。

类也属于引用数据类型,对于类作为参数,如果你去改变对象的属性值,在主方法中是可以看到改变的。如下代码和运行效果所示。

class Cat {
private String name;
private String age;
public Cat(String name, String age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
@Override
public String toString() {
return "Cat [name=" + name + ", age=" + age + "]";
}
}
public class Demo {
public void change(Cat cat) {
cat.setName("huahua1");
}
public static void main(String[] args) {
Cat cat=new Cat("huahua","1 month");
System.out.println("name:"+cat.getName());
Demo demo=new Demo();
demo.change(cat);
System.out.println("name:"+cat.getName());
}
}

运行效果:

http://img1.sycdn.imooc.com//climg/5bd26c130001ced601900071.jpg

祝学习愉快!

好帮手慕查理 2018-10-25 09:57:18

您好,执行Integer x=400;这段代码会创建一个Integer对象,x的引用指向它;执行Integer y = x;这段代码,y的引用和x的引用指向了同一片内存空间。这时,x和y指向同一个对象。之后,执行x++,将会创建一个新的Integer对象401,然后x的引用指向新创建的对象。这时x和y不再指向同一个对象。执行x==y得到结果为false;
执行StringBuilder sb1 = new StringBuilder("123");这段代码时,在堆中生成一个StringBulider对象,内容为:123,这时有一个sb1的引用指向"123"这个内容。执行StringBuilder sb2 = sb1;这段代码,sb2的引用同样指向"123"这个内容。在执行sb1.append("5");时,会在内存中"123"这个位置变成 了"1235",这时没有在内存当中生成新的对象,也没有新的字符串常量,而是在原来的基础上进行了修改。sb1和sb2指向的是同一个对象,所以执行sb1==sb2得到结果为true。 

祝学习愉快!

  • 提问者 慕移动8576453 #1
    在各种类中,哪些类方法的执行像integer哪些像stringbuilder
    2018-10-25 12:15:29
  • 好帮手慕查理 回复 提问者 慕移动8576453 #2
    您好,类方法执行像Integer是?请您具体描述一下。祝学习愉快!
    2018-10-25 13:57:08
  • 提问者 慕移动8576453 回复 好帮手慕查理 #3
    就比如说 public static void jiayi (int a ){ a++; } 然后在main方法里 int a=0; 类名.jiayi(a); System.out.println(a); 此时输出的是0啊, 哪些类的执行像int类型 一样,经过了方法,本身值却不会变,哪些类经过了方法,本身就改变了。
    2018-10-25 17:06:55
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师