在线客服
扫描二维码
下载博学谷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就业班的试学视频一起学习,相信知识点的思路会更加清晰。
5704
2019-12-05 14:58:40
想要参加IT培训学Java好不好?
想要参加IT培训,学java好不好?现如今可以说Java在所有编程语言里现阶段里前景是最好的应用也是非常广泛的Java应用广泛的很多,在金融,银行,PC,移动设备,就连传统企业也有在应用Java方面的人才,并且薪资也是非常高的,只要你学会了就不要发愁工作的问题。
4146
2020-04-01 17:46:08
线程多有什么好处?使用多线程的优势
多线程的好处:提高CPU的利用率,更好地利用系统资源,使用Monitor类可以同步静态/实例化的方法的全部代码或者部分代码段,使用不同的同步类创建自己的同步机制。
10193
2020-04-10 15:28:38
Java Web之Filter学习笔记
今天要学习的是关于Filter的内容,主要包括Filter的概念、快速入门、代码演示、过滤器细节,对Filter有学习需要的小伙伴可以在看完本文后,再把文章收藏起来以便于以后的复习,现在一起来看看Java Web之Filter的学习笔记吧~
4767
2020-05-07 11:07:11
Java学习如何提升学习效率?
Java学习如何提升学习效率?刚刚接触Java的同学估计有满脑子的困惑,Java的体系结构异常庞大,很多刚接触的朋友学着学着就不知道自己的路线是什么,不知道如何进行学习路线规划,也不知道学习什么内容可以找到相关的工作等。
4830
2020-06-17 14:58:23