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{}


1167156-20181130151334230-1392330073.png
 选c,finally代码一定会被执行; 
 return -1这个断点不会立即返回,要finally再返回-1;
1167156-20181130151334846-514275391.png
  1167156-20181130151335324-2114917967.png
 以finally里面的return为准,否则,以catch最后的return为准;
  1167156-20181130151336765-1003428503.png
 子类的方法不能缩小父类的访问权限;
   1167156-20181130151337255-1098995664.png
  floor取比-4最小的整数;
  round四舍五入;
  ceil取大的接近的整数;

1167156-20181130151338036-311418630.png
  1167156-20181130151338601-1953787165.png
 
1167156-20181130151339243-1865164601.png
 输出Equal:
 虚拟机的内存:
 栈区;堆区;代码数据区;

1167156-20181130151339714-523602756.png
  1167156-20181130151340099-778203446.png
 
 (1)一旦new,cat引用会放在栈区;
 堆区会创建cat对象放在这里,引用指向堆区;

(2)如果在主函数里面:int a=1;
     会直接放在栈区里面;

1167156-20181130151340756-1932331187.png
1167156-20181130151341181-386366202.png
 
(3)静态数据变量直接存放在代码区里面;
 代码区是指挥中心,数据步骤;堆区和栈区存放数据类型信息; 
1167156-20181130151341790-993225678.png
1167156-20181130151342277-1699818658.png
 
abc放在堆区;String pool字符串池;对象池的概念;
String a="abc"; a和s会通过字符池指向同一块空间;
 这时,s和a的 地址是一样的;
==看地址,不是内容;
1167156-20181130151342821-1101327527.png
 如果是拼接,地址是改不过来的;
1167156-20181130151343435-482860484.png
 
 如果是new,就没有地址池概念,不在对象池里面找
会栈区开辟K,指向堆区,开辟地址;

1167156-20181130151343837-906837914.png
  此时a和b比较的是地址,不相等;
  但是equals比较的是内容相同;
  
  如果希望在子类中去调用父类的构造方法,
  要求在子类的  构造函数中去调用;
1167156-20181130151344565-908333327.png
 super用父类的构造方法去初始化子类的成员变量;
 super必须要放在最前面;
1167156-20181130151345286-1102573343.png
 

Java基础测试题

关键字:java

1、下面的语句哪行在编译时没有警告和编译错误

a)float f=1.3;//1.3double类型,赋给float需要加1.3f

b)char c="a";//char类型赋值是不可以用""只能用''

c)byte b=257;//byte类型赋值不能超过127,否则越界报错

d)boolean b=null;//boolean类型不能赋空值,只能赋truefalse

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{}

 

4byte类型的大小是

a)-128127 //正确

b)-28-128

c)-255256

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)50的序列会被输出  

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));//解决办法在Stringsubstring方法

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构造方法");

    }

}  






转载于:https://www.cnblogs.com/xuxaut-558/p/10044334.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值