为什么 数组和String 同为引用数据类型,String的地址传递不会改变原本的值?

查看API文档可知String类型的构造器有一个final修饰符,final修饰符导致了String一旦定义就是最终形态,任何试图改变String值的操作都只能重新开辟地址。

不同于数组Array,数组的构造器没有final修饰符,所以形参的改变会影响到实参本身

String和数组 在方法中值传递机制的区别

public class StringTest {public static void change(String str){str = "I am a String";}public static void change(char[] arr){arr[0] = '$';//重载change方法,把第一个字符改为$}public static void main(String[] args) {String s1 = "hello";change(s1);System.out.println(s1);//hello
//即便String是个类,字符串传入方法形参对自身没有影响char[] MyChar = new char[]{'a','b','c'};change(MyChar);System.out.println(MyChar[0]);//$
//数组作为方法形参,方法对形参的操作会影响到传入的实参数组}

为什么String作为形参不会改变本身的值?相关推荐

  1. c语言函数实参是赋值语句,c语言说形参不能改变实参的值,为什么这个赋值语句可以...

    c语言说形参不能改变实参的值,为什么这个赋值语句可以0 cpystr(q1; printf(" cpystr(char *p1,*q2,char *p2) {while(*p2++=*p1+ ...

  2. Java字符串的参数传递为何没改变原本的值

    Java字符串的参数传递为何没改变原本的值 例题 public class StringTest{String str = new String("good");char[] ch ...

  3. java 不可修改的集合对象_java集合:关于hashmap存储一个对象,中间改变对象的值,为什么再remove不能用新名字来删除...

    代码如下:publicclassDemo1{publicstaticvoidmain(String[]args){HashSetsc=newHashSet<>();bookbook1=ne ...

  4. JAVA怎么在函数内改变传入的值

    public class TestInt {public int aa(int i){return i+4;}public static void main(String [] args){int i ...

  5. 函数中参数有数组时注意的小问题(不一定要传递数组长度,不用返回数组,可以在函数中改变数组元素值)

    函数中参数有数组时注意的小问题: 1.不一定要传递数组长度 2.不用返回数组,可以在函数中改变数组元素值 通过下面这个小例子来验证: #include<iostream> #include ...

  6. 对于指针传入函数,却最终没有改变指针的值的问题

    原本写了一个函数,用于去掉字符串中的空格 void CMy21EnAIDlg::Onencyai() {CString strEncryptionData;m_txt_EncryptionData.G ...

  7. java成员变量默认是_在Java语言中,String类型的成员变量的默认初始值是( )

    在Java语言中,String类型的成员变量的默认初始值是( ) 答:C.null 学生最主要的权利是() 答:受教育权 提倡教育要适合孩子的 "敏感期"的教育家是 答:蒙台梭利 ...

  8. C语言编程>第二十二周 ③ 下列给定的程序中,函数fun的功能是根据整型形参n,计算如下公式的值:

    例题:下列给定的程序中,函数fun的功能是根据整型形参n,计算如下公式的值: 例如,若n=1000,则应输出0.000155. 注意:不要改动main函数,不能增行或删行,也不能更改程序的结构. 代码 ...

  9. Vue3 初探 ref、reactive 、及改变数组的值

    概况 Vue3 里要实现数据的响应式监听一共有两种方式既:ref 和 reactive 他们既有区别又有联系. ref() ref数据响应式监听.ref 函数传入一个值作为参数,一般传入基本数据类型, ...

最新文章

  1. SpringMVC 返回json
  2. (转)C# 3.0 LINQ 的演变及其对 C# 设计的影响
  3. 3310复刻版 java_终于等到你:诺基亚3310复刻版开箱简评
  4. node环境下express路由,
  5. linux 内核 3.18,Linux Kernel 3.18 正式版发布下载
  6. spring-boot actuator(监控)配置和使用
  7. centos8网络配置开启wifi_在centos 8中安装各种路由协议
  8. 看完这篇“史密斯圆图”告别懵逼射频!
  9. 计算机科学家壁纸,电脑励志好看的文字壁纸推荐
  10. 危机管理计划书模板_危机公关策划书范文_计划方案.doc
  11. CANoe.Diva之cdd文件配置
  12. 对比不同主流存储格式(csv, feather, jay, h5, parquet, pickle)的读取效率
  13. 每期智力题、数量关系题、推理判断题
  14. Python Tricks : Function Argument Unpacking
  15. 金立E6刷MIUI V5教程
  16. 彩灯循环控制系统 电路与电子技术 课程设计
  17. python中输出手机话费_用Python生成柱状图、折线图、饼状图来统计自己的手机话费...
  18. rtl8723bs linux网卡驱动识别问题,无法使用无线的解决方法
  19. 紫外 LED 灯生产厂家调研
  20. axure流程图模式_手把手教你用AXURE绘制流程图的图文教程

热门文章

  1. VisionPro 8.2支持的工业相机和格式
  2. 用sklearn模块函数进行基于决策树算法的乳腺癌分类,并进行决策树的可视化
  3. Mac电脑误删谷歌Chrome书签该如何恢复?
  4. (翻译)滑动步进器:费力点击的终结者
  5. Android View 绘制流程,大厂直通车
  6. 开源项目让你也可以尝试玩转工业物联网以及智慧工厂(智能制造),IOT开源网关、SCADA取数开源、PLC数据采集
  7. 自媒体必备!全自动文章生成工具
  8. 金山快盘+TortoiseSVN构建版本控制仓库
  9. 365天英语口语学习_17,打错电话
  10. 你与育碧的服务器已经中断,育碧CJ展示游戏突然断开连接 玩家:可以,这很育碧...