第一章 Java程序设计概述
- 09年sun被oracle收购->11年java7(简单改进)->14年java8(函数式编程)->2017年java9->2018年java11->2021年java17
第二章 Java编程环境
- Java9后新增JShell,提供类似脚本试执行java代码的能力。
第三章 Java的基本程序设计结构
- 类名必须大写,main方法必须试public。
- 八种基本数据类型:byte、char、short、int、long、float、double、bool
- Java10对于局部变量,支持通过var定义变量并自动化推导变量类型。
var greeting = "Hello"
- final定义常量,表示变量只能被赋值一次。static final表示类常量。
- const是java的保留字,但是目前没有使用。
- 枚举类型的定义:
enum Size {SMALL,MEDIUM,LARGH}
Size s= Size.SMALL;
- 数学运算函数:Math.sqrt(x)、Math.pow(x,a)等
- 数值类型的合法转化:实线无数据丢失,虚线有数据丢失。
9. 强制类型转换(cast)会引起数据精度丢失。
double x = 9.99;
int y = (int)x; // x is 9
- &&和||支持短路特性。
- Java14引入switch表达式,可用于在两个以上值做选择(丰富了condition三目运算符)。case类型可以是字符串/逗号分隔的字符串/枚举/常量表达式。
String season = Switch(seasonCode){
case 0 -> "Spring";
case 1 -> "Summer";
case 2 -> "Summer";
case 3 -> "Fall";
case 1 -> "Winter";
default -> "???";
};
- Java中字符串是不可修改的(immutable)。字符串存储在常量池中,字符串变量指向常量池中字符串的位置。
- 字符串的相等判断:
==:判断字符串是否在同一位置
equals():判断字符串内容是否相等
- 空串是长度为0的字符串对象,null为空对象,两者有区别。
- 构建字符串可以使用StringBuilder(效率高,但是不支持多线程)和StringBuffer(效率低,但是支持多线程)。
- Java15新增代码块text block。
String greeting = “”“
Hello
World
““”;
- swith支持表达式和语句,且支持“直通”和“非直通式”。直通式case以冒号结束,非直通式case以->结束。与break类似,yield也会终止执行,但是相比于break,yield还会生成一个值。
- berak提供跳转到标签的语法。
- 不能在switch表达式中使用break,return,continue语句,switch表达式优于语句。yield与break类似,会中断语句,而且还会返回一个值。
- 大数使用BigInteger和BigDecimal 大数字操作不能使用运算符,因为Java没有重载运算符。
- 数组声明int[] a或者int a[]。支持字面量直接创建:int[] a={1,2,3,};最后可以有逗号。你你你数组:new int[] {1,2,3}。允许有空数组。
- 数组操作Arrays类,copyof深复制,sort快速排序等。
第四章
- 类之间的关系:依赖use a,聚合has a,继承is a。
- Java10之后可以使用var定义局部变量。参数和字段的类型必须明确声明。
- final字段必须在构造对象时初始化。常用于修饰基本数据类型和不可变类。修饰可变类表示其引用不变,但是引用内容可变。
- Java14引入记录并在Java16版本发布,是一种特殊形式的类,用record声明。一个记录的实例称之为组件。
第五章 继承
- 不能讲父类引用赋值给子类对象。
- 方法参数中,允许接受带类型的列表对象。如run(ArrayList eList)方法可以接受ArrayList eList变量。但是将普通类型传给带类型的就会报错。