java地址传递_关于java中是地址传递还是值传递的测试
首先,我的结论是,如果是对对象进行 操作的话,传的是地址,如果是对基本数据类型进行操作的话,传的是值!
下面,我再用一个小的实例来测试我的结论:
class Person {
int age;
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
}
public class Test{
public static void main(String[] args){
Person p = new Person();
p.setAge(1);
changeObj(p);
System.out.println(p.getAge());
int a = 1;
change(a);
System.out.println(a);
}
static void changeObj(Person p){
p.setAge(12);
}
static void change(int a){
a = 123;
}
}
如果,我上面的结论是猜测是正确的话,输出的结果应该是
age=12
a=1
下面截图表示一下:
因此,说明了我的结论是正确的。可是突然想到,如果是基本数据类型的包装类的话会是什么结果呢?下面我们进行一个小的测试来寻找一下结论
public class Test{
public static void main(String[] args){
Integer b = new Integer(90);
change(b);
System.out.println(b);
}
static void change(int a){
a = 123;
}
}
如果是值传递的话,那么结果应该是90,如果是地址传递的话,那么结果应该是123,下面贴图说明问题:
上面说明了传递的是值,而不是地址,但是有一点,程序里面,change()方法这的参数是int,而不是Integer,这会不会影响结果呢?那么我们就再写一个例子测试,看一下结果:
public class Test{
public static void main(String[] args){
Integer b = new Integer(90);
change(b);
System.out.println(b);
}
static void change(Integer a){
a = 123;
}
}
下面来看结果,还是贴图查看:
可以看出,结果依然没有变化,由此我们可以得到结论:基本数据类型,包括其包装类,在进行参数传递的时候传的是值。
综上所述,我们可以得到结论:在java中进行参数传递的时候,基本数据类型,包括其封装类,进行的是值传递,而对于对象,传递的是引用。
以上是本人的一个测试与结论,如果大家发现有什么不正确的地方,欢迎批评指正。
分享到:
2012-09-09 10:45
浏览 921
评论
java地址传递_关于java中是地址传递还是值传递的测试相关推荐
- java中的参数传递(只有值传递没有引用传递)
Java中只有传值调用(值传递),没有传址调用(址传递或者引用传递).所以在java方法中改变参数的值是不会改变原变量的值的,但为什么改变引用变量的属性值却可以呢?请看下面的解答. java中的数据类 ...
- qt槽函数如何传递多个参数_【Qt】信号和槽对值传递参数和引用传递参数的总结...
在同一个线程中 当信号和槽都在同一个线程中时,值传递参数和引用传递参数有区别: 值传递会复制对象:(测试时,打印传递前后的地址不同) 引用传递不会复制对象:(测试时,打印传递前后的地址相同) 不在同一 ...
- JS中函数传参按照值传递
ES语法中所有函数的参数都是按值传递的. 探讨函数参数按值传递问题: //1.参数被赋值为原始值 function add(num){num += 10;return num; } let count ...
- java integer 值传递_在java中String,对象,Integer(包装类型的)关于引用传递仍是值传递...
场景: 你们都知道基本的数据类型,int,float等等这种是按值传递的.可是对于String,对象,Integer是怎样传递呢?java 原理知识: 若是参数类型是原始类型,那么传过来的就是这个参数 ...
- java引用传递_理解Java中的引用传递和值传递
关于Java传参时是引用传递还是值传递,是一个讨论比较多的话题, 有说Java中只有值传递,也有些地方说引用传递和值传递都存在,本篇记录思考过程,不保证正确性, 感兴趣的同学一起讨论. 1.基本类型和 ...
- java值传递和引用传递_辨析Java方法参数中的值传递和引用传递
小方法大门道 小瓜瓜作为一个Java初学者,今天跟我说她想通过一个Java方法,将外部变量通过参数传递到方法中去,进行逻辑处理,方法执行完毕之后,再对修改过的变量进行判断处理,代码如下所示. publ ...
- java integer引用传递_在java中String,对象,Integer(包装类型的)关于引用传递还是值传递...
场景: 大家都知道基本的数据类型,int,float等等这种是按值传递的.但是对于String,对象,Integer是怎样传递呢? 原理知识: 如果参数类型是原始类型,那么传过来的就是这个参数的一个副 ...
- java 怎么改变值传递_学习Java值传递方法
学习Java值传递方法-武汉北大青鸟 值传递是在一个函数中,调用另外一个函数,其中含有参数传递的情况.往往值传递就是把数据传递到另外一个函数中进行进一步处理,以更清楚地显示函数的表达意思.在函数调用的 ...
- java final 类_在Java中,final修饰的类有什么特点
展开全部 关于Java中的32313133353236313431303231363533e4b893e5b19e31333264663736final(2010-09-09 14:19:48)转载▼ ...
最新文章
- 在Outlook中用VBA导出HTML格式邮件
- 战神背光键盘如何关系_?复工了?换个键盘先!0-2000元键盘推荐
- 深度学习核心技术精讲100篇(四十八)-TB级的日志监控系统很难?带你使用ELK轻松搭建日志监控系统
- 【攻防世界011】Windows_Reverse1
- Django两天搭建个人博客
- 基于Nginx的媒体服务器技术
- .NET中的异步编程 - 动机和单元测试
- DB2中sql语句占位符问题
- python 字典查询比列表快_为什么python字典要比列表快以及哈希查找解释。
- Spring IOC中bean标签和管理对象细节
- PowerPoint(一)PowerPoint 2010 堪称“完美”?
- mysql的limit经典用法及优化
- 从gitlab迁移到极狐gitlab的方法 #JIHULAB101
- html未响应是什么原因,ie浏览器未响应如何解决
- win10家庭中文版自动更新解决办法
- 19_09_13 关于c语言中位域的理解
- 百度竞价推广怎么做?需要注意哪些?
- FFA-Net: Feature Fusion Attention Network for Single Image Dehazing
- Lucene学习总结
- Pandas中DataFrame的属性、方法、常用操作以及使用示例