目录
1. Java语法新知识
2. 没了
一、 Java语法
基本语法大一已经学过了,此处不再赘述,仅对这次课新了解到的内容和以前掌握不够全面的知识进行整理和额外的查阅
-
String.format(String format , String str1 , String str2 ...)
-
可以对括号内的字符串进行格式化
-
format为目标形式,其中可添加文本和占位符
-
str会按照顺序填进占位符所在的位置,并根据占位符的功能格式化为对应的形式
-
例如:
double x = 1.531; String flo = String.format("保留一位小数的结果是:%.1f" , x); System.out.println(flo);
此时输出结果就是1.5(四舍五入)
-
一些常用的占位符:
%s 字符串 %d 十进制整数 %f 浮点数 %c 字符 %b 布尔类型 %x 十六进制整数 %o 八进制整数
-
占位符中还可以添加其他的标识,进一步规范格式
-
例如:
9 在数字占位符中使用,表示保留9位小数或整数,保留小数时,9前面要加一个小数点 + 为数字添上符号,8会变成+8 0/空格 保留位数的时候,在位数不够的地方补0或者空格 - 左对齐 , 三位一组,用逗号分割十进制整数
-
-
类
- 访问权限分为public, protected, 缺省和private
- public描述的类、变量和方法可以随意访问或修改。一个Java文件只能包含一个public类
- protected只能被本身,子类和同一个包下的文件访问。其他包想使用protected则只能用继承的方式
- 缺省类的访问权限是本身和同包文件。其成员的最高访问权限也是缺省。
- private只能被本身或外部类(相对于内类而言)访问
- final修饰的变量不能被修改,方法不能被重写,类不能被继承
- 类的构造方法可以重载,也可以缺省
-
继承
-
一个类可以用extends关键字来继承另一个类的成员
-
子类拥有比父类更大的数据量,因此不能将父类强转成子类
-
因此,父类引用可以指向子类对象,子类引用不能指向父类对象
-
构造子类时默认执行父类的无参构造方法,除非子类构造方法第一行用super指明调用哪个重载版本的父类构造方法
-
构造方法第一句也可以用this来跳转到自己的另一个重载构造方法中去,this跳转不能出现在其他位置
-
Java中只允许多层继承,不允许多重继承。
-
因此,表示继承关系的图应为树状结构,而不是网状结构。只有一个前节点,但可以有很多后节点
-
例如:
public class Main { public static void main(String[] args) { S s1 = new S(); // 无参构造子类 S s2 = new S(5); // 调用父类重载构造方法 S s3 = new S("0"); // 调用自身其他构造方法 } } class F{ F(int a){ System.out.println("重载构造"); } F(){ System.out.println("普通构造"); } } class S extends F{ S(int a){ super(a); } S(){ System.out.println("this构造"); } S(String a){ this(); } public void fun(){ System.out.println("S"); } }
-
-
方法的重写
-
仅当子类方法与父类重名时使用重写机制
-
两个方法的方法头必须完全相同,但是子类的返回值可以小于父类的返回值(此时发生类型转换)
-
子类默认调用子类方法,除非用super强制调用父类版本
-
构造对象的时候,new后面跟的是子类,这个对象就是子类,默认调用子类版本
-
例如:
Main m1 = new Main(); Main m2 = new S(); S m3 = new S(); m1.F(); m2.F(); m3.F();
这段代码,只有m1执行父类方法,m2和m3都执行子类方法
-
子类不能重写父类的final方法和构造方法,也不能继承父类的构造函数
-
-
方法的重载
- 仅当返回值类型与方法名相同时使用重载机制
- 参数列表必须不同,只调换参数顺序不行
- 返回值类型不同不会出现bug,但不叫重载
-
try-catch
- try语句块中的异常被catch成功捕捉后会运行catch中的语句
- finally无论是否成功捕捉都会执行
- 异常之间也有继承关系。最大的异常是Exception,它的子类有RunTimeException等。
-
下节课可以讲一下递归嘛