java是值传递还是引用传递
来源:互联网 发布:梦想的声音2知乎 编辑:程序博客网 时间:2024/05/17 08:18
import java.util.ArrayList;import java.util.List;/** * <p> * <code>TtT</code> * </p> * Description: * * @author Mcchu * @date 2017/12/7 15:50 */public class TtT { /** * 1. 参数传递本质就是一种 = 操作; * 2. 对于基本数据类型变量,= 操作是完整地复制了变量的值。 * 3. 非基本数据类型变量,= 操作是复制了变量的引用 * * 注意t1()方法中的参数名字不要被我写得和原来t()函数中定义的对象一致而被误导,它可以起任意名字 * * 值传递是指将该值复制一份出来使用,比如a复制一份a1出来,a1做的操作不会影响到a, * 引用传递是将该值的地址传递给方法,比如取sb1的地址值b,b指向sb1,可以通过b找到sb1并对sb1进行修改。这时候sb1的值就会改变。 */ private void t(){ Integer a = 0; //没有提供可以改变自身方法的引用类型 int b = 0; //基本类型 String str = "string"; StringBuilder sb1 = new StringBuilder("iphone"); //提供了改变自身方法的引用类型 StringBuilder sb2 = new StringBuilder("iphone"); List<String> list = new ArrayList<>(); this.t1( a, b, str, sb1, sb2, list ); System.out.println(a); //没有被改变 System.out.println(b); //没有被改变 System.out.println(str); //没有被改变 System.out.println(sb1.toString()); //改变 System.out.println(sb2.toString()); //没有被改变 System.out.println(list.size()); //改变 } private void t1( Integer a, int b, String str, StringBuilder sb1, StringBuilder sb2, List<String> list){ a = 2; //引用类型,复制引用,a放弃了原有引用 b = 3; //基本类型,复制原值,此时b已不再是当初的b了 str = "hello world"; //引用类型,复制引用,str放弃了原有引用 sb1.append("4"); //引用类型,执行了可以改变自身的方法 sb2 = new StringBuilder("4"); //引用类型,复制引用,sb2放弃了原有引用,并且指向了新的对象实例 list.add("123"); //引用类型,执行了可以改变自身的方法 } public static void main(String[] args) { TtT tt = new TtT(); tt.t(); }}
参考:知乎
阅读全文
0 0
- java是值传递,还是引用传递?
- java是值传递还是引用传递?
- java是值传递还是引用传递
- java 是值传递还是引用传递
- java是值传递还是引用传递。
- java是值传递还是引用传递
- JAVA是值传递还是引用传递
- java是值传递还是引用传递?
- Java 是值传递还是 引用传递?
- JAVA是引用传递还是值传递
- Java是值传递还是引用传递?
- java是值传递还是引用传递
- Java中参数传递是值传递,还是引用传递
- Java参数传递到底是值传递还是引用传递?
- 到底是值传递还是引用,Java
- Java中到底是值传递还是引用传递?
- java 方法中参数是值传递还是引用传递
- Java-String 到底是值传递还是引用传递
- 设置打开Android Studio启动时的欢迎界面
- C++测试题
- Python numpy函数hstack() vstack() stack() dstack() vsplit() concatenate()
- onBackPressed、onKeyDown、finish、onDestroy
- 对Java Serializable(序列化)的理解和总结
- java是值传递还是引用传递
- 单向链表每k个元素翻转一次。
- 第九周项目3--利用二叉树遍历思想解决问题
- Redis使用命令
- Maven强制下载jar
- 数据库索引解析
- C++ 11 中的右值引用
- Java多线程实现的四种方式
- android ArrayList深复制(修改复制list不影响原list)