第一部分 Java SE基础(1)java
1.1 java的8种基本数据类型 装箱 拆箱缓存
1.1.1 8种基本的数据类型安全
1.1.2装箱 拆箱多线程
自动装箱是 Java 编译器在基本数据类型和对应的对象包装类型之间作的一个转化。好比:把 int 转化成 Integer,double 转化成 Double,等等。反之就是自动拆箱。ide
原始类型: boolean,char,byte,short,int,long,float,double函数
封装类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double性能
有了基本数据类型,为何还须要包装类型?优化
Java是一个面对对象的语言,而基本的数据类型,不具有面向对象的特性。ui
好比Integer能够用null表示为空,int只能为0.this
1.1.3 String 出 转出 int 型,判断能不能转?如何转?
答:能够转,得处理异常 Integer.parseInt(s) 主要为 NumberFormatException:
1)当你输入为字母时,也就是内容不是数字时,如 abcd
2)当你输入为空时 3)当你输入超出int 上限时 Long.parseLong("123")转换为 long。
1.1.4 short s1 = 1; s1 = s1 + 1; 有什么错? short s1 =1; s1 +=1; 有什么错?
1) 对于 short s1=1;s1=s1+1 来讲,在 s1+1 运算时会自动提高表达式的类型为 int,那么将 int 赋予给 short 类型的变量 s1 会出现类型转换错误。
2) 对于 short s1=1;s1+=1 来讲 +=是 java 语言规定的运算符,java 编译器会对它进行特殊处理,所以能够正确编译
1.1.5 .Int 与 与 Integer 区别
1.1.6. 字节字符区别
字节是存储容量的基本单位,字符是数子,字母,汉子以及其余语言的各类符号。
1 字节=8 个二进制单位:一个一个字符由一个字节或多个字节的二进制单位组成
1.1.7 java 基本类型与引用类型的区别
基本类型保存原始值,引用类型保存的是引用值(引用值就是指对象在堆中所处的位置/地址)
---------------------------------------------------------------------------------------------我是分割线------------------------------------------------------道长且阻,行则将至---------------------------------------
1.2 重写重载 重写重载
一.继承的好处和坏处
好处:1. 子类能自动继承父类的接口
2. 建立子类的对象时,无须建立父类的对象
坏处:1. 破坏封装,子类与父类之间紧密耦合,子类依赖于父类的实现,子类缺少独立性 (tip:高内聚,低耦合)
2. 支持扩展,可是每每以增长系统结构的复杂度为代价
3. 不支持动态继承。在运行时,子类没法选择不一样的父类
4. 子类不能改变父类的接口
二.重载、重写
Java 中的方法重载发生在同一个类里面两个或者是多个方法的方法名相同可是参数不一样的状况。与此相对,方法覆盖是说子类从新定义了父类的方法。方法覆盖必须有相同的方法名,参数列表和返回类型。覆盖者可能不会限制它所覆盖的方法的访问。
重写(override)又名覆盖:
1.不能存在同一个类中,在继承或实现关系的类中;
2. 名相同,参数列表相同,方法返回值相同,
3.子类方法的访问修饰符要大于父类的。
4.子类的检查异常类型要小于父类的检查异常。
重载(overload)
1.能够在一个类中也能够在继承关系的类中;
2.名相同;
3.参数列表不一样(个数,顺序,类型) 和方法的返回值类型无关。
三.Java 中是否能够覆盖(override)一个 private 或者是 static 的方法?
Java 中 static 方法不能被覆盖,由于方法覆盖是基于运行时动态绑定的,而 static 方法是编译时静态绑定的。static 方法跟类的任何实例都不相关,因此概念上不适用。
java 中也不能够覆盖 private 的方法,由于 private 修饰的变量和方法只能在当前类中使用,若是是其余的类继承当前类是不能访问到 private 变量或方法的,固然也不能覆盖。
---------------------------------------------------------------------------------我是分割线-------------------------------------------------永怀善意,清澈明朗-----------------------------------------------------
1.3 面向对象
new 一个对象的过程和 eclone 一个对象的过程区别
new 操做符的本意是分配内存。程序执行到 new 操做符时,首先去看 new 操做符后面的类型,由于知道了类型,才能知道要分配多大的内存空间。分配完内存以后,再调用构造函数,填充对象的各个域,这一步叫作对象的初始化,构造方法返回后,一个对象建立完毕,能够把他的引用(地址)发布到外部,在外部就可使用这个引用操纵这个对象。
clone 在第一步是和 new 类似的,都是分配内存,调用 clone 方法时,分配的内存和原对象(即调用 clone 方法的对象)相同,而后再使用原对象中对应的各个域,填充新对象的域,填充完成以后,clone 方法返回,一个新的相同的对象被建立,一样能够把这个新对象的引用发布到外部。
1.4 String,StringBuffer ,StringBuilder ,hashcode ,equal
一.String StringBuffer StringBuilder 的区别
量。此时String的速度比StringBuffer和StringBuilder的性能好不少。
二.String 不可变?
String中的hashcode以及toString
四.String,是否能够继承,“+”怎样实现,与 StringBuffer 区别
1.5 java 文件读取
1.6 java反射
Java 中 的 反 射 首 先 是 能 够 获 取 到 Java 中 要 反 射 类 的 字 节 码 , 获 取 字 节 码 有 三 种 方 法 ,
1.Class.forName(className) 2.类名.class 3.this.getClass()。
而后将字节码中的方法,变量,构造函数等映射成相应的 Method、Filed、Constructor 等类,这些类提供了丰富的方法能够被咱们所使用、
1.7static 和 和 final 的区别
final 的好处: 的好处:
1. final 关键字提升了性能。JVM 和 Java 应用都会缓存 final 变量。
2. final 变量能够安全的在多线程环境下进行共享,而不须要额外的同步开销。
3. 使用 final 关键字,JVM 会对方法、变量及类进行优化。
1、 static 方法是否能够覆盖? 方法是否能够覆盖?
static 方法不能被覆盖,由于方法覆盖是基于运行时动态绑定的,而 static 方法是编译
时静态绑定的。static 方法跟类的任何实例都不相关,因此概念上不适用。
二.是否能够在 二.是否能够在 static 环境中访问非 static 变量?
静态变量 ,静态代码块先于 静态代码块先于 System.out.println(“0000”)执行 执行 , 静态的东西只执行一次,至关于全局变量。
参考文章:[1] https://www.bilibili.com/video/av29503459?from=search&seid=13524817771325516763
[2]http://www.javashuo.com/article/p-fxhjenvs-ba.html
[3]《java面经》纸质版