【题记】 很多常规题,不好归纳,只能慢慢补充了。
一、以下代码是否正确?如果不正确,如何改正?
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