目录标题
-
- Java
-
- 语法
- 编译型语言和解释型语言
- jdk版本
- 位运算
- java包
- Integer和int
- 数组
- Object中的方法
- super和this
- 构造器
- 修饰符有哪些
- 2.equals和==
- instanceof
- 3.构造方法和成员方法
- 4. static和final
- 5.成员变量与成员方法的区别
- 5.接口和抽象类
- 6.静态内部类和非静态内部类
- 7.重写和重载
- 8.StringBuffer和String
- 9.Error和Exception
- try catch finally
- 10.Throw和Throws
- 异常
- 11.四种引用类型比对
- 12.栈和堆的区别
- 13.HashMap和Hashtable的区别
- 线程
- ThreadLocal
- 14.乐观锁和悲观锁
- synchornized,violatile,lock的区别
- 15.原子性 可见性 有序性
- 16.日期类
- 17.比较器,迭代器
- 集合
- 内存泄露,内存屏障,内存溢出,内存抖动
- 类加载
- 序列化和反序列化
- Socket通信
Java
语法
- 在Java中规定,多行注释可以嵌套单行注释,但是不能嵌套多行注释
编译型语言和解释型语言
- 编译型语言是 一次性将源码编译成计算机可识别的二进制文件
- 解释型语言是 一句一句翻译源码,java就是这样,
预编译成class文件
后,在一句句转成二进制文件,其中虚拟机起到解释器的作用
jdk版本
- 接口只能定义抽象方法,既Java中所有的非抽象方法都必须在类内定义
- 1.8接口可以定义default方法和static方法
- 1.9接口中可以定义私有方法。
位运算
java包
-
java.awt:提供了绘图和图像类
-
java.lang:java的语言包,是核心包
默认导入到用户程序,包中有object类,数据类型包装类,数学类,字符串类,系统和运行时类,操作类,线程类,错误和异常处理类,过程类。 -
java.io:包含提供多种输出输入功能的类。
-
java.net: 包含执行与网络有关的类。
-
java.util:集合类、时间处理模式、日期时间工具等各类常用工具包。
Integer和int
Integer | int |
---|---|
包装类 | 基本数据类型 |
初始值null | 初始值0 |
-128~127之外新建对象,存放在堆中 | 存在常量池 |
使用前需要实例化 | 直接使用 |
- 为什么需要包装类?
“包装类解决了一些基本数据类型解决不了的问题”
- 集合无法存放基本数据类型
- 包装类可通过parse把基本数据类型转换成包装类
- 函数需要传入Object类型参数,基本数据类型不行
“Object类型可以接收所有引用类型,包装类是引用,基本数据类型不是”
- 包装类作用:
将基本数据类型封装成类 - Integer.valueOf() 封装的Integer对象
Integer.parseInt() 原子类型int
作用:返回指定对象原始值
Number类
- float 4字节 48 float 类型的数值有一个后缀 F(例如:3.14F)
double 8字节 88 没有后缀 F 的浮点数值(例如:3.14)默认为 double - 低数据类型可以直接赋值给高数据类型,反之,高数据类型转换为低数据类型必须强转,即提前制定数据类型,例 int a = (int) 5.0F
- Integer内部实现Comparable接口,可通过compareTo实现Integer对象的比较
Integer i1=new Integer(100);
Integer i2=new Integer(200);
Sop(i1.compareTo(i2));
String比较
-
String 和 int 相加
-
t和s不是一个类型的,不能比较
-
s和t都指向字符串池的相同内容,地址相等,true
数组
- 三种创建形式:
int[] arr=new int[3];
int[] arr=new int[]{1,2,3};
int[] arr={1,2,3};
- 二维数组第一个中括号必须有值
Object中的方法
- getClass 返回实体的class对象,获得这个类的元数据
parseInt是转为基础数据,valueOf是包装类,toString是转为字符串
//将字符串转为int类型
String a="123"
int i=Integer.parseInt(a);
//将字符串转为Integer
Integer it=Integer.valueOf(a);
- hashCode 为不同对象返回不同整数
- finalize 垃圾回收之前,通过重写方法来重置系统资源,执行清理活动并且最大程度的减少内存泄露。
- wait 调用线程放弃锁并且进入睡眠状态
- notify,notifyAll 唤醒线程
super和this
- super实现对父类的引用
- this 指向自己的引用
构造器
修饰符有哪些
-
访问控制修饰符
-
synchornized可以应用于这四个访问符
-
private修饰的方法可以用反射访问,那它的意义何在?
private不是为安全性设计的,而是对一个类的封装,改变类中的private属性不影响使用;而反射技术实现了一些开发工具和框架的服务
-
非访问修饰符号
-
private和final
2.equals和==
equals | == |
---|---|
对象值是否相同 | “基础”比较数值,引用比较“地址” |
- 两个对象classa和classb在堆内存,he在字符串常量池,共三个
结果为false,无论是equals还是==,因为equals没有重写,相当于 ==使用,classa和classb不在同一块内存地址
instanceof
3.构造方法和成员方法
构造方法 | 成员方法 |
---|---|
初始化,创对象 | 实现特定功能 |
类中只能有一个 | 类中可以有多个 |
方法名同类名 | 无此要求 |
4. static和final
static | final |
---|---|
静态的,全局的 | 不可变 |
类中只能有一个 | 类不可继承,方法不可重写,常量不能变 |
修饰变量,方法,类,代码块 | 修饰变量,方法,类 |
在类加载时执行一次 | |
修饰的变量,方法可以被修改 | 修饰的变量为常量,需要被赋值 ,且只能赋一次 |
修饰的方法可以被继承,不能被重写 |
能重载,不能被重写 |
若子类中出现和父类静态方法同名,同参数列表,同返回类型的方法,不是继承,是子类将该同名方法进行了隐藏
-
static修饰的方法/变量 具有
全类共有
的作用,通过 类名. 调用 -
final修饰引用变量时,保存的是引用地址,即一直引用这个对象,而对象的值可以改变,不能在普通方法中为final变量赋值
-
final修饰的变量存储位置:成员变量和静态变量在常量池子,局部变量在栈中
-
final修饰的变量会找到constantValue属性,但JVM往往会忽略,final修饰的实例变量,会在实例创建时赋初值
-
static会在
类加载的准备阶段
赋初值,初始化阶段
赋值,static final修饰的String和基本数据类型 会在准备阶段就赋值