zoukankan      html  css  js  c++  java
  • Java中参数传递的问题

     

    Java code <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

    public class Test2

    {

        public static void changeStr(String str){

            str = "welcome";

        }

        public static void main(String args[]){

            String str = "1234";

            changeStr(str);

            System.out.println(str);

        }

    }


    这段代码的输出结果是:1234.可是我不明白,为什么调用了changeStr这个方法后,没有改变?本人小菜一个,大家多看看.谢谢

    回答:

    1.跟静态没有一点关系,下面结果一样!

    public class Test2

    {

        public void changeStr(String str){

            str = "welcome";

        }

        public static void main(String args[]){

            String str = "1234";

            new Test2().changeStr(str);

            System.out.println(str);

        }

    }

    2.String的不可改变和StringBuffer也没有一点关系,下面结果还是一样!

     

    public class Test2 {

           public  void changeStr(StringBuffer str){

            str = new StringBuffer("welcome");

        }

        public static void main(String args[]){

        StringBuffer str = new StringBuffer("1234");

            new Test2().changeStr(str);

            System.out.println(str);

        }

     

    }

     

    3.只是JAVA中传参的小问题,用下面这个例子分析:

    package org.leno;

     

    public class Student {

    private String username;

     

    public Student(String username) {

           super();

           this.username = username;

    }

     

    public String getUsername() {

           return username;

    }

     

    public void setUsername(String username) {

           this.username = username;

    }

    }

     

    public class Test2 {

           public  void changeStr(Student str2){

            str2 = new Student("welcome");

        }

        public static void main(String args[]){

        Student str = new Student("1234");

            new Test2().changeStr(str);

            System.out.println(str.getUsername());

        }

    }

    虽然传参的时候strstr2指向同一个学生对象,但在方法里面我们将str2变量指向了其它对象,而这时候的str

    还是指向原来的学生对象,所以打印出来的依然是原来学生的名字。浅显点说就是和下面的情况差不多:

    Student str = new Student("1234");

    Student str2 = str;

    str2 = new Student("welcome");

    打个比方就是原本两根线都栓着同一个宠物,而后来一根线栓向另一个宠物去了,(虽然这根线很快就消失了,没有任何意义,局部变量嘛!),

    但原先的线栓的宠物是没有任何改变的!

  • 相关阅读:
    int string java 呼转
    E:Encountered a section with no Package: header, E:Problem with MergeList /var/lib/apt/lists/******
    东南大学课程表爬虫
    文件传输器
    springmvc-项目启动初始化类
    分享一段线程队列--生产者和消费者代码
    maven-assembly-plugin 插件打包一个bug手动解决方式
    dubbo Main独立运行,脱离web容器
    Logstash5.6.1-Kafka插件配置
    kafka 设置开机启动
  • 原文地址:https://www.cnblogs.com/CharmingDang/p/9663783.html
Copyright © 2011-2022 走看看