叨叨两句

  1. 继续改进学习方法,增加练习时间,脑图先初版,之后慢慢迭代

牛客网——java专项练习022

1

设有下面两个赋值语句:

a = Integer.parseInt("1024");
b = Integer.valueOf("1024").intValue();

下述说法正确的是()
正确答案: D

  1. a是整数类型变量,b是整数类对象。
  2. a是整数类对象,b是整数类型变量。
  3. a和b都是整数类对象并且它们的值相等。
  4. a和b都是整数类型变量并且它们的值相等。
intValue()是把Integer对象类型变成int的基础数据类型; 
parseInt()是把String 变成int的基础数据类型; 
Valueof()是把String 转化成Integer对象类型;(现在JDK版本支持自动装箱拆箱了。)
本题:parseInt得到的是基础数据类型int,valueof得到的是装箱数据类型Integer,然后再通过valueInt转换成int,所以选择D

2

枚举(enum)属于原始数据类型(primitive type)。
正确答案: B

  1. 正确
  2. 错误
在Java中,变量有两种类型,一种是原始类型,一种是引用类型。
原始类型一共有8种,它们分别是char,boolean,byte,short,int,long,float,double。在Java API中,有它们对应的包装类,分别是(首字母大写)Character,Boolean,Byte,Short,Integer,Long,Float,Double(char,int的变化稍微大点)。


枚举(enum)类型是Java 5新增的特性,它是一种新的类型,允许用常量来表示特定的数据片断,而且全部都以类型安全的形式来表示,是特殊的类,可以拥有成员变量和方法。

3

阅读下列程序,选择哪一个是正确的输出结果

class HelloA{
public HelloA()
    {
        System.out.println("I’m A class ");
    }
    static
    {
    System.out.println("static A");
    }
}
public class HelloB extends HelloA{
    public HelloB()
    {
        System.out.println("I’m B class");
    }
    static{
        System.out.println("static B");
    }
    public static void main (String[] args){
        new HelloB();
    }
}

正确答案: C

  1. static A I’m A class static B I’m B class
  2. I’m A class I’m B class static A static B
  3. static A static B I’m A class I’m B class
  4. I’m A class static A I’m B class static B
正确答案应该选C。 类的初始化顺序是: 1、初始化父类中的静态成员变量和静态代码块。 2、初始化子类中的静态成员变量和静态代码块。 3、初始化父类中的普通成员变量和代码块,在执行父类中的构造方法。 4、初始化子类中的普通成员变量和代码块,在执行子类中的构造方法。

4

given the following code,what will be the output?

class Value{
    public int i=15;
}
public class Test{
    public static void main(String argv[]){
        Test t=new Test( );
        t.first( );
    }
 
public void first( ){
    int i=5;
    Value v=new Value( );
    v.i=25;
    second(v,i);
    System.out.println(v.i);
}
 
public void second(Value v,int i){
    i = 0;
    v.i = 20;
    Value val = new Value( );
    v = val;
    System.out.println(v.i+" "+i);
   }
}

正确答案: A

  1. 15 0 20
  2. 15 0 15
  3. 20 0 20
  4. 0 15 20
可能有人会选择B,包括我刚开始也是。总以为v不是已经指向了val了吗??为什么还是20呢?不应该是15吗?
其实,原因很简单。现在我们把second()换一下
publicvoidsecond(Value tmp,inti){
    i = 0;
    tmp.i = 20;
    Value val = newValue( );
    tmp = val;
    System.out.println(tmp.i+" "+i);
   }
这个tmp其实相当于是一个指向原来first中的V这个对象的指针,也就是对v对象的引用而已。但是引用是会改变所指的地址的值的。
所以在second中当tmp.i= 20的时候,就把原来first中的v的i值改为20了。接下来,又把tmp指向了新建的一个对象,所以在second中的tmp
现在指的是新的对象val,i值为15.
当执行完毕second后,在first中在此输出v.i的时候,应为前面second中已经把该位置的i的值改为了20,所以输出的是20.
至于疑惑v指向了val,其实只是名字的问题,在second中的v实践也是另外的一个变量,名字相同了而已,这个估计也是纠结的重点。
简单的总结,不对希望可以提出来,谢谢!

5

ResultSet中记录行的第一列索引为?
正确答案: C 你的答案: C (正确)

  1. -1
  2. 0
  3. 1
  4. 以上都不是

Wall_Breaker
2.1k 声望1.2k 粉丝

生死之间,就是我的跃迁之路,全程记录,欢迎见证