面试题总结01

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

扩展:
基本类型因内存等原因, 并且会直接转化成二进制进行计算效率高

  1. String 这个不是基本类型, 但是使用方面几乎跟基本类型一直, 功能非常强大, 是因用类型
    您看我是否需要把 String 给您说一下?
  2. 但是比如在集合中就父爱使用基本类型, 所有包装类进行使用, 包装类可已创建对象, 而且基本类型和包装类之间进行自动拆装箱, 会自动转换, 是用比较方便
  3. 基本类型只能存储单个数据, 如果想要存储多个数据, 可以使用数组的方式

2. 接口和抽象类的区别

  1. 设计目的
    接口的设计目的是针对方法名称及参数列表进行规范
    抽象类的设计目的, 代码复用
  2. 内容要求
    抽象类的创建 abstract
    接口的创建 interface
    抽象类, 可以存在各种类型的普通成员变量普通方法, 以及抽象方法
    接口在JDK1.7之前, 只能有抽象方法和public static final静态常量
  3. 使用规则
    对于抽象类的使用只能继承一个 extends
    对于接口的使用可以多实现 implements
    如果是接口和接口之间要使用继承,可以继承多个 也就是一个接口可以继承多个接口
  4. 版本区别
    在JDK1.8之后对接口进行内容的增加
    接口中可以有静态方法,不能重写,只能通过接口名调用
    接口中可以有普通方法,但是要增加default关键字,实现类可以直接使用default方法,也可以进行重写
    重写的时候不能加default,通过对象名调用
    如果重写了之后想调用上级接口的default 接口名.super.方法名()

3. 重写与重载的区别

  1. 从作用上来看
    重写∶发生在超类与派生类之中也就是我们常说的父类和子类之中,父类的方法不满足子类的需求,需要进行重写
    重载∶是解决方法的重名问题,发生在同一个类里面,避免相同的行为,因为方法的命名造成混乱
    所以根本上解决的问题不是一个方向
  2. 从使用上来看
    重写要满足两同两小一大
    方法名和参数列表必须相同,抛出的异常小于父类,返回值类型如果是基本类型则相同,如果是引用类型要小于父类,访问权限修饰符要大于父类
    重载的原则是方法名必须完全一致,参数列表中的类型的顺序、个数不完全一样,就是重载与变量名无关,对于返回值,访问权限修饰符没有要求
  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关键字来实现复用
多态∶多种表现形式比如向上造型,重写就是一种多态的表象形式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值