参数传递:值传递与引用传递
1.值传递:所有基本数据类型:byte short int long float double boolean char 加上String类型
下面,定义2个方法,作用显而易见:给参数t赋值以及让参数++
public static void change(int t){
t = 1000;
}
public static int add(int t){
t++;
return t;
}
再来执行如下代码
int a=10,b=5;
//调用change方法改变a的值
change(a);
System.out.println(a);
结果a=?是1000吗?
结果如下图
原因是,所有基本数据类型的参数传递都是值传递,也就是说change方法执行的是:10=1000这行代码,这显然是无意义的,也就是说,参数t的改变并不影响a的值
再来执行下面这段代码
int a=10,b=5;
//调用change方法改变a的值
change(a);
a=b;
a=add(a);
System.out.println("a="+a+" "+"b="+b);
a和b的值有分别是多少?
结果如下
也就是说,把b的值赋给了a之后,a的值改变了,但是对b也是没有影响的
2.引用传递:所有的对象类型(类,接口,抽象类,数组)
引用传递又可以叫做地址传递。
看一下下面的代码
//创建学生对象
Student student1=new Student();
//调用方法设置名字
student1.setName("比尔盖子");
//再创建一个学生对象
Student student2=new Student();
//调用方法设置名字
student2.setName("乔布斯");
Student student3=new Student();
student3.setName("小明");
student1 = student3;
student1.setName("改变student1名字");
System.out.println("student3的名字是:"+student3.getName());
这里将student3的值赋给了student1,然后改变student1的名字,但输出的是student3的名字
结果
很显然,student3的名字也被改变了,为什么?
因为,对象类型的变量存储的是对象在内存中的首地址。当一个对象类型的变量的值改变时,意味着它能访问到的堆内存空的首地址也将改变,上示代码中,student3赋值给了student1,以为这student1也将保存student3的地址,因为他们访问的将是同一个地址,因而一个该了地址中的内容,下一个访问时也将是已经改变了的内容。这就是引用传递。
- 大小: 4.6 KB
- 大小: 5.5 KB
- 大小: 6.4 KB
分享到:
相关推荐
java的参数传递对比,体现了值传递和引用传递的区别,是我在java入门是写的学习demo
Amazon SQS Java Messaging Library包含 Java Message Service 兼容类,用于与 Amazon Simple Queue Service 进行通信。 该项目构建在适用于 Java 的 AWS 开发工具包之上,以使用 Amazon SQS 作为消息传递应用程序的...
一一击破Java入门可能会遇到的难点和疑惑 抽丝剥茧,层层推进,让知识环环相扣,降低了学习的难度 通过大量的比喻、类比、对比和图示等多种讲解方式,学习效果好 对Java语言的每个语法都提供了一个或多个例程讲解 ...
一一击破Java入门可能会遇到的难点和疑惑 抽丝剥茧,层层推进,让知识环环相扣,降低了学习的难度 通过大量的比喻、类比、对比和图示等多种讲解方式,学习效果好 对Java语言的每个语法都提供了一个或多个例程讲解 ...
12.2.1 按值传递 12.2.2 克隆对象 12.2.3 使类具有克隆能力 12.2.4 成功的克隆 12.2.5 Object.clone()的效果 12.2.6 克隆合成对象 12.2.7 用Vector进行深层复制 12.2.8 通过序列化进行深层复制 12.2.9 使克隆具有更...
JNI开发Java和C/C++互相传递List集合, 可以参考: Java从C/C++获取List集合对象:https://blog.csdn.net/niuba123456/article/details/80994166 Java传递List集合对象到C/C++ ...
学习java很好的课件,我刚学习java时基础完全空白,就是用这个入门的。
区别和掌握按值传递与按引用传递。 第4章 面向对象(封装) 4课时 理解类封装属性(数据成员)和行为(方法成员),区别类和对象。 能够定义类,创建类的对象(实例化类)和通过对象引用访问...
JNI开发Java调用C传递int、String、Array类型参数; 详情参考: int类型: (https://blog.csdn.net/niuba123456/article/details/80959892) String类型(https://blog.csdn.net/niuba123456/article/details/80977247);...
最好的最简单的Java入门教程。 目录 1 Java概述 1 1.1 Java语言概述 1 1.2 Java虚拟机以及跨平台原理 2 1.3 关于JVM的执行效率 2 1.4 客户端市场的折戟 3 1.5 Java的主要就业方向 3 1.5.1.1 Web开发 3 1.5.1.2 ...
word源码java MicroProfile 响应式消息传递规范的实现 该项目是(下一个)规范的实现 - 用于构建事件驱动的微服务和数据流应用程序的 CDI 扩展。 它为以下方面提供支持: 1.0 和更多! 它还提供了一种将流注入 CDI ...
12.2.1 按值传递 12.2.2 克隆对象 12.2.3 使类具有克隆能力 12.2.4 成功的克隆 12.2.5 Object.clone()的效果 12.2.6 克隆合成对象 12.2.7 用Vector进行深层复制 12.2.8 通过序列化进行深层复制 12.2.9 使克隆具有更...
此应用程序旨在使学习者和好奇心的人拥有一个专用且简化的入门应用程序,可以在Internet上搜索所有类型和主题的书籍。 此应用中要实现的源将是 能力: 用户将能够免费创建一个帐户,登录,选择他们想要随机填充其...
共24章,其中,第1篇为技能学习篇,主要包括Java Web开发环境、JSP语法、JSP内置对象、Java Bean技术、Servlet技术、EL与JSTL标签库、数据库应用开发、初识Struts2基础、揭密Struts2高级技术、Hib锄劬e技术入门、...
用于AWS的有效负载卸载Java公共库适用于AWS的有效负载卸载Java公共库使您可以使用Amazon S3管理有效负载。 例如,这对于存储和检索大小大于当前SQS / SNS限制256 KB(最大2 GB)的有效负载非常有用。 您可以使用此库...
Ivor Horton还著有Beginning Visual C++ 6、Beginning C Programming和Beginning Java 2等多部入门级好书。 目录 封面 -18 前言 -14 目录 -9 第1章 使用Visual C++ 2005编程 1 1.1 .NET Framework 1 1.2 CLR 2...
010403_【第4章:数组与方法】_数组的引用传递笔记.pdf 010404_【第4章:数组与方法】_Java新特性对数组的支持笔记.pdf 020501_【第5章:面向对象基础】_面向对象、类与对象的定义笔记.pdf 020502_【第5章:面向对象...
《Java基础入门及提高》,整理:yyc、spirit。PDF 格式,大小 4.8 MB,非影印版。 前言: 同人类任何语言一样,Java 为我们提供了一种表达思想的方式。如操作得当,同其他方式相比,随着问题变得愈大和愈复杂,这种...
以通过传递-javaagent:/full/path/to/newrelic.jar命令行参数在应用程序的premain启动期间加载代理。 此过程因您的环境/应用程序服务器而异。 有关完整详细信息,请参阅: 入门 有关 Java 代理支持的内容的概述,请...
try块中包含可能会产生异常的代码,当try块内的代码发生异常时,程序会立即跳转到与异常类型相匹配的catch块进行处理。 在catch块中,你可以编写适当的处理逻辑来处理特定类型的异常。每个catch块可以捕获不同类型...