java传参【转】

参数传递

java包括两个数据类型

  • 内置数据类型
  • 引用数据类型

一:搞清楚基本类型和引用类型的不同之处

int num = 10;
String str = "hello";

基本数据类型的变量num直接保存值,引用类型str保存的只是实际对象的地址。
二:搞清楚赋值运算符(=)的作用

num = 20;
str = "java";

对于基本类型 num ,赋值运算符会直接改变变量的值,原来的值被覆盖掉。
对于引用类型 str,赋值运算符会改变引用中所保存的地址,原来的地址被覆盖掉。但是原来的对象不会被改变(重要)。
三:调用方法时发生了什么?参数传递基本上就是赋值操作。

作者:Intopass
链接:https://www.zhihu.com/question/31203609/answer/50992895
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

第一个例子:基本类型
void foo(int value) {
    value = 100;
}
foo(num); // num 没有被改变

第二个例子:没有提供改变自身方法的引用类型
void foo(String text) {
    text = "windows";
}
foo(str); // str 也没有被改变

第三个例子:提供了改变自身方法的引用类型
StringBuilder sb = new StringBuilder("iphone");
void foo(StringBuilder builder) {
    builder.append("4");
}
foo(sb); // sb 被改变了,变成了"iphone4"。

第四个例子:提供了改变自身方法的引用类型,但是不使用,而是使用赋值运算符。
StringBuilder sb = new StringBuilder("iphone");
void foo(StringBuilder builder) {
    builder = new StringBuilder("ipad");
}
foo(sb); // sb 没有被改变,还是 "iphone"。

参考

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,958评论 18 399
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 13,149评论 1 51
  • 现在到了一年当中天气最炎热的时节,酷暑之下,阳光暴晒,导致人困车乏,难免会出现情绪急躁,容易发怒生气,开快车、斗气...
    小停观察阅读 3,321评论 0 0
  • 晚上睡的晚于12点,第二天的工作学习效率会大大降低 以后睡觉在12点之前,为了自己,也为了孩子
    查苏的吉古勒阅读 780评论 0 0
  • 今天又看非你莫属了,一位做主播的美女应聘活动主持岗位。 通过几分钟的交流后,她表现的特别情绪化,可能和做主播有关系...
    苏步哲阅读 1,534评论 0 0