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

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 以上说法无一正确。

第一题肯定选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接口,也就是说还是不能防止多父类的出现!!
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于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不同,改变它的值实际上是改变了它指向的内存地址(新开辟),但由函数返回时仍指向原地址。本回答被网友采纳

求两道JAVA题~ 刚开始学 不懂 望高手指点 最好解释下的 谢谢
第一题 public class Employee{ public String name = "";public String basic = "";public String address = "";public void show(){ System.out.pritnln("name:"+ name);System.out.println("basic:"+ basic);System.out.println("address:"+ address);} } public class Manager extends ...

求救:两道JAVA程序题的答案,不会啊!
针对第一题:public static void changestr(string str){ str="welcome";} 该函数的str变量是一个形参,他和main()方法的str是不一样的,该函数的str 仅仅在changestr()方法内,是个局部变量,当程序把main()方法的str 也就是"1234"作为实参传递到changestr()中时,此时changestr()中str指向"1...

两道JAVA题目,求大神解答
C、for(int i=1;i<=n;i*=2)for(int j=1;j<=n;j++)第一重循环每1次,第二重循环n次,第一重循环每共log2n次,所以这个循环总共nlog2n次,时间复杂度为O(nlog2n)。D、for(int i=1;i<=n;i*=2)for(int j=1;j<=i;j++)这个循环总共执行1+2+...+log2n=(1+log2n)lo...

请教两道JAVA题
第一题: 选D 子类继承父类的所有属性和方法 B为A的子类 用A去实例B 当然可以 C为B的子类 用B去实例C 当然也可以 可以理解???既然 子类继承父类的所有属性和方法 间接的 C也是A的子类了 故有 A a2=new C();第二题: 选A final 为最终的 可以修饰类、属性、方法 故A...

关于JAVA的题目,求答案跟解释!
1、\/\/普通注释 、\/*多行注释*\/、\/**文档注释*\/,答案:AD 2、编译是:java xx.java、运行是:java xx,答案:C 3、方法都必须写在类中、只能有一个main方法,答案:AC 4、.java没问疑问,答案:C 5、System.out.println("");注意大小写以及英文标点符号,答案:D 6、控制台,答案:C ...

详细解释一下这个java第七题
第一层for是遍历b的层数,b.length是指b这个二维数组有几组数据,这里有3组大括号,所以b.length是3.第二层for是遍历每组数据含有几个元素。b[0].length就是{1,2,3},b[1]就是{4,5},b[2]就是{6,7} 相应的b[0][0]就是1,b[0][1]就是2,b[1][0]就是4.等等。注意数组下标...

JAVA语言程序设计两道练习题。谢谢!
第二题可以答一下:package pillar;public class Pillar { private Geometry buttom;private double height;public Pillar() { \/\/ TODO Auto-generated constructor stub } public Pillar(Geometry button,double height){ this.buttom = button;this.height = height;} public double getVolume(){ retur...

JAVA里面的问题,请给出详细的解释
12+34>34根据大于号判断是布尔表达式 因为12+56》34本身是正确的 所以结果为true;x+y=12 在java中没有这种类型的表达式 12+56||34 因为||(逻辑或)左右都必须是布尔类型的 所以非法 所以正确答案是 A

java问题:每一项都详细解释下
A:是的,Object类是所有类的父类,而且是唯一不用指定明确继承的类。B:接口不继承Object类的,同理接口没有构造函数。C:== 比较的是内存地址。使用equals才是调用equals方法。D:可以使用,没有定义则使用父类的,最终的父类就是Object类,而Object类中输出的是对象类型和地址。

java 练习题,求解答,并说明原因,恳请尽量详细点。
有wait,notify的地方必有synchronized.这是因为wait和notify不是属于线程类,而是每一个对象都具有的方法,而且,这两个方法都和对象锁有关,有锁的地方,必有synchronized.wait(),notifyAll()是Object类的方法所有的类都继承的有,所以可以在任何时候被任任何线程调用!如果要把notify和wait方法放在一起...

相似回答