文章目录

  • 基本类型参数的传递,是值的复制
  • 数组类型参数的传递,是引用的复制

基本类型参数的传递,是值的复制

基本类型参数的传递,是值的复制。双方各在内存中保存一份,各自的后续修改,互不影响。

例如:

public class Main {public static void main(String[] args) {Person p = new Person();int n = 15; // n的值为15p.setAge(n); // 传入n的值System.out.println(p.getAge()); // 15n = 20; // n的值改为20System.out.println(p.getAge()); // 15还是20?}
}class Person {private int age;public int getAge() {return this.age;}public void setAge(int age) {this.age = age;}
}

输出值是

15
15

所以外面的n从15变到了20,但是Person里面的age并没有改变。

数组类型参数的传递,是引用的复制

字符串数组在参数传递时,考虑到字符串数组占用内存空间非常大,所以传递的是一个引用,此时调用函数的变量,被调函数的变量,和被调函数内部的变量,都是指向内存中的同一个位置的。

任意一方的修改,都会指向这个引用区域的修改。

举例说明:

//注意这里的Main是基本类型,后面是不可以写括号的
public class Main{public static void main(String[] args){//新建一个类Person p = new Person();//初始化为字符串数组,需要使用new String[] {}来初始化String[] fullname = new String[] {"liu","kai"};//因为传入的是字符串数组,所以退化为引用,实际传入了引用p.setName(fullname);System.out.println(p.getName());//修改了字符串数组里面的内容fullname[0] = "chen";//输出值指向被改变的引用,输出也是引用,System.out.println(p.getName());//再看一个例子PPerson pp = new PPerson();//初始化为一个基本的字符串类型String shortname = "liukai";//传入的基本值pp.setName(shortname);System.out.println(pp.getName());shortname = "chenkai";//输出的也是基本值System.out.println(pp.getName());   //输出liukaiSystem.out.println(shortname);      //输出chenkai}
}class Person{//新建了一个字符串数组,特别注意引用private String[] name;public String getName(){return this.name[0] + " " + this.name[1];}//注意这里返回类型不是String,必须写成void,否则会报错public void setName(String[] name){this.name = name;}
}class PPerson{//新建了一个字符串基本类型private String name;public String getName(){return this.name;}public void setName(String name){this.name  = name;}
}

输出的结果为

liu kai
chen kai
liukai
liukai
chenkai

java传递引用参数相关推荐

  1. JAVA传递子类参数,在Java中,是否可以通过传递超类方法中使用的参数的子类来覆盖方法?...

    As per the rule, while overriding a method in subclass, parameters cannot be changed and have to be ...

  2. Java中传参数--值传递和引用传递

    ** Java中传参数–值传递和引用传递 ** 在Java中,传参数分为值传递和引用传递. 在Java中的数据类型分为两大类:一类是引用类型,也叫类类型(除了String以外的所有复合数据类型,包括数 ...

  3. java的引用传递_Java的值传递和引用传递

    首先来看一段代码: User类: 1 public classUser {2 privateString name;3 4 publicString getName() {5 returnname;6 ...

  4. Java中方法参数的传递

    Java中方法参数的传递: 众所周知,Java语言中只有值传递,看起来很好理解的一句话,那么来看一个例子: 输出结果: 这是一个经典问题,我想说说自己的理解: 首先,变量sa和sb分别包含一个字符串对 ...

  5. java中是值传递引用传递_Java是按值传递而不是按引用传递

    java中是值传递引用传递 One of the biggest confusion in Java programming language is whether java is Pass by V ...

  6. java中 引用传递_Java中的引用传递

    我觉得引用传递  真的很好理解,不知道为什么大家觉得这么难,你只要掌握这几点就可以了 在Java机制中他自己提供的那些数据类型(String ,Object等)要这样理解: 1)在Java中  引用 ...

  7. java是引用传递还是值传递_流言终结者:Java是引用传递还是值传递?

    前言 今天聊一个很小的话题,引用传递和值传递.为什么拉出这个话题呢?因为自己太菜吧-在这上边栽了跟头.所以今天就聊一聊Java中是引用传递还是值传递. 正文 小A:MDove,我有一个疑问:Java的 ...

  8. java main 参数传递参数_Java千问:Java语言如何给main方法传递参数?

    大家都知道,Java语言运行程序的入口方法叫做main,这个方法有一个参数,这就表示说,我们要运行主方法,就必须给main方法传递一个参数.但是,大家似乎对这个参数向来都是视而不见,从来都没给主方法传 ...

  9. vscode给java项目传递args[]参数

    文章目录 问题概览 改进办法 问题概览 笔者在学习设计模式的Java实现时,使用vscode工具. 最近遇到一个问题: 如何给Java的main方法传递args[]参数? 源代码: public cl ...

最新文章

  1. JavaScript中变量的相互引用
  2. java 枚举常量_java中的枚举类和常量类区别在哪儿?
  3. 百度贴吧个人主页_百度手机App商店社交应用排行榜,微信连续三个月霸占榜首...
  4. Netty学习四:Channel
  5. Python程序可打印今天的年,月和日
  6. java kafka 分区_Java kafka如何实现自定义分区类和拦截器
  7. android中json解析及使用 (下)
  8. WPF中如何在文本外面加虚线外框
  9. 打造自己的域名转向
  10. 大数据技术基础与应用
  11. 完全不懂SEO怎样入手做网站优化
  12. 在计算机领域做研究的一些想法(转)
  13. C语言100题练习计划 31——计算两数的和与差(函数实现)
  14. 支付宝小程序与生活号可互相关联啦!
  15. 《大话数据结构》看书笔记--算法
  16. LINUX修改、增加IP的方法 ifconfig 两个ip地址 配置文件
  17. 系统的学习linux
  18. C语言函数大全-- r 开头的函数
  19. 微信公众号 授权死循环 问题解决
  20. 华为9306 snmp OID

热门文章

  1. windows编程 使用C++实现多线程类
  2. std::lexicographical_compare
  3. python编程(最简单的rpc代码)
  4. 东南大学的计算机类和电子信息哪个专业好,东南大学王牌专业有哪些及专业排名...
  5. 倒序排序_排序不等式,切比雪夫不等式及伯努利不等式
  6. linux开机自动联网设置
  7. json 取值判断_对应后台传json ajax 获取值判断
  8. python post 请求登录后的页面_python - 学习模拟登录,卡在发送POST请求之后?
  9. oracle代码连接,Oracle连接核心知识点
  10. 合肥工业大学网络程序设计实验报告_杭州电子科技大学网络空间安全学院2020考研数据速览,专硕竟然有缺额!!!...