7.当然是B,因为方法改变的是i的指向了一个新的对象而不是原来i所指向对象的值!!11. Container is a Component 应该也是对的12. 匿名类当然不能声明其它属性,因为写法是
Comparator cmp = new Comparator() {
....
}//这样在这里你什么特别的属性都不能声明的
13. 静态类是可以实例化的18. Java默认是认为浮点数的,所以 B错误29. 不是比较函数,这个是赋值语句,
在 byte [] array1, array2[];其实array2是 byte[][]类型的!!!57. setX, setY是private的,其它类根本不能调用!
在调用setXY的过程中,如果刚好在调用了setX(i)这个方法后,另外一个线程调用了check就会返回true95. 同1,方法改变的仍然是s的指向,而不是原来s所指向的对象的内容
Comparator cmp = new Comparator() {
....
}//这样在这里你什么特别的属性都不能声明的
13. 静态类是可以实例化的18. Java默认是认为浮点数的,所以 B错误29. 不是比较函数,这个是赋值语句,
在 byte [] array1, array2[];其实array2是 byte[][]类型的!!!57. setX, setY是private的,其它类根本不能调用!
在调用setXY的过程中,如果刚好在调用了setX(i)这个方法后,另外一个线程调用了check就会返回true95. 同1,方法改变的仍然是s的指向,而不是原来s所指向的对象的内容
18. 浮点默认是double的
29.数组的equals比较的是地址
95.String是不变类,生成了就不可以改变
public static void modify (String s)中的s只是形参
与 String s = new string (“Hello”);中s 存储的值一样,但地址不同,所以你改变
public static void modify (String s)中的s形参的值,只是改变了存储在形参s所在内存地址的存储的值,与 String s = new string (“Hello”);中s 无关.
类似c++处理这类问题是,传的参数一般为引用.直接更改实参地址中存储的值.
1题与此类似.
8. public static void modify (String s) {
9. s += “world!”;
10. }
在modify中,s的地址是改变了。。因为s=s+"world";s实际上是指向另一块地址(系统生成的);
String 相加 相当于 s=StringBuffer(s).append(world).toString();
11和57中的c为什么不对
11、is a 是继承关系,has a是组合包含关系,所以就是D和E
12、看看资料就知道了
13、静态类可以实例化
29、注意byte [] arry1, array2[];声明后,array2是二维数组,不是一维的,所以不能被一维数组array1赋值
57、setXY没有同步,所以可能出现x和y不一致的情况,也就是public synchronized Boolean check() (return x !=y;)可能返回true,其他都是同步不可能出现x和y不一致的情况
95、S是引用传递而且具有不可变性,modify之后变成了另一个对象,所以原来的s的还是原来的值
11题不明白,觉得是has a,而不是is a,根本没出现继承
57:我觉得一个类的实例变量怎么可能因为多线程而出现true的情况呢,多线程都是修改一些共同的变量,而不能修改其它类的实例变量,类的实例变量只能由自己的线程去改变。所以这道题我到现在也是乱糟糟的
<<<<<<<<<<<<<<<其它的题大家就不要回答了,已经明白了。>>>>>>>>>>>>>>>>>>>>>>>>>>
这个时候x=1,y=0。这个时候另一个线程调用check就返回true了。
动物是一个物种,容器是一种组件,应该是满足is a 关系的。
public class Animal (private Species species;)好好理解一下吧 Animal is a SpeciesE. interface Component { }
Class Container implements Component (
Private Component[ ] children;
)使用了implement,所以是is a关系
与 String s = new string (“Hello”);中s 存储的值一样,但地址不同
两个人有父子关系但是你不知道
父子关系是客观存在,但是你不知道,难道就说他们不能是父子?D中是具有is a关系的,你不声明继承难道就没有这种关系,再说父子给儿子打工也是有可能的(就表现为一种关系了).
说说看法
///////////////////////////////////////////////////class Test {
private int x; private int y; private synchronized void setX(int i) {
x = i;
System.out.println("->CunrrentT: "+Thread.currentThread()+" | x =>"+x);
} private synchronized void setY(int i) {
y = i;
System.out.println("->CunrrentT: "+Thread.currentThread()+" | y =>"+y);
} public void setXY(int i) {
setX(i);
setY(i);
} public synchronized boolean check() {
return x != y;
}
}public class SynTest implements Runnable{
private Test test;
public SynTest(Test test){
this.test=test;
}
public void run(){
for (int i = 0; i < 10; i++) {
test.setXY(i);
try{
Thread.sleep(1000);
}catch(InterruptedException e){
e.printStackTrace();
}
}
}
public static void main(String[] args) {
Test t=new Test();
SynTest st=new SynTest(t);
Thread t1=new Thread(st);
Thread t2=new Thread(st);
t1.start();
t2.start();
for(int j=0;j<20;j++){
System.out.println("Check:="+t.check()+"\n");
try{
Thread.sleep(100);
}catch(InterruptedException e){
e.printStackTrace();
}
}
}
}