zoukankan      html  css  js  c++  java
  • 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指向与它是同一个对象的情况下当然也会随之变化。
  • 相关阅读:
    3.25训练题
    hdu1495
    poj1426 宽搜
    高斯消元
    codeforces 999E 强联通分量
    hdu4289城市与歹徒 网络流
    蒟蒻的离散化模板
    樱花,素数筛
    【转】分圆问题:一个诡异的数列规律
    hdu1257最少拦截系统 贪心
  • 原文地址:https://www.cnblogs.com/LoganChen/p/6962741.html
Copyright © 2011-2022 走看看