Java日常刷题第三天

选择题

public class Test{
 static int cnt=6;
 static{
 cnt+=9;
 }
 public static void main(String[] args){
 System.out.println("cnt="+cnt);
 }
 static{
 cnt/=3;
 };
 }

cnt的值是:cnt=5
2.执行如下程序,输出结果是 2 24 46 6

class Test
 {
 private int data;
 int result=0;
 public void m()
 {
 result+=2;
 data+=2;
 System.out.print(result+" "+data);
 }
 }
 class ThreadExample extends Thread
 {
 private Test mv;
 public ThreadExample(Test mv)
 {
 this.mv=mv;
 }
 public void run()
 {
 synchronized(mv)
 {
 mv.m();
 }
 }
 }
 class ThreadTest
 {
 public static void main(String args[])
 {
  Tesr mv=new Test();
  Thread t1=new ThreadExample(mv);
  Thread t2=new ThreadExample(mv);
  Thread t3=new ThreadExample(mv);
 		 t1.start();
     	 t1.start();
         t1.start();
         }
         }

3.在开发中使用泛型取代非泛型的数据类型(比如用ArrayList取代ArrayList),程序的运行时性能会变得更好。(×)
解析:泛型只在编译的时候保证数据类型的正确性,和运行期间的性能无关。
使用泛型的好处:类型安全,泛型的主要目标是提高Java程序的类型安全;消除强制类型转换,使得代码更加可读,减少了出错机会;
4.

public class Test 
  {
  static boolean foo (char c)
  {
  System.out.print(c);
  return true;
  }
  public static void main(String[] argv)
  {
  int i=0;
  for (foo('A';foo('B')&&(i<2);foo('C'))
  {
  i++;
  foo('D');
  }
  }
  }

What is the result?
ABDCBDCB
解析:
for(条件1;条件2;条件3){
//语句
}
执行顺序是条件1->条件2->语句->条件3->条件2->语句->条件3->条件2…如果条件2为true则一直执行,如果条件2为false,则for循环结束
for里面的第一个语句(初始化位置)只执行一次。
5.事务隔离级别是由数据库系统实现的。
解析:
A.Java应用程序:我们写Java程序的时候只是设定事物的隔离级别,而不是去实现它。
B.Hibernate是一个Java的数据持久化框架,方便数据库的访问。
C.事务隔离级别由数据库系统实现,是数据库系统本身的一个功能。在数据库操作中,为了有效保证并发读取数据的正确性,提出的事务隔离级别;为了解决更新丢失,脏读,不可重读(包括虚读和幻读)等问题在标准SQL规范中,定义了4个事务隔离级别,分别为未授权读取,也称为读未提交(read uncommitted);授权读取,也称为读提交(read committed);可重复读取(repeatabe read);序列化(serializable).
D.JDBC是java database connector,也就是Java访问数据库的驱动。
6.如果Int x=20,y=5,则语句System.out.print(x+y+""+(x+y)+y);的输出结果(25255)
解析:字符串和数字相加,直接把数字当成字符串,这是Java的装箱机制,最终相当于字符串的连接。
代码默认将“”后面的变化成了字符串相加。
7.对于子类的构造函数说明,下列叙述错误的是
A.子类可以继承父类的构造函数。× ; 原因(Java继承中对构造函数是不继承的,只是显式或者隐式调用)。
B.子类中调用父类构造函数不可以直接书写父类构造函数,而应该用super();
C.用new创建子类的对象时,若子类没有带参构造函数,将先执行父类的无参构造函数,然后在执行自己的构造函数。
D.子类的构造函数中可以调用其他函数。
8.针对以下代码,那些选项执行后是true的:x==f1[0];f1==f3

 class  CompareReference{
  public static void main(String[] args){
  float f=42.0f
  float f1[]=new float[2];
  float f2[]=new float[2];
  float[] f3=f1;
  long x=42;
  f1[0]=42.0f;
  }
  }

解析:x==f1[0],x是long类型,与float类型对比属于低精度,所以x要向高精度的float类型转型再比较,故相等。long和float比较,相当于float跟float比较–精度从高到低double float long int short(char) byte

f1==f3 ,f3没有new创建,而是由f1赋值,所以f3地址是指向f1的,f1值改变,相当于改变f3值,所以相等。

9.不能用来修饰interface的有(private、protected、static)[仅限外部接口].
解析:interface的访问权限修饰符只能是public
10.下列说法正确的是
A.对于局部内部类,只有在方法的局部变量被标记为final或局部变量是effctively final,内部类才能使用它们
B.成员内部类位于外部类内部,可以直接调用外部类的所有方法(静态方法和非静态方法)
解析:

C.由于匿名内部类只能用在方法内部,所以匿名内部类的用法与局部内部类是一致的。×
原因:匿名内部类用法与局部内部类不一致,首先从定义上就不一样,匿名类用在任何允许存在表达式的地方,而局部内部类用于在任何允许出现局部变量的地方。还有更重要的是匿名类只能使用一次,而局部类则可以在自己的定义域内多次使用。
D.静态内部类可以访问外部类的成员变量。×
原因:静态内部类不能直接访问外部类的非静态成员,但可以通过new外部类().成员的访问方式。
成员内部类是专指非静态的,静态内部类不能称之为成员

编程题

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。[

转载请注明出处:http://blog.csdn.net/ns_code/article/details/26957383

思路:

猜你喜欢

转载自blog.csdn.net/yangyuCISCO/article/details/83002526