文章目录
-
- 1.重载和重写的区别
- 2. Java 面向对象编程三大特性:封装、继承、多态.
- 3.构造方法有哪些特性
- 4.静态方法和实例方法有何不同
- 5. 写出冒泡排序的算法
- 6. abstract class 和 interface 有什么区别?
- 7.java中会存在内存泄露吗?请简单描述
- 8.讲一下线程的几种实现方式?
- 9.多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?
- 10.sleep()和wait()有什么区别?
- 11. 谈谈你对面向对象的理解?
- 12. 简单讲一下java的跨平台原理
- 13. 说一下"=="和equals方法究竟有什么区别?
- 14. ArrayList和LinkedList的区别?
- 15. 讲一下HashMap和HashTable的区别?
- 16. 请说出集合类中List、Map、Set的区别
- 17. String、StringBuffer和StringBuilder的区别?
- 18.try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
- 19. &和&&的区别?
- 20. 构造器Constructor是否可被override?
- 21. super与this的区别?
- 22. GC是什么? 为什么要有GC?
- 23. 接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类?
- 24. 解释内存中的栈(stack)、堆(heap)和静态区(static area)的用法
- 25. 谈谈 JVM 的内存结构和内存分配?
- 26. 写出常见的5个RuntimeException
- 27. 阐述final、finally、finalize的区别.
- 28. 请说出与线程同步以及线程调度相关的方法
- 29. 如何通过反射创建对象?
- 30. 什么是双亲委派机制
- 31. ++i与 i++的区别?
- 32.hashCode 与 equals
- 33.Java 中的异常处理
- 34.BIO、NIO、AIO 有什么区别?
- 35.两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?
1.重载和重写的区别
重载: 发生在同一个类中,方法名必须相同,参数类型不同、个数不同、顺序不同,方法返回值和访问修饰符可以不同,发生在编译时。
重写: 发生在父子类中,方法名、参数列表必须相同,返回值范围小于等于父类,抛出的异常范围小于等于父类,访问修饰符范围大于等于父类;如果父类方法访问修饰符为 private 则子类就不能重写该方法。
2. Java 面向对象编程三大特性:封装、继承、多态.
封装
封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法,如果属性不想被外界访问,我们大可不必提供方法给外界访问。但是如果一个类没有提供给外界访问的方法,那么这个类也没有什么意义了。
继承
继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。通过使用继承我们能够非常方便地复用以前的代码。
关于继承如下 3 点请记住:**
- 子类拥有父类非 private 的属性和方法。
- 子类可以拥有自己属性和方法,即子类可以对父类进行扩展。
- 子类可以用自己的方式实现父类的方法。(以后介绍)。
多态
所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。
在Java中有两种形式可以实现多态:继承(多个子类对同一方法的重写)和接口(实现接口并覆盖接口中同一方法)。
概括:子类对象指向父类的引用
3.构造方法有哪些特性
- 名字与类名相同;
- 没有返回值,但不能用void声明构造函数;
- 生成类的对象时自动执行,无需调用。
4.静态方法和实例方法有何不同
-
在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。
-
静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制.
5. 写出冒泡排序的算法
for(int i=0;i<arr.length-1;i++){ //控制轮数
for(int j=0;j<arr.length-1-i;j++){ //控制每一轮的次数
if(arr[j]>arr[j+1]){ //每次都是和它下一个元素比
int t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;-
}
}
}
6. abstract class 和 interface 有什么区别?
abstract class interface
实例化 不能 不能
类 一种继承关系,一个类只能使用一次继承关系。 一个类可以实现多个interface
可以通过实现多个接口
数据成员 可有自己的 静态的不能被修改即必须是static final,一般不在此定义
方法 可以私有的,非abstract方法,必须实现 不能有私有的,默认是public,abstract 类型
变量 可有私有的,变量有默认的类型, 不可有私有的,默认是public static
其值可以在子类中重新定义,也可以重新赋值 final 型,且必须给其初值,实现类中
不能重新定义,不能改变其值
设计理念 表示的是“is-a”关系 表示的是“like-a”关系
实现 需要继承,要用extends 要用implements
1.相同点
A. 两者都是抽象类,都不能实例化。
B. interface实现类及abstrct class的子类都必须要实现已经声明的抽象方法。
- 不同点
A. interface需要实现,要用implements,而abstract class需要继承,要用extends。
B. 一个类可以实现多个interface,但一个类只能继承一个abstract class。
C. interface强调特定功能的实现,而abstract class强调所属关系。
D. 尽管interface实现类及abstrct class的子类都必须要实现相应的抽象方法,但实现的形式不同。interface中的每一个方法都是抽象方法,都只是声明的 (declaration, 没有方法体),实现类必须要实现。而abstract class的子类可以有选择地实现。
7.java中会存在内存泄露吗?请简单描述
答:内存泄露是指系统中存在无法回收的内存,
有时候会造成内存不足或系统崩溃。Java存在内存泄露。
Java中的内存泄露当然是指:存在无用但是垃圾回收器无法回收的对象。
而且即使有内存泄露问题存在