问题

java中将对象作为参数传递究竟是值传递还是引用传递?
1、基本类型作为参数传递时,是传递值的拷贝,无论你怎么改变这个拷贝,原值是不会改变的。
2、对象作为参数传递时,是把对象在内存中的地址拷贝了一份传给了参数。

且看下面代码
首先我们有一个Student类,它有两个成员变量nameage

package test_code;
public class Student {String name;int age;public Student(String name,int age){this.name = name;this.age = age;}
}

Student对象进行参数传递,运行如下代码

package test_code;
public class method_test {public static void main(String[] args) {Student s = new Student("jack",16);test(stu);System.out.println(stu.age);}public static void test(Student s){s.age = 22;}
}

请问输出是16还是22呢?
答案是22,因为对象进行参数传递时是将对象的地址拷贝了一份传给s,也就是说方法中的s和传入的stu指向的是同一个对象,通过s.age将值进行修改了那么stu.age的值也相应被修改了。这很容易理解。


那么当String类对象进行参数传递时,运行如下代码

package test_code;
public class method_test {public static void main(String[] args) {String str = "111";test(str);System.out.println(str);}public static void test(String s){System.out.println(s);s = "222";System.out.println(s);}
}

请问输出是什么呢?
答案是222吗?不对。
那么为什么答案是111呢?
问题就在s = "222";这一行上。
这一行执行后,s和str所指向的对象就不是一个了。为什么呢?
由于Java中String对象不可改变的特性,这里其实是在常量池中新开辟了一块区域给222使用,s指向了222,但是并没有改变str的指向,那么str自然是111了。

本文较为简单,但希望能够大家带来一定的启发,大家在工作学习中一定要多多思考,欢迎关注,一起进步。

java中String对象作为参数传递问题相关推荐

  1. java中String对象和String变量

    2019独角兽企业重金招聘Python工程师标准>>> java中String对象和String变量 (2011-12-27 20:40:27) 转载▼ 标签: it 最近在论坛上看 ...

  2. Java中String对象的replaceAll方法调用性能优化小技巧

    Java中String对象的replaceAll方法调用性能优化小技巧 0x01 Java中String对象的replaceAll方法调用性能优化小技巧 1.1 What? 1.2 Why? 1.3 ...

  3. Java中String对象存储

    2019独角兽企业重金招聘Python工程师标准>>> String对象 String s = new String("xyz"):创建了两个对象一个是" ...

  4. java 参数 string_关于Java中String类型的参数传递问题

    先把几个知识点列出来: 值传递: 当基本类型作为参数传入方法时,无论该参数在方法内怎样被改变,外部的变量原型总是不变的. 引用传递: 当方法传入的参数为引用数据类型(类.接口.数组)时,方法改变参数变 ...

  5. JAVA中String类

    1.String类定义的变量是不可变得 eg:String s0="kvill"; String s1 = new String("kvill"); 为什么要设 ...

  6. Java中字符串对象String、StringBuffer、StringBuilder的比较

    原文地址:http://www.iteye.com/topic/522167 作者:每次上网冲杯Java时,都能看到关于String无休无止的争论.还是觉得有必要让这个讨厌又很可爱的String美眉, ...

  7. Java中,一切皆是对象——java中的对象类型与基本数据类型的区别

    起因:取一个list给另一个list赋值,然后在另一个list中取出进行修改.list其中类型为对象时,String时,基本数据类型时. [java中的对象类型与基本数据类型的区别] #声明和实例化 ...

  8. Java中的对象和类

    一. OOP中的基本概念     Java的编程语言是面向对象的,采用这种语言进行编程称为面向对象编程(Object-Oriented Programming, OOP), 它允许设计者将面向对象设计 ...

  9. 【基础巩固篇】Java中String揭秘!

    作者:不清不慎,Java大数据开发工程师一枚,热爱研究开源技术! 架构师社区合伙人! String对象是我们日常使用的对象类型,字符串对象或者其等价对象(如char数组),在内存中总是占据了最大的空间 ...

最新文章

  1. js jquery关闭当前窗口
  2. 015_SpringBoot视图层技术thymeleaf-URL表达式
  3. PM应该找哪些副业?
  4. SAP——102和122和161区别
  5. chrome浏览器好用的插件
  6. 疯狂.NET架构通用权限后台管理工具演示版2.0下载
  7. java中引用数组_javaOO——引用数组
  8. win7关机快捷键_150个常用的电脑快捷键,你都知道算我输
  9. 细节复盘2 (图片放足够大高斯模糊< style > scopedvue打开新的页面轮播图抖动的问题 translateZ、translateY、垂直水平居中)2020-8-1
  10. 经常有人会问,我的网站部署了好多个网站访问统计系统,比如百度、谷歌、CNZZ、JYC、51.la等等,但各个系统统计的结果总是不相同,而且差距不小,我该以哪个为准呢?
  11. Firefox 火狐下自动刷新的插件 ReloadEvery
  12. java正则匹配ip_正则表达式 - 匹配 IP 地址
  13. 任建新照常去办公室领取工资
  14. jenkins使用时遇到“using GIT_ASKPASS to set credentials”
  15. 1、张龙netty学习 第一个netty服务端
  16. 计算机虚拟筛选方法,药物发现的虚拟筛选基本方法 .ppt
  17. 画图工具如何裁剪图片
  18. 解析几何复习(二)正交变换和仿射变换
  19. Vscode下载与配置(C语言)
  20. 新能源汽车车载双向OBC,PFC,LLC,V2G 双向 充电 新能源汽车车载双向OBC

热门文章

  1. Python字符串| isdecimal()方法与示例
  2. 日期getUTCSeconds()方法以及JavaScript中的示例
  3. linux vim 快速定位位置,vim快速移动定位的一些操作命令
  4. java如何解决高并发症,JAVA线上故障紧急处理详细过程!
  5. ruby hash方法_Ruby中带有示例的Hash.rehash方法
  6. stl vector 函数_vector :: front()函数以及C ++ STL中的示例
  7. Redis夺命十二问,你能扛到第几问?
  8. ubuntu20.04使用终端命令安装谷歌Chrome浏览器稳定版
  9. 如何解决在使用ElementUI时发现有些控件是英文的
  10. php连接mysql乱码原因_PHP连接MYSQL出现乱码的原因与解决办法