在线客服
扫描二维码
下载博学谷APP扫描二维码
关注博学谷微信公众号
众所周知,Java有两种参数传递方式,即按值传递和引用传递,而String类型比较特殊,需要单独讨论。Java参数传递只有值拷贝,没有引用传递。本文将讨论基本类型、引用类型和String类型。
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参数传递的知识点。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
Java基础学习之java序列化介绍
序列化是将对象的状态信息转换为可以储存或者传输的形式的过程。因此在Java开发中,序列化是一个非常重要的环节。Java序列化可以在JVM停止运行之后能够保存(持久化)制定的对象,并在将来重新读取被保存的对象。
6666
2019-06-25 18:26:59
学习Java的苦与乐
现在学习Java的人是越来越多了,在很多人眼中Java程序员是一群神秘的生物。既然要学习Java,我们就不得不走进程序员的世界,聊一聊学习Java的苦与乐。
7054
2019-07-04 17:34:12
Git是什么?新手小白入门教程
本文是专门针对新手小白的入门教程,将用通俗易懂的方式讲解“Git是什么”,主要从版本控制、版本控制系统和仓库几方面来具体阐述。
7081
2019-08-09 15:24:33
Java运行机制是什么?
不管是学习Java还是其他什么变成语言,我们不仅要了解它的特性,充分的使用Java语言完成各种程序开发工作,还要了解Java的运行机制。只有了解其底层的运行机制,才能更好的利用Java完成各项工作。Java运行机制是什么?
6559
2019-11-05 18:28:09
Java学习需要什么软件?Java开发工具介绍
Java学习需要什么软件?学习过程中会用到很多Java软件,比如:Eclipse、IDEA、Git、FindBugs、Jcreator等。初学者最好将Java入门基础知识贯穿在一个实例中,逐步深入,可以帮助你快速进入Java编程的世界。
5043
2020-07-14 16:12:03