创建实例的方式声明字符串,会在新建一个实例进行赋值,数组或者直接赋值字符串,则会修改内存中原有的对象

本文通过一个Java示例程序,展示了字符串和字符数组作为方法参数时,内存中如何被处理及修改。具体分析了当方法参数为基本类型或引用类型时,原始数据是否会受到影响的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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';

}

}
A、 good and abc

B、 good and gbc

C、 test ok and abc

D、 test ok and gbc

解析: B

1、常量str 与 ch 分别使用创建实例方式和数组方式声明字符串。
两者区别:创建实例的方式声明字符串,会在内存中新建一个实例进行赋值。数组或者直接赋值字符串,则会修改内存中原有的对象。
如下伪代码所示:
string a=“abc” , b=“abc” ;
在比较字符串 a、 b 时,a 等于 b 。
而 string a=new string(“abc”);
string b=new string(“abc”) ;
再比较字符串 a 和 b, 则 a 不等于 b 。
2、再是change 方法没有返回值,是void修饰。所以对 ch 的修改影响到了全局变量 ch,对str 的修改仅仅是修改了chenge方法中创建的 str 同名的局部变量。
最后 输出 为 答案 B项。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值