java是值传递还是引用传递
2017-12-07 17:33
381 查看
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(); } }
参考:知乎
相关文章推荐
- java到底是值传递还是引用传递?
- java提高篇———值传递还是引用传递
- Java-String 到底是值传递还是引用传递
- java到底是按值传递还是按引用传递?
- Java是值传递还是引用传递?
- Java中到底是值传递还是引用传递???当然是值传递!!!!!
- java 传参方式--值传递还是引用传递
- java是按值传递还是按引用传递?
- java中的值传递还是引用传递?
- 画重点,Java方法的参数到底是值传递还是引用传递?
- Java是值传递还是引用传递
- java面试题解惑:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- java到底是值传递还是引用传递?
- Java中函数是值传递还是引用传递?
- Java中按值传递还是按引用传递详细解说
- Java究竟是通过值传递还是引用传递呢?
- java是值传递还是引用传递?
- java参数传递时到底是值传递还是引用传递
- 【Java基础】基本类型的包装类作为参数传递是值传递还是引用传递
- Java中到底是值传递还是引用传递?