两道JAVA题,谁来给我解释一下,稍微详细点的

publicclassExample{Stringstr=newString("good");char[]ch={'a','b','c'};publicstaticvoi... 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

下列关于Java线程的说法那些是正确的()
A 每一个Java线程可以看成由代码、一个真实的CPU以及数据三部份组成。
B 创建线程的两种方法中,从Thread类中继承的创建方式可以防止出现多父类问题。
C Thread类属于java.util程序包。
D 以上说法无一正确。
展开
 我来答
匿名用户
2013-07-27
展开全部
第一题肯定选B:
str是引用数据类型,而字符数组是基本数据类型,二者存放在内存中的机制是不一样的!
public void change(String str.char ch[])
{
str="test ok";
ch[0]='g';
}
传入str,虽然把"test ok"强行赋给str,但是这里的str存放在新的栈内存中,和原来的str存放的地址不一样,所以你System.out.print(ex.str+"and");这里的输出还是调用原来内存中的str;
字符数组不一样,你声明一个字符数组之后,那个数组的位置就定死了,你调用change()之后,把原来的字符数组的第1个元素改为了g.这就是引用数据类型和基本数据类型的区别.
第二题选A!
C肯定是错的! 属于lang包!
B也不对,线程实现有2种方式,第一,扩展java.lang.Thread类.第二,实现Runnable接口
从Thread类中继承的创建方式我还是可以实现Runnable接口,也就是说还是不能防止多父类的出现!!
匿名用户
推荐于2017-11-25
展开全部
你这一行public void change(String str.char ch[])
应该为public void change(String str, char ch[])
输出结果为goodandgbc
最接近的答案选B

Java的参数传递方式是值传递,当参数是简单类型时,不改变参数的值;当参数是引用类型时,不改变这个对象的引用。
change()的参数str和ch[]都是引用类型,在类Example中str指向"good"的地址,ch[]指向ch[]的地址,使用str="test ok"后在change()内str指向"test ok",但在类中str仍指向"good",而ch[0]仍指向ch[0],因为String与StringBuffer不同,改变它的值实际上是改变了它指向的内存地址(新开辟),但由函数返回时仍指向原地址。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式