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指向与它是同一个对象的情况下当然也会随之变化。
  • 相关阅读:
    gvim : invalid input string
    端口
    Sequence Overview
    vi的使用
    Ubuntu安装CodeBlocks相关问题总结
    中断
    Ubuntu Software Repository
    UVA 12299 RMQ with Shifts
    UVA 12293 Box Game
    POJ 3468 A Simple Problem with Integers (1)
  • 原文地址:https://www.cnblogs.com/LoganChen/p/6962741.html
Copyright © 2011-2022 走看看