第三章
- Java是一种强类型语言。https://blog.csdn.net/qq_36192099/article/details/79464196
- 在Java中,整型的范围与机器无关。
int 4字节
short 2字节
long 8字节
byte 1字节 -
子串:Substring
拼接:String.join
String类对象是不可变字符,可通过substring+”” 改变字符串变量
不能用==来比较字符串,应该用equals。一个常量和一个变量比较,推荐把常量写在前面 - 任何一个Java对象都可以转换成字符串
- 输入输出
首先要构造一个Scanner对象。
Scanner类有各种方法,nextLine()读取一行,next()读取一个单词,nextInt()读取一个整数,nextDouble()读取一个浮点数。 - Java提供了一种带标签的break语句。只能跳出语句块,而不能跳入语句块。
- 大数值BigInteger类
- for each循环:
for(int element:a) System.out.println(element);
-
Arrays.copyOf可以拷贝数组,如果直接b=a,拷贝的是数组地址值,改变b会改变a
第四章、对象和类
- 类之间最常见的关系有
依赖(uses-a):一个类的方法操纵另一个类的对象。尽可能的将相互依赖的类减至最小。
聚合(has-a):以为着类A的对象包含类B的对象
继承(is-a): - 构造器(构造方法)用来构造并初始化对象。通过new关键字构造一个新对象。构造器与其他方法有一个重要的不同,构造器总是伴随new操作符的执行被调用,而不能对一个已经存在的对象调用构造器来打到重新设置实例域的目的。构造器没有返回值
- 一个对象变量并没有实际包含一个对象,而仅仅引用一个对象,如:
Date deadline = new Date();
有两个部分。New Date()构造了一个Date类型的对象,它的值是新创建的对象的引用。这个引用储存在deadline中。
- 静态域、静态方法(用static修饰)伴随着类一直存在。静态方法通过类名调用。
- Java中方法参数的总结(Java中都是值传递,而不是引用传递):
一个方法不能修改一个基本数据类型的参数(数值型或布尔型)
一个方法可以改变一个对象参数的状态
一个方法不能让对象参数引用一个新的对象(Java中值传递的体现) - 当且仅当类没有提供任何构造器时,系统才会提供一个默认的构造器。
第五章、继承
- this的两个主要用途:一是引用隐式参数,二是调用该类其他的构造器;
super的两个主要用途:一是调用超类的方法,二是调用超类的构造器。 - 调用构造器时,两者很相似,调用构造器的语句只能作为另一个构造器的第一条语句出现。
- Java不支持多继承。Java中多继承可通过接口实现。
- 在Java中,对象变量是多态的。
Employee e; e = new Employee(...); e = new Manager(...);//Manager继承Employee
这里的Employee类变量可以引用Employee类对象和任何一个Employee类的子类。
在P152的代码中Manager boss = new Manager(...); Employee[] staff = new Employee[3]; staff[0] = boss; Employee boss = new Employee(...); Manager[] staff = new Manager[3]; staff[0] = boss;//错误!
boss是Manager类对象,staff数组是Employee类对象,所以staff可以和boss指向同一对象,且编译器将staff[0]看成Employee对象。如果是下面这段代码会报错,可以这样想:int(类比子类)可以向上转型成double(类比父类),但double转型成int有可能会丢失精度,所以父类(范围较宽泛,类比动物)不被允许转换成子类(范围较小,类比猫)。