基本概念
- 接口
可以有变量和方法,但是方法只有签名。接口定义子类必须做什么事,但是不规定应该如何做。接口定义的所有方法,子类需要全部实现;若子类只实现了接口中的部分方法而非全部方法,那么该子类需标注为抽象类。
- 抽象类
不同于接口,抽象类可以有已经定义方法体的方法,并且可以有静态方法。(接口中的所有方法都不能定义方法体)抽象类定义的变量不必是final的,而接口中的变量默认是static且final的。抽象类可以实现接口。
- 匿名类
匿名类允许我们在定义类的同时实例话,并且不需要给这个类起名字。当我们需要一个内部类,并且只使用一次的时候,就可以使用匿名类。
Anonymous classes enable you to make your code more concise. They enable you to declare and instantiate a class at the same time. They are like local classes except that they do not have a name. Use them if you need to use a local class only once.
- 重写override
子类继承父类后,对父类方法的改写。只改写方法体,方法的签名不变。
- 重载overload
同一个类里,有方法名相同的多个方法,但是其参数列表不同。
数据类型
- Integer
int是java默认的整数类型,用32位二进制数记录,其中有一位用来表示正负,那么其二进制数的表示范围就是-231 - 231-1, 也就是十进制的 -2,147,483,648 - 2,147,483,647。
- String:compareTo()
A.compareTo(B), 比较的是两个字符串首字母在unicode中的位置关系。unicode是用十六进制(Hexadecimal)将字符编码排序。空格串的编码为U+0020,数字0的编码为U+0030,所以“ ”.compareTo(0) 的结果就是-16,因为十六进制中20-30=-16。数字1到9紧跟在0后面,然后大写字母A-Z的编码为U+0041-U+005A。所以“0”.compareTo(A)就是十六进制的30-41=-17。小写字母a-z的位置是U+0061-U+007A。
我们也可以换一个思路去思考对比的结果:A.compareTo(B),假设字符串B的首字母的位置是0,那么A的首字母的位置距离B首字母多远,答案的绝对值就是多少。如果A在B左边,那么答案就是负数;如果A在B右边,答案就是正数。
当两个字符串首字母相同时,就会比较两个字符串的第二位,规则相同,以此类推。如果所有字符都相同,该方法返回值为0。但当A是B或者B是A的subString[0,x]时,返回结果的数值反映的是两个字符长度的差异值。举个例子:“A”.compareTo(“A12345 6”)=-7,因为"A"比"A12345 6"少了7个字符的长度。
集合
- List
list后面的<> 里面可以填多种类型,但是如果不填写类型那就默认为 Object 类型。而当我门再从list 中取出该数据时,单个元素可以转变为其原本属性。
Throwable
- Error 错误
错误通常是不用应用程序担心的问题,比如设备的内存不够。 - Exception
而异常是编译或者运行代码时会出现的问题,需要我们在编写程序的时候注意。