• 在线客服

  • 扫描二维码
    下载博学谷APP

  • 扫描二维码
    关注博学谷微信公众号

  • 意见反馈

原创 Java学习重点Java参数传递

发布时间:2019-08-02 18:56:51 浏览 5521 来源:博学谷资讯 作者:照照

    众所周知,Java有两种参数传递方式,即按值传递和引用传递,而String类型比较特殊,需要单独讨论。Java参数传递只有值拷贝,没有引用传递。本文将讨论基本类型、引用类型和String类型。

     

    Java参数传递

     

    1.基本类型

     

    基本类型作为实参时,该值会拷贝一份在方法中使用,方法中对参数的改变不会影响原来的值;

     

    public class TestString {

     

    public static void main(String[] args) {

     

    // TODO Auto-generated method stub

     

    int i=5;

     

    change(i);

     

    System.out.println(i);

     

    }

     

    private static void change(int i){

     

    i=10;

     

    }

     

    }

     

    输出:5

     

    2.引用类型

     

    引用类型的值是堆中数据所占内存的首地址,当引用类型作为方法实参时,编译器会在复制一份该地址在方法中使用,此时有两种情况:

     

    1)如果方法改变了引用指向的数据的内容,则方法外的引用指向的内容也会改变;

     

    2)如果方法将此引用指向了其他的内存地址,则方法外该引用执行的内容不变;

     

    第一种情况:

     

    public class TestString {

     

    public static void main(String[] args) {

     

    // TODO Auto-generated method stub

     

    Test t1=new Test();

     

    changeContent(t1);

     

    System.out.println(t1.s);

     

    }

     

    private static void changeContent(Test t){

     

    t.s="change content";

     

    }

     

    }

     

    class Test{

     

    String s="empty";

     

    }

     

    output:

     

    change content

     

    第二种情况:

     

    public class TestString {

     

    public static void main(String[] args) {

     

    // TODO Auto-generated method stub

     

    Test t1=new Test();

     

    changeReference(t1);

     

    System.out.println(t1.s);

     

    }

     

    private static void changeReference(Test t){

     

    t=new Test();

     

    t.s="changeRefence";

     

    }

     

    }

     

    class Test{

     

    String s="empty";

     

    }

     

    output:

     

    empty

     

    3.当string类型作为参数时,由于string的不可变的性质,因此当方法中改变了string的内容时,方法外参数指向的内容仍然不变

     

    public class TestString {

     

    public static void main(String[] args) {

     

    // TODO Auto-generated method stub

     

    String s="old";

     

    change(s);System.out.println(s);

     

    }

     

    private static void change(String s){

     

    s="change string";

     

    }

     

    }

     

    output:

     

    old

     

    学习Java的同学都掌握了Java参数传递的知识点了吗?如果还没有可以上博学谷官网在线学习有关Java参数传递的知识点。

    申请免费试学名额    

在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!

上一篇: 参加JavaEE培训能找到工作吗?能找什么样的工作? 下一篇: 2019学Java的都是傻子吗?学Java需要哪些能力?

相关推荐 更多

热门文章

  • 前端是什么
  • 前端开发的工作职责
  • 前端开发需要会什么?先掌握这三大核心关键技术
  • 前端开发的工作方向有哪些?
  • 简历加分-4步写出HR想要的简历
  • 程序员如何突击面试?两大招带你拿下面试官
  • 程序员面试技巧
  • 架构师的厉害之处竟然是这……
  • 架构师书籍推荐
  • 懂了这些,才能成为架构师
  • 查看更多

扫描二维码,了解更多信息

博学谷二维码