【题记】 很多常规题,不好归纳,只能慢慢补充了。
一、以下代码是否正确?如果不正确,如何改正?
1、关于抽象类
abstract class a{
private abstract void f();
}
2、关于集合
Collection cl = new ArrayList();
3、完成int转byte[]的函数
public byte[] intToByte(int i) {
//coding...
}
4、判断String的"=="结果
public static void testString(){
String str1="aa";
String str2="aa";
System.out.print(str1==str2);
String str3=new String("a");
String str4=new String("a");
System.out.println(str3==str4);
}
5、"&&"和"||"的细微差别(这个题出得不错,检验下你能否做对?)
public void testEqual(){
int a=0,b=0;
if(a++>0&&b++==0){
b++;
}
System.out.println(b);
if(a++>0||b++==0){
b++;
}
System.out.println(b);
}
6、不允许用parseInt()这个系统函数,自己来实现String转int
public int parseInt(String val){
//coding....
}
7、求输出结果
void f(){
int i=0;
System.out.println(i>0?9.9:9);
}
参考答案:
1、错误。抽象方法不能用private修饰,这样子类就不可见了。可以不限制,如果一定要加,只能加上public 或 protected。具体使用见http://blog.csdn.net/whuslei/article/details/6366185
2、正确的!collection是所有集合类的子类。不明白的参看http://blog.csdn.net/whuslei/article/details/6549414第3点
3、通过"&"和"移位"操作将int转化为4个byte存入数组。具体代码如下
public byte[] intToByte(int i) {
byte[] bt = new byte[4];
bt[0] = (byte) (0xff & i);
bt[1] = (byte) ((0xff00 & i) >> 8);
bt[2] = (byte) ((0xff0000 & i) >> 16);
bt[3] = (byte) ((0xff000000 & i) >> 24);
return bt;
}
public static int bytesToInt(byte[] bytes) {
int num = bytes[0] & 0xFF;
num |= ((bytes[1] << 8) & 0xFF00);
num |= ((bytes[2] << 16) & 0xFF0000);
num |= ((bytes[3] << 24) & 0xFF000000);
return num;
}
4、true false。5、0 1 。&&和||的细微差别,&&左边如果为假,则不需要计算右边;||左边若为真,则不需要计算右边。
6、参考代码如下:
public int parseInt(String val){
char[] chars = val.toCharArray();
int res=0;
for(char ch:chars){
res=ch-'0'+10*res;
}
return res;
}
7、输出结果为 9.0