黑马程序员——Java基础

百科知识2025-04-262

          ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
Java基础---练习题
1.写出程序结果class Demo{public static void func(){try{{throw new Exception();}finally{System.out.println("B");} } } public static void main(String[] args) { try { func(); System.out.println("A"); } catch (Exception e) { System.out.println("C"); } System.out.println("D"); }}
结果是:编译失败,如果func上声明了该异常,

结果是: B
C



2.写出程序结果
class Test{Test(){System.out.println("Test");}}class Demo extends Test{Demo(){System.out.println("Demo");}public static void main(String[] args) {new Demo();new Test();}}
结果是:Test                       Demo                      Test考的是子类的实例化过程



3.写出程序结果interface A{}class B implements A{public String func(){return "func";}}class Demo{public static void main(String[] args){A a=new B();System.out.println("a.func");}}
结果是:编译失败,因为A接口中并未定义func()方法。



4.写出程序结果
class Fu{boolean show(char a){System.out.println(a);return true;}}class Demo extends Fu{public static void main(String[] args) {int i=0;Fu f=new Demo();Demo d=new Demo();for(f.show('A');f.show('B')&&(i<2);f.show('c')){i++;d.show('D');}}boolean show(char a){System.out.println(a);return false;}}
结果是:A                                   B




5.写出程序结果
interface A{}class B implements A{public String Test(){return "yes";}} class Demo{static A get(){return new B();}public static void main(String[] args){A a=get();System.out.println(a.test);}}
结果是:编译失败,因为A接口中没有定义Test方法



6.写出程序结果
class Super{int i=0;public Super(String a){System.out.println("A");i=1;}public Super(){System.out.println("B");i+=2;}}class Demo extends Super{public Demo(String a){System.out.println("C");i=5;}public static void main(String[] args) {int i=4;Super d=new Demo("A");System.out.println(d.i);}}
结果是:BC5



7.补足代码
interface Inter{void show(int a,int b)void func();}class Demo{public static void main(String [] args){//补足代码:调用两个函数,要求用匿名内部类Inter in=new Inter(){public void show(int a,int b){

}public void func(){

}};in.show(4,5)in.funct();}}

8.写出程序结果 class TD{int y=6;class Inner{static int y=3;void show(){System.out.println(y);}}}class Tc{public static void main(String[] args) {TD.Inner ti=new TD().new Inner();ti.show();}} 编译失败,非静态内部类中不可以定义静态成员内部类中如果定义了静态成员,该内部类必须被静态修饰

9.选择题,写出错误答案错误的原因 class Demo{int show(int a,int b){return 0;}} 下面那些函数可以存在于Demo的子类中。 A. public int show(int a,int b) {return 0; } 可以,因为覆盖。 B.private int show(int a,int b) {return 0; } 不可以,权限不够。 C.private int show(int a,long b) {return 0; } 可以,和父类不是一个函数,没有覆盖,相当于重载。D.public short show(int a,int b) {return 0; } 不可以,因为该函数不可以和给定函数出现在同一类中,或子父类中。E.static int show(int a,int b){return 0;} 不可以,因为静态只能覆盖静态。 10.写出this关键字的含义,final有哪些特点?this 用于区*部变量和成员变量同名的情况 this代表本类对象,简单的说,哪儿对象在调用this所在的函数,                   this就代表哪个对象。final:最终。作为一个修饰符1,可以修饰类,方法,变量。2,被final修饰的类不可以被继承,为了避免被继承,被子类复写功能。3,被final修饰的方法不可以被复写(覆盖)。4,被final修饰的变量是一个常量,只能被赋值一次。既可以修饰成员变量又可以修饰局部变量。描述事物时,               一些数据的出现值是固定的,那么这时为了增强阅读性,都给这些值起个名字,方便于阅读,而这个值是不                需要改变的,所以加上final修饰。作为常量:书写时所有字母都要大写,如果由多个单词组成,单词间通过_              连接。5,内部类只能访问被final修饰的局部变量

11.写出程序结果 class Fu{int num=4;void show(){System.out.println("showFu");}}class Zi extends Fu{int num=5;void show(){System.out.println("showZi");}}class T{public static void main(String[] args) {Fu f=new Zi();Zi z=new Zi();System.out.println(f.num);System.out.println(z.num);f.show();z.show();}} 结果是:  45showZishowZi 12.补足代码 interface A{void show();}interface B{void add(int a,int b)}class C implements A,B{private int a,b;public void add(int a,int b){this.a=a;this.b=b;}public void show(){System.out.println(a+b);}}class D{public static void main(String[] args) {C c=new C();c.add(4,2);c.show();//通过该函数打印以上两个数的和。}}

13.写出程序结果

class Demo{public static void main(String[] args){try{showExce();System.out.println("A");}catch (Exception e){System.out.println("B");}finally{System.out.println("C");}System.out.println("D");}public static void showExce()throw Exception {throw new Exception();}} 结果是:  BCD

14.写出程序结果class Super{int i=0;//Super(){}public Super(String s){i=1;}}class Demo extends Super{public Demo(String s){i=2;}public static void main(String[] args) {Demo d=new Demo("yes");System.out.println(d.i);}} 结果是:编译失败,因为父类中缺少空参数的构造函数或者子类应该通过Super语句指定要调用的父类中的构造         函数 15.写出程序结果class Super{public int get(){return 4;}}class Demo15 extends Super{public long get(){return 5;}public static void main(String [] args){Super s=new Demo15();System.out.println(s.get());}} 结果是:编译失败,因为子类父类中的get方法没有覆盖但是子类调用时候不能明确返回值是什么类型的。                      所以这样的函数不能存在于子父类中。 16.写出程序结果class Demo{public static void func(){try{throw new Exception;System.out.println("A");}catch (Exception e){System.out.println("B");}}public static void main(String [] args){try{func();}catch (Exception e){System.out.println("C");}System.out.println("D");}} 结果是:编译失败,因为打印"A"的语句执行不到。记住:throw单独存在,下面不要定义语句,因为执行不到。

17.选择题class Demo {public void func(){//位置1;}class Inner{}public static void main(String [] args){Demo D=new Demo();//位置2;}} A 在位置1写 new Inner();B 在位置2写 new Inner();C 在位置2写 new d.Inner();D 在位置2写 new Demo.Inner();结果是:  A对,B错 因为主函数是静态的如果要访问Inner需要被static修饰,C错 格式错误,new new demo().Inner();D错 因为Inner不是静态的格式  Outer.Inner in=new Outer().new Inner() 18.写出程序结果 class Exc0 extends Exception{}class Exc1 extends Exc0{}class Demo{public static void main(String [] args){try{throw new Exc1;}catch (Exception e){System.out.println("Exception");}catch(Exc0 e){System.out.println("Exc0");}}} 结果是:编译失败,多个catch时,父类的catch要放到下面。 19.补足代码interface Test{void func();}class Demo{public static void main(String[] args) {//补足代码,(匿名内部类)new Demo().show(new Test(){public void func(){}}});void show(Test t){t.func();}} 20.写出程序结果 class Test{public static String output="";public static void foo(int i){try{if(i==1)throw new Exception();output+="1";}catch (Exception e){output+="2";return;}finally{output+="3";}out+=4;}public static void main(String args[]);{foo(0);System.out.println(output) foo(1);System.out.println(output)}} 结果是:134    13423

21.补足compare函数内的代码,不许添加其他函数

class Circle{private static double pi=3.14;private double radius;public static double compare(Circle[] cir){//程序代码//其实就是在求数组中的最大值int max=0;for(int x=1;xcir[max])max=x;}return cir[max].radius;}}class TC{public static void main(String [] args){Circle cir []=new Circle[3];//创建了一个类类型数组Cir[0]=new Circle(1.0);Cir[1]=new Circle(2.0);Cir[2]=new Circle(4.0);System.out.println("最大的半径值是:"+Circle.compare(cir));}} 22.写出程序结果 public class Demo{private static int j=0;private static boolean methodB(int k){j+=k;return true;}public static void methodA(int i){boolean b;b=i<10|methodB(4);b=i<10||methodB(8);}public static void main(String[] args) {methodA(0);System.out.println(j);}} 结果是:4

23.在一个类中编写一个方法,这个方法搜索一个字符数组中是否存在某个字符,如果存在,则返回这个字符在数组,第一次出现的位置(序号从0开始计算)否则返回-1,要搜索的字符数组和字符都以参数形式传递给该方法,如果传入的数组为null,应该抛出IllegalArgumentsException异常在类的main方法中以各种可能出现的情况测试验证该方法编写的是否正确,例如,字符不存在,字符存在,传入的数组为null等。

getIndex(null,'a');public int getIndex(char [] arr,char key){if(arr==null)throw new IllegalArgumentsException("数组为null");for(int x=0;x24.补足compare函数的代码,不许添加其他函数 class Circle{private double radius;public Circle(double r){radius=r;}public Circle compare(Circle cir){//程序代码return (this.radius>cir.radius)?this:cir;

}}class TC{public static void main(String[] args) {Circle cir1=new Circle(1,0);Circle cir2=new Circle(2,0);Circle cir;if(cir1==cir)System.out.println("圆1的半径比较大");elseSystem.out.println("圆2的半径比较大");}}