第一周
- Java 的 注释不会出现在可执行程序中
- Java的四种整形
整形 | 范围 | 字节 | 答案 |
---|---|---|---|
byte | -2^7,2^7-1 | 1 | -128~127 |
short | -2^15,2^15-1 | 2 | -32768~32767 |
int | -2^31,2^31-1 | 4 | -2147483648~2147483647 |
long | -2^63,2^63-1 | 8 | -9223372036854775808~922372036854775807 |
- 高效构建String 使用 StringBuilder
1.构建一个空的字符串构建器:
StringBuilder builder = new StringBuilder()
2.每次需要添加一部分内容时,就调用append方法:
builder.append(ch);//appends a single character
bulider.append(str);//appends a string
3.在需要构建字符串时就调用toString方法,将可以得到一个String对象,其中包含了构建器中的字符序列:
String completedString = builder.toString();
延伸:在JDK5.0中引入StringBuilder类。这个类的前身是StringBuffer,其效率略微有些低,但允许采用多线程的方式执行添加或删除字符的操作。如果所有字符串在一个单线程中(通常都是这样)编辑,则应该用StringBuilder替代它。这两个类的API是相同的。
- Scanner 定义在
java.util
包上 - Double bouns= 500 输出 bouns 是 500.0
- 存在问题,因为不能在嵌套的两个块中声明同名的变量
第三周
1.接口
接口只能 extends 接口
接口 的修饰 只能是 public 和 默认不写
接口中的成员变量必须初始化 因为都是静态成员变量, public static int a = 1;
接口中的类默认 为 public int a();
1.8 以后 可以在接口中声明静态方法 的必须有实现 public static void method(){System.out.println("这是接口的静态方法");}。
1.8 以后可以声明默认方法 必须有实现 public default void method(){ XXXX;}'
可以继承更改
1.9 以后接口可以声明私有方法
1.普通私有方法:解决多个默认方法之间重复代码的问题
格式:private 返回值类型 方法名称(参数列表){ 方法体 }
2.静态私有方法:解决多个静态方法之间的重复代码问题
格式:private static 返回值类型 方法名称(参数列表){ 方法体 }
- 注意:
1.接口没有静态代码块,不能有构造方法
2.一个类可以实现多个接口
3.如果实现类所有实现的多个接口中,存在重复的抽象方法,覆盖重写一次即可
4.如果实现类没有覆盖重写所有接口当中的所有抽象方法,那么这个实现类必须是一个抽象类
5.接口可以多继承,但是如果继承来多个defalut方法相同,那么必须对冲突的defalut方法进行覆盖重写
6.一个类如果直接继承父类当中的方法,和接口当中的默认方法产生了冲突,优先用父类的方法
2.内部类
成员内部类创建时必须先创建外部类 再创建内部类 Outer.Inner in = new Outer().new Inner();
静态内部类 创建时 直接使用类创建即可 Outer.Inner in = new Outer.Inner();
内部类的特点
- 可以使用private、protected修饰。也可以使用abstract、final等修饰.
- 内部类可以直接或利用引用访问外部类的属性和方法,包括私有属性和方法(但静态内部类不能访问外部类的非静态成员变量和方法)。内部类所访问的外部属性的值由构造时的外部类对象决定.
- 外部类要访问内部类的成员,则只能通过引用的方式进行,可问内部类所有成员
- 内部类可以继承同级的内部类,也可继承其它类(除内部类和外部类)
- 内部类可以定义为接口,并且可以定义另外一个类来实现它
- 内部类可以定义为抽象类,可以定义另外一个内部类继承它
- 方法内的内部类不能加范围限定(protected public private),方法内的内部类不能加static修饰符,方法内的内部类只能在方法内构建其实,方法内的内部类如果访问方法局部变量,则此局部变量必须使用final修饰
super
你不写默认是在第一行系统有会加上的。 创建子类对象时,调用子类构造方法之前会先调用父类构造方法
如果你不写第一行,默认你是可以写一个继承过来的属性赋值的,尽管你认为你可以不这样写,但是系统为了以防万一有人这么干,所以super要在第一行,如果不在第一行,你写了个继承来的属性,那这时候没调用super,还没那个属性呢。 因为都是实例属性,必须先有实例,才能使用。
JAVA规定了super()要写在第一行,不写第一行会要报错!