Java参数传递,值传递
来源:互联网 发布:网络爬虫 维基百科 编辑:程序博客网 时间:2024/05/16 10:47
问题:Java 中参数的传递是以什么方式传递的?
回答:
- Java中参数类型传递都是值传递
- 基本数据类型的值传递采用先对值进行拷贝再传递
- 对象类型的值传递传递的是对象的地址
- String 虽然是对象类型,但是它的参数传递方式和基本数据类型相同
1. 基本数据类型先对值进行拷贝再传递
public class ParameterPassingTest { public void function1(int a){ a = 10; } public void function2(Dog dog){ dog.setName("paul"); } public void function3(String str){ str = "changed"; }}
调用 function1() 查看当为基本数据类型的引用赋值时的变化:
System.out.println("++++++++++++++++++++");System.out.println("a:" + a);passing.function1(1);System.out.println("a:" + a);System.out.println("++++++++++++++++++++");
++++++++++++++++++++a:11a:11++++++++++++++++++++
a 的值不变,说明对基本类型的引用赋值不改变原来的值
2. 对象类型传递对象的地址
public class Dog { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; }}
调用 function2() 查看当为对象类型的引用赋值时的变化:
System.out.println("++++++++++++++++++++");Dog dog = new Dog();dog.setName("Mike");System.out.println("Dog:" + dog.getName());passing.function2(dog);System.out.println("Dog:" + dog.getName());System.out.println("++++++++++++++++++++");
++++++++++++++++++++Dog:MikeDog:paul++++++++++++++++++++
name 改变:说明引用拿到了对象的地址,并通过地址对其值直接进行修改
3. String 类型是特例
System.out.println("++++++++++++++++++++");String str = "abc";System.out.println("str:" + str);passing.function3(str);System.out.println("str:" + str);System.out.println("++++++++++++++++++++");
“`
++++++++++++++++++++
str:abc
str:abc
++++++++++++++++++++
““
String 虽然是对象类型,但是其值传递结果和基本数据类型一样。
4. 例题
阅读全文
0 0
- Java参数传递,值传递
- java参数传递(值传递还是参数传递)
- java 值传递和参数传递
- Java参数传递是通过值传递
- JAVA的值传递与参数传递
- 参数传递、值传递
- JAVA中参数传递(按值传递和引用传递)
- Java中的值传递和引用传递(参数传递)
- java参数传递(值传递还是引用传递)
- Java参数传递:值传递和引用传递
- Java中参数传递是值传递,还是引用传递
- Java参数传递,传递引用,传递值浅析
- Java方法参数的传递机制,值传递?引用传递?
- Java函数传递参数:值传递还是引用传递
- java参数传递(值传递还是引用传递)
- java参数传递(值传递还是引用传递)
- java参数传递(值传递还是引用传递)
- Java的参数传递有值传递和引用传递
- jpa、mybatis事务混合测试记录
- Apache VFS
- 01C++实现单例模式
- JavaScript的函数使用
- PAT--1077. Kuchiguse
- Java参数传递,值传递
- querylist 入门query部署,获取网页的信息。
- Excel导入SQL时,如何动态获得Sheet的名字
- stm32成长记之滴答时钟
- 开始多线程
- centos 安装mysql 5.5.44
- 一起来点React Native——你必须要会点FlexBox布局
- 20170803~20170804
- 解析动态代理模式与跟自定义注解配合使用以及事务注解原理