java传递引用参数
文章目录
- 基本类型参数的传递,是值的复制
- 数组类型参数的传递,是引用的复制
基本类型参数的传递,是值的复制
基本类型参数的传递,是值的复制。双方各在内存中保存一份,各自的后续修改,互不影响。
例如:
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传递引用参数相关推荐
- JAVA传递子类参数,在Java中,是否可以通过传递超类方法中使用的参数的子类来覆盖方法?...
As per the rule, while overriding a method in subclass, parameters cannot be changed and have to be ...
- Java中传参数--值传递和引用传递
** Java中传参数–值传递和引用传递 ** 在Java中,传参数分为值传递和引用传递. 在Java中的数据类型分为两大类:一类是引用类型,也叫类类型(除了String以外的所有复合数据类型,包括数 ...
- java的引用传递_Java的值传递和引用传递
首先来看一段代码: User类: 1 public classUser {2 privateString name;3 4 publicString getName() {5 returnname;6 ...
- Java中方法参数的传递
Java中方法参数的传递: 众所周知,Java语言中只有值传递,看起来很好理解的一句话,那么来看一个例子: 输出结果: 这是一个经典问题,我想说说自己的理解: 首先,变量sa和sb分别包含一个字符串对 ...
- java中是值传递引用传递_Java是按值传递而不是按引用传递
java中是值传递引用传递 One of the biggest confusion in Java programming language is whether java is Pass by V ...
- java中 引用传递_Java中的引用传递
我觉得引用传递 真的很好理解,不知道为什么大家觉得这么难,你只要掌握这几点就可以了 在Java机制中他自己提供的那些数据类型(String ,Object等)要这样理解: 1)在Java中 引用 ...
- java是引用传递还是值传递_流言终结者:Java是引用传递还是值传递?
前言 今天聊一个很小的话题,引用传递和值传递.为什么拉出这个话题呢?因为自己太菜吧-在这上边栽了跟头.所以今天就聊一聊Java中是引用传递还是值传递. 正文 小A:MDove,我有一个疑问:Java的 ...
- java main 参数传递参数_Java千问:Java语言如何给main方法传递参数?
大家都知道,Java语言运行程序的入口方法叫做main,这个方法有一个参数,这就表示说,我们要运行主方法,就必须给main方法传递一个参数.但是,大家似乎对这个参数向来都是视而不见,从来都没给主方法传 ...
- vscode给java项目传递args[]参数
文章目录 问题概览 改进办法 问题概览 笔者在学习设计模式的Java实现时,使用vscode工具. 最近遇到一个问题: 如何给Java的main方法传递args[]参数? 源代码: public cl ...
最新文章
- JavaScript中变量的相互引用
- java 枚举常量_java中的枚举类和常量类区别在哪儿?
- 百度贴吧个人主页_百度手机App商店社交应用排行榜,微信连续三个月霸占榜首...
- Netty学习四:Channel
- Python程序可打印今天的年,月和日
- java kafka 分区_Java kafka如何实现自定义分区类和拦截器
- android中json解析及使用 (下)
- WPF中如何在文本外面加虚线外框
- 打造自己的域名转向
- 大数据技术基础与应用
- 完全不懂SEO怎样入手做网站优化
- 在计算机领域做研究的一些想法(转)
- C语言100题练习计划 31——计算两数的和与差(函数实现)
- 支付宝小程序与生活号可互相关联啦!
- 《大话数据结构》看书笔记--算法
- LINUX修改、增加IP的方法 ifconfig 两个ip地址 配置文件
- 系统的学习linux
- C语言函数大全-- r 开头的函数
- 微信公众号 授权死循环 问题解决
- 华为9306 snmp OID
热门文章
- windows编程 使用C++实现多线程类
- std::lexicographical_compare
- python编程(最简单的rpc代码)
- 东南大学的计算机类和电子信息哪个专业好,东南大学王牌专业有哪些及专业排名...
- 倒序排序_排序不等式,切比雪夫不等式及伯努利不等式
- linux开机自动联网设置
- json 取值判断_对应后台传json ajax 获取值判断
- python post 请求登录后的页面_python - 学习模拟登录,卡在发送POST请求之后?
- oracle代码连接,Oracle连接核心知识点
- 合肥工业大学网络程序设计实验报告_杭州电子科技大学网络空间安全学院2020考研数据速览,专硕竟然有缺额!!!...