目录
1. Java中的基本类型
将自己会的展示给面试官, 尽量避免面试官问他会的
Java的基本类型有4类8种
其中整数类型有4个, 从小到大分别是
byte 占用一个字节 -128~127
short 占用2个字节 用于兼容其它语言 我们不常用 范围在-32768~32767
int 占用4个字节 这个我们比较常用 范围在 ±21亿多
long 占用8个字节 在使用时要加l
浮点数类型有两个
float 单精度浮点数 占用4个字节
double 双精度浮点数 占用8个字节
在使用float时后面要加f
在计算过程中会出现误差
因为计算机是有限的, 而小数是无限的, 存储不完整, 运算过程中会产生丢失, 如果要进行精细运算需要使用BigDecimal类来解决
字符类型 char 占2个字节 用来保存单个字符
布尔类型 boolean 存储 true 和 false
扩展:
基本类型因内存等原因, 并且会直接转化成二进制进行计算效率高
- String 这个不是基本类型, 但是使用方面几乎跟基本类型一直, 功能非常强大, 是因用类型
您看我是否需要把 String 给您说一下?- 但是比如在集合中就父爱使用基本类型, 所有包装类进行使用, 包装类可已创建对象, 而且基本类型和包装类之间进行自动拆装箱, 会自动转换, 是用比较方便
- 基本类型只能存储单个数据, 如果想要存储多个数据, 可以使用数组的方式
2. 接口和抽象类的区别
- 设计目的
接口的设计目的是针对方法名称及参数列表进行规范
抽象类的设计目的, 代码复用 - 内容要求
抽象类的创建 abstract
接口的创建 interface
抽象类, 可以存在各种类型的普通成员变量普通方法, 以及抽象方法
接口在JDK1.7之前, 只能有抽象方法和public static final静态常量 - 使用规则
对于抽象类的使用只能继承一个 extends
对于接口的使用可以多实现 implements
如果是接口和接口之间要使用继承,可以继承多个 也就是一个接口可以继承多个接口 - 版本区别
在JDK1.8之后对接口进行内容的增加
接口中可以有静态方法,不能重写,只能通过接口名调用
接口中可以有普通方法,但是要增加default关键字,实现类可以直接使用default方法,也可以进行重写
重写的时候不能加default,通过对象名调用
如果重写了之后想调用上级接口的default 接口名.super.方法名()
3. 重写与重载的区别
- 从作用上来看
重写∶发生在超类与派生类之中也就是我们常说的父类和子类之中,父类的方法不满足子类的需求,需要进行重写
重载∶是解决方法的重名问题,发生在同一个类里面,避免相同的行为,因为方法的命名造成混乱
所以根本上解决的问题不是一个方向 - 从使用上来看
重写要满足两同两小一大
方法名和参数列表必须相同,抛出的异常小于父类,返回值类型如果是基本类型则相同,如果是引用类型要小于父类,访问权限修饰符要大于父类
重载的原则是方法名必须完全一致,参数列表中的类型的顺序、个数不完全一样,就是重载与变量名无关,对于返回值,访问权限修饰符没有要求 - 从运行规则上来看
重载是编译器绑定,重写是在运行期绑定,重写是典型的面向对象中多态的表现形式
4. 构造方法
构造方法,构造器,构造函数 一类
特点∶与类同名,没有返回值,访问权限修饰符没有限制
默认情况下,如果不写构造方法,类内有一个默认的空构造,没有参数没有方法体的构造
如果你写了构造方法,那么默认提供的空构造就不存在了
使用∶构造方法在new对象的时候被调用
作用∶通常的作用就是给成员变量初始化
如果一个类中只有一个构造方法,且访问权限修饰符是private(本类可以访问)不允许在外部类中new关键字创建对象,一般来说单例模式就是私有的构造方法
5. &和&&的区别
& 按位与运算
会将数字转换成二进制进行计算
对位进行与运算,若对位均为1则为1 若对位有一项为0 则为0
&& 逻辑与运算
用判断两个boolean表达式的最终结果
若两个boolean表达式的结果均为true,则结果为true
若有一项为false,则结果为false
有"短路功能"若前面为false,逻辑与运算后面就不执行了
若&&前面的boolean结果为false,则后面boolean不论是什么最终结果都为false
因此后面的运算不进行,只执行前面的运算
6. String和StringBuffer和StringBuilder区别
首先String跟StringBuffer和StringBuilder有所不同
String是不可变字符串,因为(1)类是final修饰不能被继承,(2)底层是char数组也被final修饰了所以不能被改变,改变会创建新的字符串,效率比较低
StringBuffer和StringBuilder两个都是可变字符串,StringBuffer和StringBuilder内部原理及操作基本类似,因为StringBuffer每个公开的方法都是synchronized修饰,因此线程安全,而StringBuilder没有,因此线程不安全,但是效率会略高于StringBuffer
在使用上
如果字符串不会频繁的改变应该考虑使用String,因为其语法简洁
如果字符串会频繁的改变,在保证线程安全的情况下,应该使用StringBuilder,否则应该使用StringBuffer
附加.面向对象的特征
4个特征 封装 继承 多态 抽象
三大基本特征 封装 继承 多态
封装∶将完整的个体封装成对象,将完整的逻辑封装方法,复用
继承∶抽取派生类的共性,放在一个类里面,通过extends关键字来实现复用
多态∶多种表现形式比如向上造型,重写就是一种多态的表象形式