一、语法基础
- switch()中的参数类型
- 1.7之前:byte、short、int、char及其包装类和枚举类型enum
- 1.7之后,引入String
- 标识符: 由数字、字母、下划线三部分组成,不能由数字开头、不能包含除_和$之外的字符、严格区分大小写、不能包含关键字
- 静态域(静态方法,静态属性,静态代码块)
- 静态代码块、静态属性按照顺序执行和声明
- 静态方法最后执行
例题:
- 三元操作符类型的转换规则:
- 若两个操作数不可转换,则不做转换,返回值为Object类型
- 若两个操作数是明确类型的表达式(比如变量),则按照正常的二进制数字来转换,int类型转换为long类型,long类型转换为float类型等。
- 若两个操作数中有一个是数字S,另外一个是表达式,且其类型标示为T,那么,若数字S在T的范围内,则转换为T类型;若S超出了T类型的范围,则T转换为S类型。
- 若两个操作数都是直接量数字,则返回值类型为范围较大者
例:Object o1 = true ? new Integer(1) : new Double(2.0);o1转换为Double类型
- 继承与多态
- 继承:子类继承父类所有属性和方法包括私有,但不能访问父类的私有属性和方法
- 多态:方法必须同时存在于子类和父类中,子类重写了方法则调用子类方法,否则调用父类中的方法
- String、StringBuilder、StringBuffer
- 联系:三者都是对字符串进行操作的类
- 区别
类名 | 是否可变 | 线程安全 |
---|---|---|
String | 不可变 | √ |
StringBuilder | 可变 | × |
StringBuffer | 可变 | √(同步锁) |
二、异常
- 体系
Java异常分为两个大类:Error和Exception
- Exception:也分为两类:编译时异常(受检查异常)和运行时异常(不受检查异常)
2.1 编译时异常
- IOException(包括一些File的异常)
- ClassNotFoundException
2.2 运行时异常 - 空指针异常(NullPointerException)
- 数组下标越界异常(IndexOutOfBoundsException)
- 类型转换异常(ClassCastException)
- 算术异常 (ArithmeticException)
例题:
- 异常处理try-catch-finally
- try代码块:捕获异常
- catch代码块:处理异常
- finaly代码块:无论是否捕获或处理异常,finally 块里的语句都会被执行,一般用于关闭文件、数据库连接等资源
注:finally中不使用return,否则会影响代码实际结果
三、Java常用命令
- jps:查看本机java进程信息。
- jstack:打印线程的栈信息,制作线程dump文件。 (可用于分析死锁)
- jmap:打印内存映射,制作堆dump文件
- jstat:性能监控工具
- jhat:内存分析工具
- jconsole:简易的可视化控制台
- jvisualvm:功能强大的控制台