美文网首页橙小张的Java后端学习之路
Java传值还是传引用的思考

Java传值还是传引用的思考

作者: 橙小张 | 来源:发表于2017-09-16 14:22 被阅读22次
  • 占坑
public class ReferenceTest {

    @Test
    public void test1(){
        boolean flag = false;
        changeBoolean(flag);
        System.out.println(flag);   //false
    }

    private void changeBoolean(boolean flag){
        flag = !flag;
    }


    @Test
    public void test2(){
        StringBuffer sb = new StringBuffer("Hello");
        changeStringBuffer(sb);
        System.out.println(sb.toString());  //Hello world
    }

    private void changeStringBuffer(StringBuffer stringBuffer) {
        stringBuffer.append(" world");
    }


    @Test
    public void test3(){
        String s = "Hello";
        changeString(s);
        System.out.println(s);  //Hello
    }

    private void changeString(String string) {
        System.out.println(string);
        string = "world";
        System.out.println(string);
    }

    @Test
    public void test4(){
        int a = 1;
        int[] data = new int[1];
        changeInt(data, a);
        System.out.println(a);  //1
        System.out.println(data[0]); //2
    }

    private void changeInt(int[] data, int a){
        a = 2;
        data[0] = a;
    }

    @Test
    public void test5(){
        int a = 1;
        int b = a;
        a = 2;
        System.out.println(b);  //1
    }


    /*
    // access flags 0x1
      public test6()V
      @Lorg/junit/Test;()
       L0
        LINENUMBER 72 L0
        ICONST_1
        ISTORE 1
       L1
        LINENUMBER 73 L1
        ILOAD 1
        ISTORE 2
       L2
        LINENUMBER 74 L2
        ICONST_2
        ISTORE 1
       L3
        LINENUMBER 75 L3
        GETSTATIC java/lang/System.out : Ljava/io/PrintStream;
        ILOAD 2
        INVOKEVIRTUAL java/io/PrintStream.println (I)V
       L4
        LINENUMBER 76 L4
        RETURN
       L5
        LOCALVARIABLE this Lcom/sailfish/learnjava/base/ReferenceTest; L0 L5 0
        LOCALVARIABLE a I L1 L5 1
        LOCALVARIABLE b I L2 L5 2
        MAXSTACK = 2
        MAXLOCALS = 3
    }
     */
    @Test
    public void test6(){
        int a = 1;
        int b = a;
        a = 2;
//        System.out.println(b);
    }


}
/*
test6
L0
    LINENUMBER 105 L0
    ICONST_1
    ISTORE 1
   L1
    LINENUMBER 106 L1
    ILOAD 1
    ISTORE 2
   L2
    LINENUMBER 107 L2
    ICONST_2
    ISTORE 1
 */

相关文章

  • Java传值还是传引用的思考

    占坑

  • java传引用还是传值

    很长一段时间里,我也没有弄清楚到底是传值还是传引用的,而且网上很多博客的说法不一样,还有很多都是错误的,误导人的。...

  • java调用方法传递机制

    java是传值,不是传引用,有人说有的人说:基础类型传值,对象类型传引用。其实对象类也是传值,只不过对象的值恰好是...

  • 一张图解决java传值传引用问题

    分析此类问题只需要知道两点:java有两种传参方式,基本类型用传值,包装类型用传引用无论是传值还是传引用,形参都是...

  • 一张图解决java传值传引用问题

    分析此类问题只需要知道两点:java有两种传参方式,基本类型用传值,包装类型用传引用无论是传值还是传引用,形参都是...

  • 第二部分:java类与对象

    关于Java对象作为参数传递是传值还是传引用的问题 Java中@Override的作用 Java 访问权限修饰符p...

  • JavaSE基础面试题

    1、Java里的传引用和传值的区别是什么? 答案:传引用是指传递的是地址而不是值本身,传值则是传递值的一份拷贝。 ...

  • Java 基础技术

    Java 函数调用是传值还是传引用?从字节码角度来看看 ! 为 Java 程序员而生的 10 + 最佳库 Redd...

  • 基于堆栈内存详析 Java函数形参是传值还是引用? | C++指

    Java的引用 及 Java函数形参是传值还是引用 Java中没有指针的说法,Java中的引用就类似于C++的指针...

  • 形参与实参的区别

    形参与实参详解 总结:    1.java的基本数据类型是传值调用,对象引用类型是传引用。    2.当传值调用时...

网友评论

    本文标题:Java传值还是传引用的思考

    本文链接:https://www.haomeiwen.com/subject/ffnysxtx.html