之前的博客都是在网上摘摘抄抄的,没有自己来写一篇博客,而且最近由于毕业设计和要找工作忙得焦头烂额的,没时间整理和学习。所以计划完成毕业设计后,重新来整理一下 电脑的文件和网盘的文件,并把之前学过(已经忘记)的知识在重新复习一遍。明天打算去参加华工的招聘会,由于之前的JAVA SE基础基本都忘了,所以重新来过一遍。
(1)基本数据类型
byte , short , char , int , long , float , double , boolean
(2) this ,super 和 static
this.成员变量 this.成员方法 this.构造函数
super.成员变量 super.成员方法 super.构造函数
类名.静态变量 类名.静态方法
(3) 成员变量放置在堆内存中
局部变量保存在其所在方法的栈内存中,随着方法的运行结束而结束
(4) switch
jdk7之前 switch 只能支持 byte、short、char、int 这几个基本数据类型和其对应的封装类型
jdk1.7后,整形,枚举类,字符串都可以 , jdk1.7并没有新的指令来处理switch string,而是通过调用switch中string.hashCode,将string转换为int从而进行判断
(5) equals与==的区别
==是指对内存地址进行比较, equals()是对内容进行比较
(6) Object的方法
clone() toString() equals() hashcode() getClass() wait() notify() notifyAll()
(7) Java的四种引用
①强引用:最普遍的一种引用方式,如String s = "abc",变量s就是字符串“abc”的强引用,只要强引用存在,则垃圾回收器就不会回收这个对象。
②软引用:用于描述还有用但非必须的对象,如果内存足够,不回收,如果内存不足,则回收。一般用于实现内存敏感的高速缓存,软引用可以和引用队列ReferenceQueue联合使用,如果软引用的对象被垃圾回收,JVM就会把这个软引用加入到与之关联的引用队列中。
③弱引用:弱引用和软引用大致相同,弱引用与软引用的区别在于:只具有弱引用的对象拥有更短暂的生命周期。在垃圾回收器线程扫描它所管辖的内存区域的过程中,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。
④虚引用:虚引用必须和引用队列 (ReferenceQueue)联合使用。当垃圾回收器准备回收一个对象时,如果发现它还有虚引,就会在回收对象的内存之前,把这个虚引用加入到与之关联的引用队列中。系统无法通过虚引用来获取被引用的对象
(8) 重写equals() : 满足 自反性 对称性 传递性 一致性
(9)final
①final 方法 不能被重写,但是可以被重载
②final 变量:基本数据类型 -> 数据值不可变 引用类型 -> 地址值不能变
③不可变类: private final 修饰成员变量
提供带参数的构造方法
只提供getter方法,不提供setter方法
保证引用的引用类型是不可变的
(10)final 和 abstract 互斥
final 和static 不能同时修饰方法,但是可以同时修饰内部类
(11) 抽象类和接口的区别:
1、抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。
2、抽象类要被子类继承,接口要被类实现。
3、接口能有抽象方法,默认方法和静态方法(JDK8支持),抽象类能有抽象方法和其他非抽象类的方法
4、接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。
5、抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类只能是抽象类。同样,一个实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。
6、抽象方法只能申明,不能实现,接口是设计的结果 ,抽象类是重构的结果
7、抽象类里可以没有抽象方法
8、如果一个类里有抽象方法,那么这个类只能是抽象类
9、抽象方法要被实现,所以不能是静态的,也不能是私有的。
10、接口可继承接口,并可多继承接口,但类只能单继承。
(12) 内部类 内部类能访问外部类的私有数据,但是外部类不能直接访问内部类的实现细节
①静态内部类 可以包含静态成员和非静态成员,只能访问外部类的静态变量,接口只能包含静态内部类
②非静态内部类 不能拥有静态成员,子类可以是外部类
③局部内部类
④匿名内部类
(13) 枚举类
①继承于java.lang.Enum
②实例必须在第一行显示列出
③构造方法为private
④可以包含抽象方法,但是方法前面不加abstract,而且必须提供实现
⑤values() 获取所有的枚举值
ordinal() 返回枚举值在枚举类的索引值
compareTo(E e) 比较枚举值的前后顺序
valueOf(Class class, String name) 返回制定枚举类中指定名称的枚举值
(14) 对象在内存中的状态
1、可达状态
当一个对象被创建后,有一个以上的引用变量引用它。在有向图中可以从起始顶点导航到该对象,那么它就出于可达状态,程序可以通过引用变量来调用该对象的属性和方法。
2、可恢复状态
如果程序中某个对象不再有任何引用变量引用它,他将进入可恢复状态,此时从有向图的起始顶点不能导航到该对象。在这种状态下,系统的垃圾回收机制转变回收该对象所占用的内存。在回收该对象之前,系统会调用可恢复状态的对象的finalize方法进行资源清理,如果系统调用finalize方法重新让一个以上的引用变量引用该对象,则该对象会再次编程可达状态;否则,该对象将进入不可达状态。
3、不可达状态
当对象的所有关联都被切断,且系统调用所有对象的finalize方法依然没有使该对象变成可达状态后,这个对象将永久性地失去引用,最后变成不可达状态。只有当一个对象出于不可达状态,系统才会真正回收该对象所占用的资源。
(15) 强制系统回收垃圾的两种方式
①System.gc();
②Runtime.getRuntime().gc();
(16) 常用的工具类
①Scanner
②System.currentTimeMill();
③Runtime.exec();
④Objects
⑤String
charAt(int index); 获取索引对应的值
indexOf(int ch); indexOf(String str); 获取值对应的索引
lastIndexOf(...);
compareTo(String string); 返回字符差或者长度差
concat(String string);
contentEquals(StringBuffer sb); 比较String和StringBuffer,包含的字符序列相同返回true
copyValueOf(char[] data); 等价于new String(char[] data)
substring();
getBytes();
toCharArray();
valueOf(X x); String str = Integer.valueOf(12);
⑥StringBuffer
⑦StringBuilder
append(s);
insert(i,s);
delete(a,b);
reserve(s);
⑧Math
pow(a,b);
floor(a);
ceil(a);
round(a);
sqrt(a);
⑨Random ThreadLocalRandon 伪随机
Random rand = new Random(send);
rand.nextInt(a,b);
ThreadLocalRandom rand = ThreadLocalRandom.current();
⑩BigDecimal
new BigDecimal();
BigDecimal.valueOf();
对于浮点数
new BigDecimal("1.22");
BigDecimal.valueOf(1.22);
方法
add();
substract();
multiply();
divide();
pow();
XxxValue();
⑩①正则表达式
Pattern p = new Pattern("\w*");
Matcher m = p.matcher("abc123456");
⑩② NumberFormat
SimpleDataFormat