• String与字符数组


    public class Example {
        static String str = new String("good");
        static char[] ch = {'a','b','c'};
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Example ex = new Example();
            ex.change(str, ch);
            System.out.print(str + "and");
            System.out.print(ch);
            
    
        }
        
        public static void change(String str,char ch[]){
            str = "test ok";
            ch[0] = 'g';
        }
    
    }

    输出结果为goodandgbc

    首先说下String确实是个不可变对象,这个不可变是JDK特有的,写JAVA的人特意针对的
    但是这与本题无关,题目中的形参str只是原引用ex.str的一个引用副本,传的是一个副本地址值,这个值与ex.str地址值是不一样的,但是它们同时指向了堆中的对象new String("good"),当你在函数中改变形参也就是地址的副本值也就是这句str="test ok"只是将副本地址指向常量"test ok",并没有改变原ex.str的指向方向,它还是指向对象new String("good")的。
    char数组与String一样传的也是地址的副本,但是关键是形参ch它没有新的指向 ch[0]只是ch在指向原对象时改变了对象的内部结构, 所以在ex.ch指向与它是同一个对象的情况下当然也会随之变化。
  • 相关阅读:
    Android git提交代码所需忽略的文件
    python 代码命名规范
    appium-设计思路
    appium-循环执行一条用例,失败时停止执行
    BeautifulReport 遇到的问题 template
    接口自动化
    python-装饰器
    linux-vi编辑器创建和编辑正文文件
    linux-文件的压缩与解压缩
    python学习第一天
  • 原文地址:https://www.cnblogs.com/LoganChen/p/6962741.html
Copyright © 2020-2023  润新知