计算机专业技能-Java专项练习
1、以下关于Integer与int的区别错误的是()
A. int是java提供的8种原始数据类型之一
B. Integer是java为int提供的封装类
C. int的默认值为0
D. Integer的默认值为1
解 答
int 是Java八大基本数据类型之一(byte,char,short,int,long,float,double,boolean);
Integer 是 int的 包装类;
int是Java基本数据类型,默认值为0,
Integer 是Java包装类,默认值为null;
int是基本数据类型,直接存储数值。
Integer 表示的是对象,用一个引用指向这个对象,
2、在 JAVA 编程中, Java 编译器会将 Java 程序转换为( )
A. 字节码
B. 可执行代码
C. 机器代码
D. 以上都不对
解 答
- 编译器将Java源代码编译成字节码class文件
- 类加载到JVM里面后,执行引擎把字节码转为可执行代码
- 执行的过程,再把可执行代码转为机器码,由底层的操作系统完成执行
3、关于依赖注入,下列选项中说法错误的是()A. 依赖注入能够独立开发各组件,然后根据组件间关系进行组装
B. 依赖注入使组件之间相互依赖,相互制约
C. 依赖注入提供使用接口编程
D. 依赖注入指对象在使用时动态注入
解 答依赖注入和控制反转是同一概念:依赖注入和控制反转是对同一件事情的不同描述,从某个方面讲,就是它们描述的角度不同。
依赖注入是从应用程序的角度在描述,可以把依赖注入描述完整点:应用程序依赖容器创建并注入它所需要的外部资源;而控制反转是从容器的角度在描述,描述完整点:容器控制应用程序,由容器反向的向应用程序注入应用程序所需要的外部资源。
4、下列选项中符合Java命名规则的标识符是()A. 2japro
B. &Class
C. const
D. _123
解 答- Java 标识符有如下命名规则:
- 由26个英文字母大小写,数字:0-9 符号:_ $ 组成
- 标识符应以字母、_ 、$开头。
- 标识符不能是关键字。
- Java中严格区分大小写
- 除去java中关键字,java中标识符是:字下美人数-----字母,下划线,美元符号,人民币,数字(数字不能放首位)
5、下列属于容器的组件有()A. JButton
B. JPanel
C. Thread
D. JTextArea
解 答容器java.awt.Container是Component的子类,一个容器可以容纳多个组件,并使它们成为一个整体。容器可以简化图形化界面的设计,以整体结构来布置界面。所有的容器都可以通过add()方法向容器中添加组件。有三种类型的容器:Window、Panel、ScrollPane,常用的有Panel, Frame,和Apple。
JPanel是Java图形用户界面(GUI)工具包中的面板容器类,包含在javax.swing包中,是一种轻量级容器,可以加入到JFrame窗体中。 JPanel默认的布局管理器是FlowLayout,其自身可以嵌套组合,在不同子容器中可包含其他组件(component),如JButton、JTextArea、JTextField 等,功能是对对窗体上的这些控件进行组合,相当于C++和C#中的Panel类。
6、根据以下代码段,下列说法中正确的是( )。public class Parent { private void m1(){} void m2(){} protected void m3(){}
public static void m4(){}
}
A. 子类中一定能够继承和覆盖Parent类的m1方法
B. 子类中一定能够继承和覆盖Parent类的m2方法
C. 子类中一定能够继承和覆盖Parent类的m3方法
D. 子类中一定能够继承和覆盖Parent类的m4方法
解 答Java继承关键字:
A. private只在本类中可见B. 缺省修饰符(default)只在本类中可见C. protected可以在本类及其子类中可见
D. static静态方法是属于类本身的,在编译阶段就已经确定函数名和地址,并已经分配了内存,所以不存在运行时期多态的判断,他只是一个静态绑定,所以无法重写。
7、given the following code,what will be the output?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 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. 15 0 20
B. 15 0 15
C. 20 0 20
D. 0 15 20
解 答
将以上代码中的second()函数改为如下代码,会看得更清晰:
public void second(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实践也是另外的一个变量,名字相同了而已,这个估计也是纠结的重点。
8、非抽象类实现接口后,必须实现接口中的所有抽象方法,除了abstract外,方法头必须完全一致.
A. 正确
B. 错误
解 答
方法头指:修饰符+返回类型 +方法名(形参列表)。
实际上这道题考查的是两同两小一大原则:(实现类中的方法并不一定与父类完全一致,遵循两同两小一大原则即可)
- 方法名相同,参数类型相同,
- 子类返回类型小于等于父类方法返回类型,
- 子类抛出异常小于等于父类方法抛出异常,
- 子类访问权限大于等于父类方法访问权
注:1.实现接口方法的约束和子类覆盖父类方法的约束基本上是一样的,但接口有一点特殊的地方是接口的方法默认是public abstract,所以在实现接口方法的时候,也必须使用public
2. “子类抛出异常小于等于父类方法抛出异常”——不管父类抛出何种异常,子类可以不抛出任何异常。同样的,如果接口方法定义抛出某种异常,在实现这个接口方法的时候,可以抛出小于等于接口方法异常的异常,也可以不抛出任何异常。
9、以下代码执行的结果显示是多少()?
A. 505000
B. 0
C. 运行时错误
D. 5050
解 答
10、已知 boolean result = false,则下面哪个选项是合法的:
A. result=1
B. result=true;
C. if(result!=0) {//so something…}
D. if(result) {//do something…}
解 答
1、boolean类型只有两个直接量值:true和false. 2、除成员变量会有默认初始值外,其他变量必须在第一次使用之前初始化boolean类型的默认值是false;
其余的7种基本类型默认值:
byte是 (byte)0;
short是 (short)0;
int是 0;
long是 0L;
float 是0.0f;
double 是0.0d;
char是 \u0000.
3. 和C/C++中的不同,Java中的Boolean类型只能是true和false,且只能与Boolean类型进行比较,不能赋0、1之类的值,也不能和0、1进行比较