Java中的参数传递 --Java
1、基本类型传值,对象类型传地址
按值传递:当将一个参数传递给一个方法时,方法接收的是原始值的一个副本。因此,如果方法修改了该参数,仅改变副本,而原始值保持不变。
按引用传递:当将一个参数传递给一个方法时,方法接收的是原始值的内存地址,而不是值的副本。因此,如果方法修改了该参数,调用代码中的原始值也随之改变。
“在Java里面参数传递都是按值传递”这句话的意思是:按值传递是传递的值的拷贝,按引用传递其实传递的是引用的地址值,所以统称按值传递。
2、验证基本类型传值
/**
* 基本类型传值
* @author Thanlon
*/
public class PassValAndAddr {
public void testMethod(int a) {
a = 5;//对传过来的a赋予新值
System.out.println("testMethod方法中:a=" + a);
}
public static void main(String[] args) {
PassValAndAddr passValAndAddr = new PassValAndAddr();
int a = 3;
passValAndAddr.testMethod(a);
System.out.println("main方法中:a=" + a);
}
}
控制台打印:
testMethod方法中:a=5
main方法中:a=3
在接收参数的方法中修改了传递过来的值,但这个值只是原始值的副本,原始值不会发生改变。
3、验证对象类型传地址
PassValAndAddr2 .java:
/**
* 对象类型传递地址
* @author Thanlon
*/
public class PassValAndAddr2 {
public void passAddr(ObjectA a) {
a.age = 22;
System.out.println("传递对象给passAddr方法,对象的age属性值为:" + a.age);
}
public static void main(String[] args) {
PassValAndAddr2 passValAndAddr = new PassValAndAddr2();
ObjectA objectA = new ObjectA();
passValAndAddr.passAddr(objectA);
System.out.println("objectA原始的age值为:" + objectA.age);
}
}
PassValAndAddr2 .java:
public class ObjectA {
public int age = 0;
}
控制台打印:
传递对象给passAddr方法,对象的age属性值为:22
objectA原始的age值为:22
在接收参数的方法中修改了传过来的对象的age属性,原来对象的age属性值发生了改变,说明方法接收的是原始值的内存地址,而不是值的副本。
注意:在Java中只有基本类型和按照下面这种定义方式的String类型数据是按值传递,其它的都是按引用传递。
直接使用双引号定义字符串方式:String str = "Java"
转载于:https://www.cnblogs.com/qikeyishu/p/10265490.html
Java中的参数传递 --Java相关推荐
- Java 中的参数传递和引用类型
本文主要分三部分介绍 Java 中的值.指针与引用的概念. 第一部分从编程语言的三种参数传递方式入手,阐释"为什么 Java 中只有值传递". 第二部分排除自动装箱和自动拆箱的干扰 ...
- Java中的参数传递,到底是值传递还是引用传递?
文章内容为转载,转载自公众号Hollis关于我要彻底给你讲清楚,Java就是值传递,不接受争辩的那种! 原文链接:我要彻底给你讲清楚,Java就是值传递,不接受争辩的那种! 知乎回答链接:Java 到 ...
- Java中的参数传递
Java中的参数传递:分为值传递和引用传递 但本质上,Java中只有值传递.引用传递,其实可以理解为传的是类似指针的东西. 值传递就是把基本变量的值拷贝一份,传递这个拷贝.引用传递则是传递的引用的地址 ...
- java中的参数传递(只有值传递没有引用传递)
Java中只有传值调用(值传递),没有传址调用(址传递或者引用传递).所以在java方法中改变参数的值是不会改变原变量的值的,但为什么改变引用变量的属性值却可以呢?请看下面的解答. java中的数据类 ...
- Java中的记录器 - Java日志示例
Java中的记录器 - Java日志示例 今天我们将研究Java中的Logger.Java Logger提供了java编程的日志记录. 目录[ 隐藏 ] 1 Java中的记录器 1.1 Java Lo ...
- Java中的正则表达式 - Java Regex示例
Java中的正则表达式 - Java Regex示例 欢迎使用Java中的正则表达式.它在Java中也称为Regex.当我开始编程时,java正则表达式对我来说是一场噩梦.本教程旨在帮助您掌握Java ...
- java中 数组声明,java数组声明格式
java 声明动态数组,java对象数组详解,java中声明数组,java数组声明格式 Java 中数组的声明一维数组的声明: 在 Java 中,数组是独立的对象,有自身的方法,不是变量的集合. 数组 ...
- Java中apple导入那个包_在Java中,由Java编泽器自动导入而无需在程序中用import导入的包是()。A.java.appletB.java.awtC.j...
在Java中,由Java编泽器自动导入而无需在程序中用import导入的包是().A.java.appletB.java.awtC.j 更多相关问题 问卷星是一个专业.无限制的免费在线问卷调查.测评. ...
- java中properties作用,java中Properties类的使用
java中Properties类的使用 在java.util 包下面有一个类 Properties,该类主要用于读取以项目的配置文件(以.properties结尾的文件和xml文件). Propert ...
最新文章
- 在malloc函数中为什么常用sizeof来设定内存分配的大小?
- WPF 3D中多个模型如何设置某一个在最前?
- “http://127.0.0.1:8888' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header”
- loadrunner脚本练习
- 07.德国博士练习_09_agg_query
- java获取返回xml节点里的值,关于用java读取xml中节点的值解决方案
- WCF读取配置动态生成客户端对象
- Spring异常重试机制 - Spring Retry
- 如何解决Django与Vue语法的冲突
- 第二章 python自定义函数与类(一)
- 脑机接口五大应用场景
- 世界第4疯狂的科学家,在103岁生日那天去世了
- 小白重装系统步骤总结
- 用户名修改后进入不了计算机,更改计算机用户名后不能登录到桌面怎么办?
- Wed Aug 03 19:48:03 +0800 2022这种字符串,怎么转成时间格式年月日
- ubuntu搭建php运行环境
- 软件配置---重装系统---品牌电脑重启快捷键表
- weui popup的使用
- 企业数字化转型--银行数字化转型的战略设计与技术管理
- Item 2: Understand auto type deduction.
热门文章
- idea GsonFormat插件使用报错 StringIndexOutOfBoundsException: begin 0, end -1, length 9
- k8s secret使用方式:pod通过变量和volume方式使用secret
- 阿里巴巴Java开发规约插件p3c
- Python3序列解包
- Hystrix熔断器功能测试示例数据
- python 异常函数调用栈_Python捕获异常堆栈信息的几种方法
- vb中mschart利用数组作图_选考VB算法解析之2019年4月高考真题卷第17题
- 华硕路由 ac ax_WiFi 6 路由好在哪里,看看华硕AX路由推荐清单吧
- 电脑硬件检测_好用的电脑硬件型号有哪些_江西南昌顺同谦科技|电脑||笔记本|...
- mysql 上级组织参数值_MySQL参数group_replication_consistency说明