1、简述什么是 JDK、JRE 和 JVM?
JDK : 开发工具包
JRE : 运行时环境
JVM : java虚拟机
2、写出Java的四类八种基本数据类?
整数 byte short int long
小数(浮点) float double
布尔 boolean
字符 char
3、& 和 && 的区别 ?
& 符号的左右两边,无论真或假都要执行
&& 符号的左边如果为假,符号的右边不再执行,提高了代码的执行效率
4、 switch的参数可以是什么类型
int 及以下整数包含 字符 char byte short int char
String
枚举
5,简述什么是标识符,及其定义的规则
标识符就是名字
数字不能开头
不能使用关键字起名字
特殊符号只有 _ $
26个大小写英文字母
数字0-9
其他国家的语言文字
6、说出成员变量和局部变量的区别
1, 物理位置
成员变量: 类中方法外
局部变量: 方法中或方法定义的小括号里面
2, 内存位置
成员变量: 在堆内存中
局部变量: 在栈内存中
3, 生命周期
成员变量: 随着对象创建而产生,随着对象的消失而消失
局部变量: 随着方法的调用而产生,随着方法调用结束而消失
4,有无默认值
成员变量: 有默认值, 整数0,小数0.0 字符 ‘\u0000’ 布尔 false 引用数据类型 null
局部变量: 没有默认值,使用的时候,必须先赋值
7、static关键字都能修饰什么? 都有什么特点
1, 修饰成员变量, 叫静态变量 具有共享性,节省内存空间
2, 修饰方法: 静态方法: 可以直接使用类名.进行调用,
3, 修饰代码块: 静态代码块 ,给静态变量进行赋值
4, 修饰类: 静态内部类
8 、什么是封装,为什么要封装
就是将事物的属性和行为 通过 private进行修饰,外界无法直接进行访问,需要提供公共的setter 和 getter 进行间接的访问
提高代码的安全性和复用性
9, 什么是面向对象,请详细说明(分别解释 封装 继承和多态)
封装:
就是将事物的属性和行为 通过 private进行修饰,外界无法直接进行访问,需要提供公共的setter 和 getter 进行间接的访问 提高代码的安全性和复用性
继承:
就是子类继承父类的特征和行为,使得子类对象具有父类的实例域和方法,或子类从父类继承方法,使子类具有父类相同的行为
多态:
事物的多种表示形态
发生的前提:
1, 继承关系
2, 方法的重写
3, 父类的引用指向子类对象
好处: 提高的代码的复用性
10, overload和override的区别
overload重载: 在同一个类中,方法名相同,参数列表不同于返回类型无关
override重写: 在继承关系中,方法名和参数列表必须相同,权限修饰大于等于父类的权限修饰
11, final 和 finally的区别
final 修饰符 修饰变量变成了常量,修饰方法变成了最终的方法,不能被重写,修饰类变成了最终类,不能有子类
finally 代码块 只能与 try 连用,表示的是 代码是否出现异常,都必须要执行的代码
12, this和super都能用到哪些地方
13, 接口与抽象类的区别
抽象类 接口
有成员变量 没有成员变量,都是常量默认被 public static final修饰
实现方法和抽象方法 jdk1.8之前都是抽象方法 jdk1.8之后可以有静态和默认方法
有构造方法 没有构造方法
14, 静态变量与成员变量的区别
内存位置
生命周期
调用方式
15, throw和throws 的区别
16 String,StringBuilder 与 StringBuffer 的区别
String 是长度不可变的容器, StringBuilder,StringBuffer 是长度可变的字符序列 2分
StringBuilder : 线程不安全,效率高,从jdk1.5版本开始
StringBuffer : 线程安全,效率低,从jdk1.0开始
17, == 和 equals的区别
== 既可以比较基本数据类型,也可以比较引用数据类型,比较基本数据类型,比较的是具体的值,比较引用数据类型比较是地址值
equals只能比较引用数据类型,重写之前比较的是引用数据类型的地址值,重写之后,比较的是引用数据类型的内容
18, 包装类拆箱装箱
基本数据类型转换成对应的引用数据类型,为装箱,把引用数据类型转换为对应的基本数据类型为拆箱,jdk1.5之后可以实现自动拆装箱
19,请说出5个异常类型
数组索引下标越界异常,空指针异常,文件找不到异常,类型转换异常,算数异常
ArithmeticException 算术异常,如除以0
ArrayIndexOutOfBoundsException 数组下标出界
IOException I/O异常的根类
FileNotFoundException 不能找到文件
NullPointerException空指针异常
20, HashSet 的去重原理
不同的对象,地址值肯定不同,地址不同,直接插入数据成功
如果地址值相同,不能证明是同一个对象
需要通过equals 的方法继续比较,比较的是对象中的每一个内容
如果内容相同证明是同一个对象,插入失败
如果内容不同,证明不是同一个对象,数据插入成功