前言

一年一度的520又来了,有女朋友的程序员又来杀狗了。但是不要怕,这几天我每天来给你们new几个女朋友

正文

但是,女盆友也不是白给的,需要你自己答出来哦。

     girlFriend girlFriend1=new girlFriend();String girl1="迪丽热巴";girlFriend1.setName(girl1);System.out.println("第一天我的女朋友是:"+girlFriend1.getName());

没错控制台输出:第一天我的女朋友是:迪丽热巴

第二天到了,咱们今天玩刺激一点的,new一个多人运动出来

     girlFriend girlFriends=new girlFriend();String[] girls=new String[]{"赵丽颖","Angelababy"};girlFriends.setGirlsName(girls);System.out.println("第二天我的女朋友们分别是:"+girlFriends.getGirlsName());

没错控制台输出:第二天我的女朋友们分别是:赵丽颖 Angelababy

第三天到了,咱不如把赵丽颖换成郑爽?说来就来

         girls[0]="郑爽";System.out.println("第三天我的女朋友们分别是:"+girlFriends.getGirlsName());

给个小提醒,我这里并没有写girlFriends.setGirlsName(girls);哦。
所以问题就来了,你这时候的女朋友们是赵丽颖 Angelababy还是郑爽 Angelababy呢?

如果有疑惑,我们看控制台输出:第三天我的女朋友们分别是:郑爽 Angelababy

这里开始答错的统统去再看一遍java核心技术第一版再看一遍方法,居然自己的女朋友名字都叫错了,您配吗?

不要有疑惑,我直接说结论:

基本类型参数的传递,是调用方值的复制。双方各自的后续修改,互不影响。

引用类型参数的传递,调用方的变量,和接收方的参数变量,指向的是同一个对象(同一块地址)。双方任意一方对这个对象的修改,都会影响对方(因为指向同一个对象嘛)。

String在MSDN里面也算引用类型,但是!!!编译器做出了处理,无法表现出引用类型的特性

这里我引用大佬的文章,分别解释了基本数据类型和引用类型有哪一些:
https://www.cnblogs.com/maskwolf/p/9972982.html

我们看下面代码很容易了解到:引用类型参数的特性

        String[] girls=new String[]{"赵丽颖","Angelababy"};//我们把girls copy过来,其实这里girlsCopy并没有开辟新的内存,还是指向girls的String[] girlsCopy=girls;//所以在这里输出地址值的时候,两者相等System.out.println(girls);System.out.println(girlsCopy);//当我们更改girls[0]的值的时候,其实因为girlsCopy指向girls,所以girlsCopy的值也改变了,但是地址值永远不会改变girls[0]="郑爽";if(girls==girlsCopy){System.out.println("girls=girlsCopy");for (int i = 0; i < 2; i++) {System.out.println("girls["+i+"]="+girls[i]+"   girlsCopy["+i+"]="+girlsCopy[i]);}}else {System.out.println("girls!=girlsCopy");}

控制台:

[Ljava.lang.String;@10f87f48
[Ljava.lang.String;@10f87f48
girls=girlsCopy
girls[0]=郑爽   girlsCopy[0]=郑爽
girls[1]=Angelababy   girlsCopy[1]=Angelababy

我相信看到这里,你就很容易想明白其中的套路

结尾

520这一天看到朋友圈的其他程序员都在秀自己的女朋友,而我只能在这里new对象,眼泪又不争气的从眼角流了下来。

520这一天给你new一个迪丽热巴,可是输出凤姐。你真的分的清new的对象是谁吗?相关推荐

  1. ACMNO.25 C语言-间隔输出 写一函数,输入一个四位数字,要求输出这四个数字字符,但每两个数字间空格。如输入1990,应输出1 9 9 0。 输入 一个四位数 输出 增加空格输出

    题目描述 写一函数,输入一个四位数字,要求输出这四个数字字符,但每两个数字间空格.如输入1990,应输出"1 9 9 0". 输入 一个四位数 输出 增加空格输出 样例输入 199 ...

  2. ACMNO.23 C语言-素数判定 写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息。 输入 一个数 输出 如果是素数输出prime 如果不是输出not prime

    题目描述 写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息. 输入 一个数 输出 如果是素数输出prime 如果不是输出not prime 样例输入 97 样例输出 prime 来源/ ...

  3. 给定一个字符串,输出第一次出现k次的字母java,c++实现

    题目: 给定一个字符串,输出第一次出现k次的字母. 示例:    输入:abbcdaabgb               3    输出:a 输入:aaabbb               3     ...

  4. keras技巧——如何获取某一个网络层的输出

    keras技巧--如何获取某一个网络层的输出_MIss-Y的博客-CSDN博客_keras获取模型某一层的输出

  5. JAVA实现输入一个整数,输出该数二进制表示中1的个数(《剑指offer》)

    题目: 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 这个题目有个比较有意思并且被公认的解法,我就先贴答案吧: public class Solution {public int ...

  6. java switch语句练习 从键盘输入2个数和一个运算符(+,-,*,/),输出运算结果

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...

  7. 任意输入一个整数反转输出

    任意输入一个整数反转输出 任意输入一个整数反转输出#include<stdio.h> #include<string.h> #include <math.h> #i ...

  8. 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示

    转自http://my.oschina.net/ithaibo/blog/142655 题目: 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 题目引自http://ac.jobdu ...

  9. Python 面试题:输入一个数组,输出该数组的第二大的数字

    问题: 输入一个数组,输出该数组的第二大的数字,并且编写相关的测试用例 注意: 1.如果list含有非int, float元素需要remove 2.如果list有重复的最大元素,需要自己处理,内置的l ...

最新文章

  1. 不管服不服 Windows仍是全球第一大桌面系统
  2. Ubuntu下firefox启动问题
  3. java中对于异常的处理,代码简单描述
  4. python两两组合求和_LeetCode-python 40.组合总和 II
  5. 微信公众平台开发(31)微信第三方登录接口
  6. html中hr的各种样式使用
  7. 【长文】在《 Ray Tracing from the Ground Up》的基础上实现BART的动画
  8. 数字信号处理实验三用fft对信号作频谱分析_矢量信号分析
  9. 基于matlab直方图均衡,matlab 直方图均衡实验报告.pdf
  10. Java中的private关键字
  11. 怎么判断私网地址_判断本机IP地址是公网地址还是私网地址
  12. 齐全的Latex表格样式(有斜杠)
  13. SD卡寄存器及对应的CMD命令描述
  14. 用户模块跳转、sso单点登录、跨域访问
  15. 举个栗子!Tableau 技巧(139):突出显示文本表的行或列
  16. 【学习笔记】噬菌体的应用与展望
  17. ESP8266-AP模式作服务器
  18. 手把手教你利用 python 爬虫分析基金、股票
  19. Echars中国城市地图-解决图层分离问题
  20. 家里的电脑如何搭建网站【电信宽带】

热门文章

  1. js自定义双击事件(可更改双击触发间隔,解决单击双击事件冲突)
  2. 学习笔记:百度和360关键字提交
  3. (二)springboot整合之knife4j(详细)
  4. Spark:Caused by: java.lang.ClassNotFoundException: scala.Product$class解决
  5. 服务器被勒索病毒攻击怎么办,如何进行勒索病毒解密与预防工作?
  6. [附源码]JAVA毕业设计医院临床管理系统录屏(系统+LW)
  7. java原生开发是什么意思_什么是ABA问题?java里面的原生解决方案是什么?原理是什么?...
  8. Tableau图表 • 桑基图
  9. 【产品设计】Android 和 IOS 的交互设计对垒
  10. MapReduce算法(计算出10月1日这天载客次数超过10次的车辆,载客总次数,载客详细时间。)