java基础面试题答案.doc
ava基础1:jdk,jre,jvm分别是什么JRE(Java Runtime Environment,Java运行环境),运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。JVM是Java虚拟机JDK是Java Develop Kit,Java的开发工具包2:3:public,protect和private区别public人缘好,跟谁都好,protect只和熟人好,private比较自闭不过他们是三胞胎class是他们的爹谁大你看着办吧4:this有两种用法public class Test private String name;private int age;public Test() public Test(String name) / this代表这个类声称后的对象,在内部可以取得这个类的属性this.name = name;public Test(String name, int age) / 这是第二中用法,跟第一种概念不一样,他值调用这个类的具有一个参数的构造方法this(name);/ this代表这个类声称后的对象,在内部可以取得这个类的属性this.age = age;public String getName() / this代表这个类声称后的对象,在内部可以取得这个类的属性return name;public void setName(String name) / this代表这个类声称后的对象,在内部可以取得这个类的属性,这里的是外部变量,跟是内部的属性,存放地质是不一样的。this.name = name;public String getRealName() / 类内部所以可以引用内部方法,把堪称是这个类声称后的对象在内部的调用就方便理解多了return this.getName() + "John"5:Java基本类型共有八种,基本类型可以分为三类,字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。数值类型又可以分为整数类型byte、short、int、long和浮点数类型float、double。JAVA中的数值类型不存在无符号的,它们的取值范围是固定的,不会随着机器硬件环境或者操作系统的改变而改变。实际上,JAVA中还存在另外一种基本类型void,它也有对应的包装类 java.lang.Void,不过我们无法直接对它们进行操作。8 中类型表示范围如下:byte:8位,最大存储数据量是255,存放的数据范围是-128127之间。short:16位,最大数据存储量是65536,数据范围是-3276832767之间。int:32位,最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。long:64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。float:32位,数据范围在3.4e-451.4e38,直接赋值时必须在数字后加上f或F。double:64位,数据范围在4.9e-3241.8e308,赋值时可以加d或D也可以不加。boolean:只有true和false两个取值。char:16位,存储Unicode码,用单引号赋值。6:解释一下=号,他比较的是一个对象在内存中的地址值,比如2个字符串对象String s1 = new String("str");String s2 = new String("str");如果用=号比较,会返回false,因为创建了两个对象,他们在内存中地址的位置是不一样的。equals的情况比较复杂,它是java.lang.Object类中的一个方法。因为java中所有的类都默认继承于Object,所以所有的类都有这个方法。在Object类源码中是这样写的。public boolean equals(Object obj) return (this = obj);他同样使用=号进行内存地址的比较。但是许多java类中都重写了这个方法,比如String。public boolean equals(Object anObject) if (this = anObject) return true; if (anObject instanceof String) String anotherString = (String)anObject; int n = count; if (n = anotherString.count) char v1 = value; char v2 = anotherString.value; int i = offset; int j = anotherString.offset; while (n- != 0) if (v1i+ != v2j+) return false; return true; return false; String里的方法,如果=号比较不相等,还会进行一下值的比较。所以equals方法具体的作用要看当前的那个类是如何实现重写父类中该方法的。如果没有重写该方法,那么他和=号等价。1.2. this关键字含义,用法3. java中的基本数据类型4. =和equals的区别5. break和continue的区别6. switch里的参数7. final,finally和finalize的区别8. Collection和Collections的区别9. String,StringBuffer,StringBuild区别10. List、Map、Set三个接口,存取元素是,各有什么特点面向对象11. 面向对象特征分别是什么12. 重写和重载的区别13. 继承和多态的区别14. 抽象类和接口区别高级15. 进程线程的区别16. 启动一个线程是用run()还是start()区别17. sleep()和wait()区别18. 线程的状态19. Error ,RuntimeException, Excception区别扩展20. Java的垃圾回收机制21. 内存泄露举例22. Java中的强引用和软引用区别23. 简述守护线程24. java与c+进程怎么通信编程运行结果1.运行结果原理class A /*父类构造方法*/ public A() System.out.println("A constructor"); /*父类静态块*/ static System.out.println("A static Block"); /*父类非静态块*/ System.out.println("A non-static Block"); /*父类静态方法*/ public static void printStaticMethod() System.out.println("A print Static Method"); /*父类普通方法*/ public void printNormalMethod() System.out.println("A print Normal Method"); class B extends A /*子类1构造方法*/ public B() System.out.println("B constructor"); /*子类1静态块*/ static System.out.println("B static Block"); /*子类1非静态块*/ System.out.println("B non-static Block"); /*子类1静态方法*/ public static void printStaticMethod() System.out.println("B print Static Method"); /*子类1普通方法*/ public void printNormalMethod() System.out.println("B print Normal Method"); class C extends A /*子类2构造方法*/ public C() System.out.println("C constructor"); /*子类2静态块*/ static System.out.println("C static Block"); /*子类2非静态块*/ System.out.println("C non-static Block"); /*子类2静态方法*/ public static void printStaticMethod() System.out.println("C print Static Method"); /*子类2没有override父类的普通方法*/public class Test public static void main(String args) A a1 = new B(); A a2 = new C(); a1.printStaticMethod(); a1.printNormalMethod(); a2.printStaticMethod(); a2.printNormalMethod(); A print Static MethodA print Normal Method2.代码块执行结果原理static int testtry() int ret=0; try ret =1; return ret; finally/ ret=3; System. out.println(ret); /先执行 try 里的代码,在执行 try 的 return 之前,要先执行final字句结果是3 finally block会在return之前执行如果 int a = testtry()那a 的值是1,输出3 编程序1. 创建多线程的两种方法举例2. 线程同步3. 冒泡排序4. 快速排序