java基础题一

指出下列程序运行的结果()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Example{
    String str = new String("good");
    char[ ] ch = { 'a' 'b' 'c' };
    public static void main(String args[]){
        Example ex = new Example();
        ex.change(ex.str,ex.ch);
        System.out.print(ex.str + " and ");
        System.out.print(ex.ch);
    }
    public void change(String str,char ch[ ]){
        str = "test ok";
        ch[0] = 'g';
    }
}


1/1
A good and abc
B good and gbc
C test ok and abc

D test ok and gbc



答案:B


.这是《java编程思想》283页,字符串这章第一个概念,“String对象是不可变的(看了源码,String实质是final修饰的char数组!),每个看起来会修改的方法,其实都是创建了一个全新的String”...... 2.要知道字符串常量的概念,那个“test ok”是个字符串常量!在编译期就定好了,赋值的时候相当于new了新的字符串给那个引用。传参的时候,把外面的str引用地址复制了一份给方法内的str。(通常,我们以前认为的是,方法里修改了引用对应的值,然后里里外外都对应这个,全改了!注意!这里不是修改值!是相当于直接new了个新的地址给方法内的str。而原来的没变!)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值