JAVA入门到精通-第28讲-面试题讲解
3、下面的哪一组代码会出现编译错误
a) import
java.awt.*; //会出现编译错误,打包命令package应在首行
package
Mypackage;
class
Myclass{}
b) package
MyPackage;
import
java.awt.*;
class
MyClass{}
c) /*This
is a comment*/
package
MyPackage;
import
java.awt.*;
class
MyClass{}
Java基础测试题
关键字:java
1、下面的语句哪行在编译时没有警告和编译错误
a)float f=1.3;//1.3是double类型,赋给float需要加1.3f
b)char c="a";//char类型赋值是不可以用""只能用''
c)byte b=257;//byte类型赋值不能超过127,否则越界报错
d)boolean b=null;//boolean类型不能赋空值,只能赋true或false
e)int i=10;//正确,无报错
2、下面的代码编译后会出现什么问题
public class MyClass{
public
static void main(String arguments[]){
amethod(arguments);
}
public
void amethod(String[] arguments){
System.out.println(arguments);
System.out.println(arguments[1]);
}
}
a)错误,不能静态引用amethod方法 //正确
b)错误,main方法不正确
c)错误,数组必须包含参数
d)amethod必须声明为static类型
3、下面的哪一组代码会出现编译错误
a) import
java.awt.*; //会出现编译错误,打包命令package应在首行
package
Mypackage;
class
Myclass{}
b) package
MyPackage;
import
java.awt.*;
class
MyClass{}
c) /*This
is a comment*/
package
MyPackage;
import
java.awt.*;
class
MyClass{}
4、byte类型的大小是
a)-128~127 //正确
b)-28-1~28
c)-255~256
d)不同的操作系统java虚拟机分配不同的大小
5、下面的代码在输入下面的命令行后输出什么内容
命令行:java myprog good morning
代码:
public class myprog{
public
static void main(String argv[]){
System.out.println(argv[2]);//从命令行java myprog后传入两个数
}
}
a)myprog
b)good
c)morning
d)Exception
raised:"java.lang.ArrayIndexOutOfBoundsException:2"//正确
6、下面哪个不是java的关键字或者保留字
a)if
b)then //不是java的关键字或者保留字
c)goto
d)while
e)case
*******************************************************************************
Java关键字列表(依字母排序共51组)
abstract,assert,boolean,break,byte,case,catch,char,class,const,continue,default,do,double,else,enum,extends,final,finally,float,for,if,implements,import,instanceof,int,interface,long,native,new,package,private,protected,public,return,short,static,strictfp,super,switch,synchronized,this,throw,throws,transient,try,void,volatile,while
Java保留字列表(依字母排序共14组:Java保留字是指现有Java版本尚未使用但以后版本可能会作为关键字使用)
byValue,cast,false,future,generic,inner,operator,outer,rest,true,var,goto,const,null
*******************************************************************************
7、下面哪些是合法的标志符(多选)
a)2variable //不能以数字打头
b)variable2 //正确
c)_whatavariable//正确
d)_3_ //正确
e)$anothervar //正确
f)#myvar //不能存有#号
8、试图编译运行下面的代码会发生什么情况
public class MyClass{
static
int i;//static静态变量可以不给初值,但是final必需要赋值
public
static void main(String argv[]){
System.out.println(i);
}
}
a)错误,变量i没有初始化
b)null
c)1
d)0 //正确
9、试图编译运行下面的代码会发生什么情况
public class Q{
public
static void main(String argv[]){
int
anar[]=new int[]{1,2,3};
System.out.println(anar[1]);
}
}
a)1
b)Error anar被引用前没有初始化
c)2 //正确
d)Error:数组大小没有定义
10、试图编译运行下面的代码会发生什么情况
public class Q{
public
static void main(String argv[]){
int
anar[]=new int[5];
System.out.println(anar[0]);
}
}
a)Error:anar is referenced before it is
initialized
b)null
c)0 //正确,数组没有被赋初值默认为0,不能为null空
d)5
11、试图编译运行下面的代码会发生什么情况
abstract class MineBase{
abstract
void amethod();
static
int i;
}
public class Mine extends MineBase{
public
static void main(String argv[]){
int[]
ar=new int[5];
for(i=0;i<ar.length;i++){
System.out.println(ar[i]);
}
}
}
a)5个0的序列会被输出
b)Error:ar在使用前要初始化
c)Error Mine必须被声明为abstract //正确
d)Error数组越界
12、试图编译运行下面的代码会输出什么样的结果
int i=1;
switch(i){
case
0:
System.out.println("zero");
break;
case
1:
System.out.println("one");
case
2:
System.out.println("two");
default:
System.out.println("default");
}
a)one
b)one,default
c)one,two,default //正确
d)default
13、试图编译运行下面的代码会输出什么样的结果
int i=9;
switch(i){
default:
System.out.println("default");
case
0:
System.out.println("zero");
break;
case
1:
System.out.println("one");
case
2:
System.out.println("two");
}
a)default
b)default,zero //正确
c)error default没有定义
d)无输出
14、下面的哪些组代码没有编译错误(多选)
a) int
i=0;
if(i){ //错误if中没有判断
System.out.println("Hello");
}
b) boolean
b=true;
boolean
b2=true;
if(b--b2){
System.out.println("So
true"); //正确
}
c) int
i=1;
int
j=2;
if(i==1||j==2)
System.out.println("OK"); //正确
d) int
i=1;
int
j=2;
if(i==1&|j==2) //错误,&|非法。单个&或|则正确
System.out.println("OK");
15、如果在当前目录下不存在Hello.txt文件,试图编译和运行下面代码会输什么
import java.io.*;
public class Mine{
public
static void main(String argv[]){
Mine
m=new Mine();
System.out.println(m.amethod());
}
public
int amethod(){
try{
FileInputStream
dis=new FileInputStream("Hello.txt");
}catch(FileNotFoundException
fne){
System.out.println("No
such file found");
return
-1;//虚拟机会记录,但要运行后finally语句块后才返回
}catch(IOException
ioe){
}finally{
System.out.println("Doing
finally");
}
return
0;
}
}
a)No such file found
b)No such file found,-1
c)No such file found,Doing finally,-1 //正确
d)0
16、在下面的注释处插入哪些部分代码是合法的(多选)
class Base{
public
void amethod(int i){}
}
public class Scope extends Base{
public
static void main(String argv[]){
}
//在这里定义一个方法
}
a)void amethod(int i)throws Exception{}//继承后方法重写,父类用什么访问类型重写也要有相同的类型才可以
b)void amethod(long i)throws Exception{}//正确,不是方法重写long类型不一样
c)void amethod(long i){}//正确,不是方法重写
d)public void amethod(int i)throws
Exception{}//继承后可以重写但不能抛异常
17、下面哪行代码输出-4.0
a)System.out.println(Math.floor(-4.7));//floor向下取个比它小的最近double -5.0
b)System.out.println(Math.round(-4.7));//ronud四舍五入返回一个数-5.0
c)System.out.println(Math.ceil(-4.7));//ceil向上取一个比它大的最近double -4.0
d)System.out.println(Math.min(-4.7));//Math.min(x,y)需要两个数进行比较
18、如果运行下面的代码会输出什么内容
String s=new String("Bicycle");
int iBegin=1;
char iEnd=3;
System.out.println(s.substring(iBegin,iEnd));//解决办法在String的substring方法
1)Bic
2)ic //正确
3)icy
4)error:没有匹配的方法substring(int,char)
19、给出下面的代码在注释部分放置什么样的代码会输出"Equal"
public class EqTest{
public
static void main(String argv[]){
EqTest
e=new EqTest();
}
EqTest(){
String
s="Java";
String
s2="java";
//place
test here{
System.out.println("Equal");
}else{
System.out.println("Not
equal");
}
}
}
a)if(s==s2)
b)if(s.equals(s2)//equals比较内容是否相同,区分大小写
c)if(s.equalsIgnoreCase(s2))//正确,equalsIgnoreCase不分大小写进行内容比较。
d)if(s.noCaseMatch(s2))
20、给出下面的代码,怎样调用Base的构造方法会输出"base constructor"
class Base{
Base(int
i){
System.out.println("base
constructor");
}
Base(){
}
}
public class Sup extends Base{
public
static void main(String argv[]){
Sup
s=new Sup();
//One
}
Sup(){
//Two
}
public
void derived(){
//Three
}
}
a)//One后放置Base(10);//无意义
b)//One后放置super(10);//无法放到One后面,语法错误(super代表直接指向父类)
c)//Two后放置super(10);//正确,如果希望在子类中去调用父类的构造方法,要求在子类的构造函数中去调用。
d)//Three后放置super(10);
-------------------------------------------------------------------------------
//super()的使用[Demo154.java]
public class Demo154{
public
static void main(String []args){
Son
son=new Son(11,"aa");
}
}
class Base{
int
age;
String
name;
public
Base(int age,String name){
System.out.println("调用父类Base构造方法");
this.age=age;
this.name=name;
}
}
class Son extends Base{
public
Son(int age,String name){
super(age,name);//super()方法必需放在子类构造函数的第一行
System.out.println("调用子类Son构造方法");
}
}