1、 JAVA语言有哪些特点
简单易学,有丰富的类库、面向对象、跨平台、可靠安全、支持多线程。
2、 面向对象和面向过程的区别
面向过程:是分析问题的步骤,用函数将步骤实现再在使用时一一调用。性能较高,单片机嵌入式使用。
面向对象:将事务分解为各个对象,建立对象的目的是描述某个事物在解决整个问题的过程中发生的行为。具有封装、继承、多态的特性,因此易维护易复用易扩展。
3、 八种数据类型
4、 String new和不new的关系
5、 标识符的命名规则
命名包含数字、字母下划线和$符号,数字不能开头,也不可以和关键字重名
类:大驼峰格式,首字符和每个单词首字母大写
变量名和方法名:小驼峰格式,首字符小写,其他每个单词首字母大写
6、 Int和integer的比较
7、 重写和重载的区别
8、 接口和抽象类的共同点和区别
共同点:
- 都不能被实例化
- 都可以包含抽象方法
- 都可以有默认的实现方法
区别
- 结构组成不同
抽象类:可以包含普通成员变量和普通成员方法、抽象方法、构造方法等(普通类有的它都有);
接口:包含public static final修饰的常量、抽象方法、静态方法、默认方法。 - 权限不同
抽象类:可以使用各种权限来修饰变量和方法;
接口:属性和方法默认都是public的。 - 子类使用方式不同
抽象类:子类通过extends关键字继承抽象类;
接口:子类通过implements关键字实现接口。 - 子类限制不同
抽象类:一个子类只能继承一个抽象类;
接口:一个子类可以实现多个接口。
9、 Equal和==的区别
10、 Java 的八种基本数据类型对应的包装器类
- Byte
- Short,
- Character
- Integer
- Long
- Float
- Double
- Boolean(附值后无法改变)
11、 数组的特点
- 在整个生命周期中长度不变
- 可以存基本数据类型也可以存引用数据类型
- 同一个数组中必须存相同类型的元素
- 数组中的元素有先后顺序,位置由下标决定
12、 抽象类和普通类的区别
- 实例化:普通类可以直接实例化为对象,而抽象类不能直接实例化。抽象类通常作为其他类别的基类继承和实现其抽象方法。12
- 方法实现:普通类可以包含具体的方法实现,即提供方法的具体实现逻辑。而抽象类可以包括抽象方法,只有方法声明,没有具体实现,需要子类继承和实现。1
- 继承:普通类可以单独存在,也可以由其他类继承。抽象类主要用于被其他类继承,并作为父亲提供共享的行为和属性。一个类只能继承一个抽象类,但它可以实现多个接口。
- 设计目的:普通类用于描述特定的对象,并提供特定的行为和属性。抽象类用于为子类继承和实现提供抽象的基础,定义一些通用的行为和属性。
- 可扩展性:抽象类具有较高的可扩展性,可以在子类中定义和实现更多的方法,以满足具体需求。普通类的可扩展性相对较低,其功能和行为主要由类本身决定。
- 抽象方法:抽象类中所有的方法自动被认为是抽象方法,没有实现过程,不可被实例化。抽象类的子类,除非也是抽象类,否则必须实现该抽象类声明的方法。
13、 简述垃圾回收机制:
Java“垃圾回收器”为内存管理提供了一种自动解决方案。
对于程序中不在使用的内存资源,“垃圾收集器”能自动将其释放
缺点:
- 不能完全控制“垃圾收集器”什么时候执行什么时候不执行
- 垃圾收集器受JVM的控制,JVM决定什么时候垃圾收集器运行
- 当JVM感到内存不足的时候就会运行垃圾收集器
- 当Java程序中可以请求JVM运行垃圾收集器但无法保证JVM会答应请求
- 当没有线程能够访问对象时,该对象就是适合进行垃圾收集的
垃圾回收情景一:空引用
垃圾回收情景二:隔离引用
14、 Java的自动装箱和自动拆箱
装箱就是自动将基本数据类型转换为包装器类型(int-integer)-》valueOf(int)
拆箱就是自动将包装器类型转换为基本数据类型(integer-int)-》intValue()
15、 重载方法的调用规则:
- 是否直接匹配
- 是否加宽后直接匹配
- 是否装箱后能够匹配
- 先装箱后加宽能否直接匹配
- 是否有布丁长参数能够匹配
16、 访问修饰符的类型和含义
17、 为什么基本数据类型加宽会带来方法重载问题
18、 内部类的特点
内部类是定义在一个类中的类
特点:
- 内部类是一种编译时的语法,编译后生成的两个类是独立的两个类。(对于一个名为outer的外部类和其内部定义的名为inner的内部类。编译完成后出现outer.class和outer$inner.class两类)
- 内部类可以自由访问外部类的任何成员(包括私有成员),但外部类不能直接访问内部类的成员。
- 内部类可为静态,可以用protected、 private修饰,而外部类只能使 用public和缺省的包访问权限。
- 用内部类定义在外部类中不可访问的属性。这样就在外部类中实现了比外部类的private还要小的访问权限。
19、 内部类的分类
- 成员内部类
- 局部内部类
- 匿名内部类
- 静态内部类
20、 程序、进程和线程的解释:
- 一个应用程序包含一个进程,是具有独立功能的程序,通过多个线程占据系统资源,进程之间的数据状态完全独立。
- 一个进程可以有多个线程、线程是执行程序的最小单元,是占用CPU的基本单位,线程间共享一块内存空间。
- Java程序都有一个默认的主线程可以产生其他的子线程但不一定是最后结束的线程
21、 单线程和多线程的区别:
是否在main方法中创建了其他线程
22、 多线程的优势:
23、 线程的生命周期:
新建、就绪、运行、阻塞、死亡
24、 线程睡眠
25、 线程阻塞:
26、 多线程存在线程调度、同步、死锁等问题
27、 互斥锁和死锁