资源描述
1. 面向对象的特征有哪些?详细描述各自的特点。
抽象:抽象类不能产生对象,即不被实例化,必须被子类继承; 有抽象方法的类一定为抽象类,但为抽象类的不一定有抽象方法,抽象方法必须被子类重写;
多态:相同的行为,不同的实现;1)静态多态:程序在编译时系统就能决定调用那个方法(重载);2)动态多态:在运行期才知道调用哪一个里面的方法(重写、动态绑定);
封装:影藏实现细节的过程;1)类的成员变量可为只读或只写;2)类可以对存储在成员变量中的内容有一个整体的控制;3)类的用户不需要知道类是如何存储数据的(important);
继承:通过扩展一个已有的类,并继承该类的属性和行为;1)代码的可重用性;2)父类的属性和方法可用于子类;3)子类可以扩展父类的属性和方法;4)使设计应用程序变得更简单;
2. Java程序的执行过程是怎样的?
*.java编译(*.class文件)---加载 --- 字节码校验 --- 解释并运行(JVM)
加载过程:
类加载 --- 连接(验证、准备、解析)--- 初始化
3. 什么是静态初始化块?什么是实例初始化块?
在程序运行时就开始被初始化( static{} ); 实例初始化块相当于构造方法,必须在new 之后才会被初始化( {} );
4. 写出main方法的完整定义?static可以写在public前面吗?
Public static void main(String [] args){
}
Static public void main(String [] args){
}
5. JDK与JRE分别是什么?
JDK是Java的开发工具;而JRE是Java的运行环境;
6. swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
Switch后只能跟整型(int short) 和 byte 的数据;
7. Java的数据类型有哪些?
基本数据类型(整型:byte 、short、int、long ;浮点型:float、double;字符型:char;布尔型:boolean)、引用数据类型(类:class;接口:interface;数组) ;
8. Java引用数据类型有哪些?
应用数据类型有:类class 、 接口 interface 、 数组;
9. 类变量与成员变量的区别?
类变量:局部变量(静态变量);
成员变量:即为全局变量(对象的属性);
10. 访问修饰符有哪几种?它们之间的区别是什么?
Public (所有类均可访问)
Protected (该类及其成员的子类,非同包非子类不行)
默认 (只有同包中可访问)
Private (只有自己这个类可以访问)
11. int与Integer的区别?
int 是基本数据类型中的整性;Integer 是包装类中的整型;
12. 对对象进行比较怎么做?为什么不用“= =”?
通过调用equals()方法进行两个对象地址的比较 ; “==”表示 比较 确定的值;
13. 接口与抽象类的区别?
接口interface用来被实现,必须重写里面的所有方法,无构造方法;抽象abstract必须被继承;
14. this、super的用法与区别?
This调用表示 当前对象的调用;
Super调用表示 重写父类的构造器,来显示的引用父类继承的成员变量或方法;
15. Java中产生对象的方式有哪些?
通过调用new 来生成一个新的对象;
反射;
反序列化serializable;
克隆 cloneable;
(同步关键字:synchronized)
16. 什么是多态?多态的实现包括哪些方面?
多态:相同的行为,不同的实现;有:静态多态(重载)、动态多态(重写)、动态绑定;
17. 抽象类和界面的区别?
接口用来被实现,必须重写里面的所有方法;抽象必须被继承;
18. 如果父类中某些方法不包含逻辑,需要由子类来重写,应该使用什么关键字来声明此父类?
Abstract;
19. 构造方法的作用?
初始化当前成员变量;产生对象;
20. 构造方法能不能被重写、重载、继承,其修饰符能不能声明为private?
21. 在构造方法中使用super()是调用了什么方法?
Super()调用了父类的构造器;
22. final、finally、finalize的区别?
Final: 修饰类(不能被继承)、修饰属性(不能被修改)、修饰方法(不能被重写);
Finally: 用在try.... Catch.....之后,一定会被执行的;
Finalize:对象的finaliza()方法,对象被回收之前会调用的方法;
23. 请说出System.out.println(Math.round(11.5))的结果?Math.round(-11.5)呢?
Round 四舍五入(11.5 = 12) ; floor 向下取整(11.5 = 11);
Ceil 向上取整(11.0001 = 12);
System.out.println(Math.round(11.5)) 的结果: 12;
Math.round(-11.5) 的结果: -11;
24. 数组有没有length()这个方法? String有没有length()这个方法?
没有;
String 有length()方法 ,表示返回此字符串的长度
25. try-catch-finally三个基本块的作用?catch里的代码是干什么
Try块的代码会被保护;当try块中代码发生异常的时候,catch块就会去捕获该异常;
Finally块是在最后一定会被执行的代码块;
26. 说一下Error这个类。需要捕获它吗?
不需要;
27. java中集合框架的顶层界面是哪个?
JCF(JAVA集合框架):collection(list、set)放单一对象的元素 、 map(hashmap、treemap) 放键-值对象的元素;
28. 在集合框架中,要实现自定义排序应该实现哪个界面?
Set(treeSet) 、 map(treeMap);
29. 启动线程调用什么方法?
Thread th = new Thread ();
Th.start();
30. 在类OuterClass里有个内部类InnerClass,将OuterClass编译完成后会生成几个class档,分别是什么?
内部类InnerClass 会生成class(外面类名.door)
31. 什么是线程同步?其关键字是什么?
线程同步指:一件事发生后另一件事接着发生;关键字是synchronized;
(线程同步有两种:同步方法、同步块;)
32. ArrayList与LinkedList的区别是什么?
ArraryList指数组结构,
LinkedList 指链表结构,
33. 举出常用的list类。哪种情况用哪种好?
Arrarylist 数组结构 linklist 链表结构 vector (线程同步,效率低)
如从最后增、删元素 或是 查询元素 时 用 Arrarylist效率高;
如从中间 或 前面增、删元素 时 用 Linklist 效率高;
JDK1.2后,线程不安全(异步),但效率高;
34. list与set的区别?里面常用的类有哪些?
List类中的元素 有序 且 可重复 ;(arrayList linkList Vector)
Set 类中的元素 无序(放进的与最终的顺序不同) 且 不可 重复;(hashSet TreeSet)
35. Hashtable和HashMap的区别?
Hashtable JDK1.0 的集合类,线程同步 (安全,效率低),不允许空键和空值;
Hashmap JDK1.2 的集合类,线程不安全,效率高, 允许空键和空值;
36. 循环遍历ArrayList的方法有几种?分别是什么?
1)for循环
2)迭代器
Iterator it = list Iterator ( ) ;
While(it.hasNext){ }
3) foreach循环;(jdk1.5的访问方法)
37. 获取Class对象的方法有几种?分别是什么?
对象是 类 所对应的 类模版 产生的;
1) 先产生对象,再对象名.getClass();
2) 通过类名.class得到类模板对象;
3) Class.forName("全限定类名");即全路径:既包名+类名
38. Java中的注释有哪些?XML中的注释有哪些?
39. 序列化对象要实现哪个界面?
serializiable
40. 对象的序列化怎么实现的?
把一个对象转换成二进制数据输出;
(对象的反序列化:把二进制数据还原成/转换成内存中的过程)
41. 输入输出流分几种?
字节流 字符流 对象流
42. TCP/IP协议和UDP协议的区别?
Tcp 安全协议,可靠 ,效率低 (不全时会重来回经过三次连接)
Udp 不可靠;
43. XML的校验技术有几种?分别是什么?描述其各自的特点。
阅读代码,说出其执行结果。
44.
public class MyTest {
public int x;
static{
System.out.println("父类静态代码块");
}
public MyTest(){
System.out.println("父类构造方法");
}
public static void main(String[] args) {
new My();
new My();
}
}
class My extends MyTest{
static{
System.out.println("子类静态代码块");
}
public My(){
System.out.println("子类构造方法");
}
}
运行结果 :父类构造方法
子类构造方法
45.
class Person{
public int speak(int sm){
return sm+1;
}
}
class Man extends Person{
// 重载
public int speak(int sm, char c){
return sm+2;
}
public static void main(String[] args){
Man man=new Man();
System.out.println(man.speak());
}
运行结果: 1
46.
public class TestAry{
public static void main(String args[]){
int[] ary = new int[10];
System.out.println(ary[10]);
}
}
运行结果:ArrayIndexOutOfBoundsException,运行时异常
47.
public class TestThread extends Thread{
public static void main(String args[]){
TestThread tt = new TestThread();
tt.start();
}
public void start(){
System.out.println(“进入start方法”);
}
public void run(){
System.out.println(“进入run方法”);
}
}
运行结果:进入start方法;(不会启动的)
48.
class Person{
public Person(){
System.out.print(“Person”);
}
}
class Man extends Person{
public Man(){
System.out.print(“Man”);
}
public static void main(String[] args){
Man b=new Man();
}
}
运行结果:PersonMan(先调父person,在调子man)
49.
public class Test{
public static void main(String args[]) {
Test t = new Test();
t.show();
}
public void show(){
int a;
System.out.println(a);
}
}
运行结果:编译时会报错,每一个之前都需初始化;
50.
public class Count{
static int cnt;
public int addCnt(){
cnt++;
return cnt;
}
public static void main(String args[]){
Count count=new Count();
count.addCnt();
System.out.println(count.addCnt());
}
}
运行结果:2
51.
public class Compute{
public int comp(){
return 1%5;
}
public static void main(String[]args){
new Compute();
System.out.println(comp());
}
}
运行结果: 1
52.
public class TestException{
public static String str="";
public static void strAdd(boolean flag){
try {
if(flag){
throw new Exception();
}
str+="a";
} catch(Exception e){
str+="b";
return;
} finally{
str+="c";
}
str+="d";
}
public static void main(String args[]){
strAdd(false);
strAdd(true);
System.out.println(str);
}
}
运行结果:acdbc
53.
public class PrintChar{
static String str;
public static void main(String args[]){
char c=str.charAt(0);
System.out.print(c);
}
}
运行结果:NullPointerException(运行时错误)
54.
public class TestString{
public static void strAdd(String str){
str=str+”java”;
}
public static void bufAdd(StringBuffer sb){
sb=sb.append("java");
}
public static void main(String args[]){
String str=new String("java");
StringBuffer sb=new StringBuffer("lovo");
strAdd(str);
bufAdd(sb);
System.out.println(str+sb);
}
}
运行结果:java+lovojava
展开阅读全文