Java中的引用传递
除了基本数据类型和String类对象,其他引用类型的对象都可以进行引用传递。数组也是引用类型。
比如: 通过传入对象的方法,修改该对象的值。 这个时候,基本数据类型和String的对象就不可以进行引用传递,无法修改其值。
public class Test01 {public static void main(String[]args) {int num = 10;setNum(num);String str = "iii";System.out.println(num); //输出仍然是10 System.out.println(str); //输出仍然是iii}public static void setNum(int num) {num = 99;}public static void setString(String str) {str = "kkk";}
}
但传入的是非上述两种情况的引用对象时,就可以修改。
定义一个Person类,我们对其Person类的字段进行修改。
public class Person {String name ;int age ;Person(){}public Person(String name, int age) {super();this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String toString() {return "姓名: "+name +",年龄:"+age;}}
测试类
public class Test02 {public static void main(String[]args) {Person person = new Person("Xi",18);setPersonName(person);System.out.println(person);}public static void setPersonName(Person p) {p.setName("Ti");}
}
运行之后发现person对象的name的值改变了。
另外一个就是在方法中,我传入一个实参为引用对象,并且返回该对象。接受这个返回对象的另一个对象修改了值是否会印象到传入实参的引用对象呢 ? 答案是可以修改的。
在上述Person类的基础上,创建一个新的测试类。
public class Test03 {public static void main(String [] args) {Person person1 = new Person("F1",20);Person person2 ;person2 = getPerson(person1);person2.setName("T3");System.out.println("person1 = "+person1);System.out.println("person2 = "+person2);}public static Person getPerson(Person p) {return p;}
}
getPersonn(Person p) 方法 可以将p对象返回,person1传入到getPerson(person1)中,被person2接收,通过person2修改name的值,person1对象也会被修改到。
上述就是在类中经常使用到的setObject和getObject方法 ,用到了面向对象的思想。
Java中的引用传递相关推荐
- java中是引用传递还是值传递....
刚才与Z师兄聊天,他提问: 你说java中是引用传递还是值传递啊? 当时俺搞混了这个"传递"的意思, 本来以为是对象的实例化比如: abc a=new abc(); 这个a 是引用 ...
- java引用传递_理解Java中的引用传递和值传递
关于Java传参时是引用传递还是值传递,是一个讨论比较多的话题, 有说Java中只有值传递,也有些地方说引用传递和值传递都存在,本篇记录思考过程,不保证正确性, 感兴趣的同学一起讨论. 1.基本类型和 ...
- 请注意,java中没有引用传递
今天在论坛上有人提了一个关于java中调用函数时有没有引用传递的问题,可谓是吵的不可开交.有人说java只有值传递,也有人说java既有值传递也有引用传递,那么java中到底有没有引用传递呢,下面我来 ...
- java值传递和引用传递的例子,Java中的值传递和引用传递实例介绍
代码如下: package Object.reference; public class People { private String name; private int age; public P ...
- 详解Java中的值传递
前面所需的概念 首先我们来讲解传递这个概念,分为俩种 形参 实参 值传递 引用传递 形参&实参 方法的定义中可能会用到参数(有参的方法),参数在编程语言中又分为实参和形参, 形参:形式参数,指 ...
- 【Java基础】Java中的值传递、引用传递
Java中的值传递.引用传递 对于一个方法而言,参数是为该方法提供信息的,而不是想让该方法改变自己.--<Java编程思想> 值传递是对基本型变量而言的,传递的是该变量的一个副本,改变副本 ...
- 一文彻底搞懂Java中的值传递和引用传递!
关于Java中方法间的参数传递到底是怎样的.为什么很多人说Java只有值传递等问题,一直困惑着很多人,甚至我在面试的时候问过很多有丰富经验的开发者,他们也很难解释的很清楚. 我很久也写过一篇文章,我当 ...
- java中是值传递引用传递_Java是按值传递而不是按引用传递
java中是值传递引用传递 One of the biggest confusion in Java programming language is whether java is Pass by V ...
- [转]java中的值传递和引用传递
java中的值传递和引用传递 值传递:方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参 数的值. 引用传递:也称为传地址.方法调用时,实际参数的引用(地址,而不 ...
最新文章
- tensorflow2.0 基础一 常用数据类型及转换
- 学了js php就简单,学习笔记:JS + 简单的PHP实现用户注册及登录
- SCSI协议与存储的发展
- ios 简书 获取通讯录信息_iOS 13获取用户通讯录需要注意的
- c 语言 多进程,VC++中进程与多进程管理的方法详解
- 经典C语言程序100例之九九
- iOS之使用CAShapeLayer实现复杂的View遮罩效果
- The following module was built either with optimizations enabled or without debug information - winz
- python高斯求和_二、算法分析
- Spring整合Mybatis之关联查询示例
- ASP母版页与内容页不同目录 链接问题
- php 9000 端口没起来,PHP无法监听9000端口问题/502错误解决办法
- 4个睡眠中的“小动作”,暴露了你的身体状况
- 2020年中国报废汽车拆解回收行业市场现状分析,汽车报废率远低于发达国家「图」
- 【CC精品教程】ContextCapture(CC)集群处理环境部署图文教程
- 把Ubuntu主机加入Window工作组
- unity软粒子softparticle仿真实现
- AHB总线笔记(一)
- 证监会计算机类笔试上岸经验,2019国考证监会想妥妥上岸? 这6大考情你必须知晓...
- 20221223英语学习
热门文章
- html背景图片 纵向拉伸,背景图片拉伸(CSS方法)_html/css_WEB-ITnose
- steam饥荒云服务器搭建
- 梦幻西游藏宝阁不显示服务器,玩转梦幻西游藏宝阁全服搜索功能体验
- 【kimol君的无聊小发明】—用python写论文下载器
- UploadFile图片上传案例
- Linux从安装到实战+学校Linux+瑞吉外卖Linux项目部署
- qs的arrayFormat与SpringBoot接收数组问题
- SEO新手不知道每天做什么,看了你就知道
- 【面试常问】Java中final和finally以及finalize区别?
- 3种团队分组适应项目_对于新组建的团队,项目经理可以采用这5个破冰练习