java面试题

一:学习Java基础的目的?

  一、掌握基本的Java语言底层编码方法,同时掌握Java这门语言的编程思想,为了后期学习JavaEE打下基础,要不然在学习JavaEE的时候,连封装,继承,多态都不懂.
  二、在学习完JavaSE和JavaEE后招工作的时候能够答上面试题和笔试题(Java基础在面试的过程中也占不小的一部分)。

二:String是最基本的数据类型吗?

   String 是引用数据类型。基本数据类型包括byte、int、char、long、float、double、boolean和short。java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类,JDK1.5版本之后出现了StringBuilder,StringBuilder是线程不同步的,Stringbuffer是线程同步的,开发建议使用StringBuilder,,提高了效率。

三:String 和StringBuffer的区别

   JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。

四:Java语言的基础开发工具是:( JDK ),集成开发工具是: ( Eclipse )

五:已知字符a的编码是97,大写字符A的编码是65,而且大写字符和小写字符的编码都是连续的,则小写字符e和大写字符E的编码依次是:(101,69)

 

六:修改以下代码中的错误:

  char c = 100000;数值超出char的取值范围 

七:Java有没有goto?

  java中的保留字,现在还没有在java中使用。其实goto这个词是C语言中的,goto语句通常与条件语句配合使用,可用来实现条件转移, 构成循环,跳出循环体等功能。而在结构化程序设计中一般不主张使用goto语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难。但是在java语言中,goto这个词只是作为了保留字,还没有使用。那是因为java语言讲究简单,方便。

八:一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?

  可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。

九:在Java中,字符串是作为 对象 出现的。

十:是否可以继承String类?

    String是被final修饰的最终类,不能被继承

 

 十一:程序结果:

public class Test extends Fu {
	public static void main(String[] args) {
		int i = 0;
		Fu f = new Test();
		Test t = new Test();
		for(f.show('A');f.show('B') && (i<2);f.show('C')){
			i++;
			t.show('D');
		}
		
	}
	boolean show(char a){
		System.out.println(a);
		return false;
	}
}
class Fu{
	boolean show(char a){
		System.out.println(a);
		return true;
	}
}
//结果为A B

  

 1 public class Test extends Fu {
 2     public static void main(String[] args) {
 3         A a = new B();
 4         System.out.println(a.func());//编译失败,因为a所属的A接口没有定义func方法
 5     }
 6 }
 7 interface A{}
 8 class B implements A{
 9     public String func(){
10         return "func";
11     }
12 }
 1 public class Test extends Fu {
 2     public static void main(String[] args) {
 3         A a = get();//相当于   A a = new B();
 4         System.out.println(a.test());//编译失败,因为a所属的A接口没有定义test方法
 5     }
 6     static A get(){
 7         return new B();
 8     }
 9 }
10 interface A{}
11 class B implements A{
12     public String test(){
13         return "yes";
14     }
15 }
 1 public class Test extends Super {
 2     public static void main(String[] args) {
 3         int i = 4;
 4         Super d = new Test("A");
 5         System.out.println(d.i);
 6     }
 7     public Test(String a){
 8         //super();//走的是父类的空参数构造函数
 9         System.out.println("C");
10         i+=5;
11     }
12 }
13 class Super{
14     int i = 0;
15     public Super(String a){
16         System.out.println("A");
17         i = 1;
18     }
19     public Super(){
20         System.out.println("B");
21         i+=2;
22     }
23 }
24 //结果是B C 7
 1 public class Test {
 2     public static void main(String[] args) {
 3         //补足代码,调用两个函数,用匿名内部类
 4         Inter in = new Inter(){
 5             public void func() {
 6             }
 7             public void show(int a, int b) {
 8             }
 9         };
10         in.func();
11         in.show(3, 5);
12     }
13 }
14 interface Inter{
15     void show(int a,int b);
16     void func();
17 }
 1 public class Test {
 2     public static void main(String[] args) {
 3         TD.Inner ti = new TD().new Inner();
 4         ti.show();
 5     }
 6 }
 7 class TD{
 8     int y = 6;
 9     class Inner{
10         static int y = 3;//编译失败,非静态内部类中不能有静态成员
11         void show(){
12             System.out.println(y);
13         }
14     }
15 }
 1 class fu{
 2     int num = 4;
 3     void show(){
 4         System.out.println("showfu");
 5     }
 6 }
 7 class zi extends fu{
 8     int num = 5;
 9     void show(){
10         System.out.println("showzi");
11     }
12 }
13 class T{
14     public static void main(String[] args){
15         fu f = new zi();
16         zi z = new zi();
17         System.out.println(f.num);//4
18         System.out.println(z.num);//5
19         f.show();//showzi
20         z.show();//showzi
21     } 
22 }

十二:写出错误答案错误原因,用单行注释的方式

 1 class Demo{
 2     int show(int a,int b){
 3         return 0;
 4     }
 5 }
 6 下面那些函数可以在Demo的子类中存在
 7 A.public int show(int a ,int b){return 0;}//可以,覆盖
 8 B.private int show(int a ,int b ){return 0;}//不可以,权限不够
 9 C.private int show(int a,long b){return 0;}//可以,子类特有的方法
10 D.public short show (int a,int b){return 0;}//不可以,调用的不确定性,当调用show方法是不知道返回short 还是int
11 E.static int show(int a ,int b){return 0;}//不可以,静态只能覆盖静态 

十三:写出this关键字的含义,final有哪些特点

十四:

十五:多线程面试题

 1 class Test implements Runnable{
 2     public void run(Thread t){
 3     }
 4 }
 5 //如果错误 错误发生在哪一行?错误在第一行,应该被abstract修饰,因为run方法没有被覆盖
 6 
 7 
 8 class ThreadTest{
 9     public static void main(String[] args) {
10 
11         new Thread(new Runnable(){
12             public void run(){
13                 System.out.println("runnable run");
14             }
15         })
16         {
17             public void run(){
18                 System.out.println("subThread run");
19             }
20         }.start();//结果是subThread run
21 
22 
23         /*
24         new Thread()
25         {
26             public void run()
27             {
28                 for(int x=0; x<50; x++)
29                 {
30                     System.out.println(Thread.currentThread().getName()+"....x="+x);
31                 }
32 
33             }
34         }.start();
35         
36         for(int x=0; x<50; x++)
37         {
38             System.out.println(Thread.currentThread().getName()+"....y="+x);
39         }
40         Runnable r = new Runnable()
41         {
42             public void run()
43             {
44                 for(int x=0; x<50; x++)
45                 {
46                     System.out.println(Thread.currentThread().getName()+"....z="+x);
47                 }
48             }
49         };
50         new Thread(r).start();
51 
52         */
53         
54     }
55 }
原文地址:https://www.cnblogs.com/LO-ME/p/3561613.html