1、在基本JAVA类型中,如果不明确指定,整数型的默认是什么类型?带小数的默认是什么类型?
错误答案:int float 正确答案:java整数型的默认类型是int,小数的默认类型是double
2、下列的输出结果是什么?
1 public class Test{ 2 static int cnt = 6; 3 static{ 4 cnt += 9; 5 } 6 public static void main(String[] args){ 7 System.out.println(“cnt =” + cnt); 8 } 9 static{ 10 cnt /=3; 11 }; 12 }
正确答案:cnt=5
查看答案解析有的人说:静态初始化块,静态变量,先执行静态变量在执行静态初始块。
而另一位同学做实验,并且我自己也运行了下面这个例子:
public class Test { static { cnt = 6; } static int cnt = 100; public static void main(String[] args) { System.out.println("cnt = " + cnt); //最后输出是50,如果按照错误说法就应该是3 //按顺序执行就是cnt=6--->cnt=100---->cnt = 100/2 = 50. } static { cnt /= 2; } }
最终输出结果是:50,其实是Java的向前引用,加载的机制应该是先声明所有的变量,但是现在只是声明而已所以是cnt是int的默认值0,然后按照声明语句和静态块的先后顺序依次对cnt进行操作,所以最后会输出50。
最终的顺序:父类的成员变量声明->按书写顺序执行父类静态成员变量和静态块->子类的成员变量声明->按书写顺序执行子类静态成员变量和静态块
3、下列代码的输出结果是什么?
1 System.out.println(“is ”+ 100 + 5); 2 System.out.println(100 + 5 +“ is”); 3 System.out.println(“is ”+ (100 + 5));
错误答案:is 105, 105 is, is 105
正确答案:is 1005, 105 is, is 105
解析:“+”是按照从左到右顺序执行的,除非是加括号,并不会先执行算数操作
4、socket编程中,以下哪个socket的操作是不属于服务端操作的()?
A、accept
B、listen
C、connect
D、close
错误答案:D
正确答案:C
解析:服务器端也可以关闭连接,客户端主动连接(connect),服务器端进行监听阻塞
5、
1 public class DataObject implements Serializable{ 2 private static int i=0; 3 private String word=" "; 4 public void setWord(String word){ 5 this.word=word; 6 } 7 public void setI(int i){ 8 Data0bject. i=I; 9 } 10 } 11 创建一个如下方式的DataObject: 12 13 DataObject object=new Data0bject ( ); 14 object. setWord("123"); 15 object. setI(2);
将此对象序列化为文件,并在另外一个JVM中读取文件,进行反序列化,请问此时读出的Data0bject对象中的word和i的值分别为()
A、"", 0
B、"", 2
C、"123", 2
D、"123", 0
错误选项:C
正确选项:D
解析:序列化保存的是对象的状态,静态变量属于类的状态,因此,序列化并不保存静态变量。所以i是没有改变的,并且被transient标注的成员变量也不会被序列化。
6、下面程序的运行结果()
1 Object obj=new Object(); 2 List aList=new ArrayList(); 3 List bList=new LinkedList(); 4 5 long t1=System.currentTimeMillis(); 6 for(int i=0;i<50000;i++){ 7 aList.add(0,obj); 8 } 9 long t2=System.currentTimeMillis()-t1; 10 11 t1=System.currentTimeMillis(); 12 for(int i=0;i<50000;i++){ 13 bList.add(0,obj); 14 } 15 long t3=System.currentTimeMillis()-t1;
错误答案:t3>t2
正确答案:t2>t3
解析:这题做错属于马虎大意,ArrayList底层使用数组实现,LinkedList底层使用链表,所以ArrayList查找速度比LinkedList快,LinkedList插入比ArrayList快
7、经过强制类型转换以后,变量a,b的值分别为多少?
1 short a =128; 2 byte b =(byte) a;
错误答案:编译错误
正确答案:128,-128
分析:首先要了解byte的组成,byte有八位由于第一位是符号位,byte的取值范围是-128~127,a的后八位为10000000,赋值给byte就变成了10000000,但此时1为符号位。所以byte的10000000为-128
8、以下哪个式子有可能在某个进制下成立()?
A、13*14=204
B、12*34=568
C、14*14=140
D、1+1=3
正确答案:A
解析:首先从A开始试,设进制为X则A选项为:(1*x^1 + 3*x^0)(1*x^1 + 4*x^0) = 2*x^2+0*x^1+4*x^0
整理得:x^2-7x-8=0
根据求根公式:
最终得出解:-1和8,以下选项以此类推,因为A选择有正解,故正确答案为A