java基础回顾
- 默认就是判断是否为true,所以可以省略不写
boolean b = true;
if(b==true){}
if(b){}
- 数字之间可以用下划线分割,输出结果不会有下划线
int money = 10_0000_0000;
int a = 20;
long b = a*money;
计算结果为-1474836480溢出了
先把一个数转为long 结果为200000000
long = a*((long)money);
- 字符串在前后面的数值会拼接,如果在后会运算
System.out.println(1+1+"");//2
System.out.println(""+1+1);//11
- javadoc 生成类文档
IDEA-->Tools-->Generate JavaDoc
Doc-->javadoc -encoding UTF-8 -charset UTF-8 Number.java
- Scanner 扫描仪对象java.util.Scanner,通过它来获取用户的输入
public static void main(String[] args) {
//创建Scanner对象,获取键盘输入
Scanner scanner = new Scanner(System.in);
System.out.println("请输入数据:");
//nextLine()以回车为结束符next()以空格为结束符
String str = scanner.nextLine();
System.out.println("我输出了:"+str);
//io流使用完需要关闭
scanner.close();
}
- for(初始化值int i=1;条件判断i<=10;迭代i++)
死循环代码 没有条件判断值
for(;;){
System.out.println("我限循环");
}
每行输出三个数据 二个就是10 四个就是20 五个就是 25 以此类推
if (i%15==0){
System.out.println();
}
- 九九表
for (int i = 1;i <=9; i++) {
for (int j = 1;j <=i; j++) {
System.out.print(j+"*"+i+"="+j*i+"\t");
}
System.out.println();
}
- 可变长参数 可以传入很多同类型参数 必须是最后一个参数而且只能有一个
public void ceShi(int a,Double... b){}
- 使用new关键字,本质是在调用构造器,构造器用来初始化值
public Student(){}
有参构造:一旦定义了有参构造,无参构造就必须显示定义
String name;
public Student(String 形参){
this.name = 形参;
}
- 属性私有set/get就是封装
1.提高程序安全性,保护属性数据
2.隐藏代码实现细节,可增加业务代码
3.统一接口
4.系统可维护性增加
三元运算符 age后边是条件判断 ?如果达成条件执行 :属于else
public void setAge(int age) {
this.age = age > 120 ? 3 : age;
}
-
super:
- super 调用父类的构造方法,必须在构造方法的第一个
- super 只能出现在子类的方法和构造方法中!
- super 和 this 不能同时调用构造方法!
-
this:
- this 代表调用本类的属性和方法 super 代表调用父类中的属性和方法
- this 没有继承也可以使用 super 只能在继承条件下使用
- this(); 调用本类构造 super(); 父类的构造!
-
重写:
- 需要有继承关系,子类重写父类的方法!
- 修饰符,范围可以扩大,但不能缩小,private不能重写
- 抛出的异常,可以被缩小,不能被扩大
- 方法名必须相同,参数列表必须相同,方法体不同!
- ps:而重载是在同一个类
println()
就是一个最常使用的"重载"方法System.out.println();
他可以根据不同参数,调用不同方法,输出不同结果
-
多态:
-
多态是方法的多态,属性没有多态
-
必须有继承关系,不然就不叫多态,子类重写父类方法,父类引用指向子类对象
-
子类能调用的方法都是自己的或者继承父类的
-
父类可以指向子类,但是不能调用子类独有的方法
-
对象执行哪些方法,主要看对象左边的类型,是谁就执行谁的,如果都有执行子类,
-
Object是所有类的父类
Student student = new Student(); Object student1 = new Student(); Person student2 = new Student();
-
-
static:
- 非静态方法可以直接访问类中的静态方法
- 静态方法可以调用静态,但是不能调用非静态 ps:因为静态方法随类一块加载,加载之前都没有非静态方法,所以不可以
- 静态代码块只执行一次,匿名代码块随对象创建执行(可以赋初始值),都在构造方法之前执行
-
抽象类:
- 抽象类的所有方法,继承他的子类(除非子类也是抽象),都必须要去实现
- 抽象类不能new(不能实例化),只能被继承和实现
- 抽象类可以包含属性,方法,构造方法
- 抽象类的意义:把一系列相同的属性封装到一起,继承他的子类除了要必须实现它的方法之外,然后对自己特有的属性和方法进行补充即可,这样就对代码的维护和重用有益
-
接口:
- 接口中只有方法的定义,让不同的类实现
- 一个类只能继承一个类,但可以实现多个接口,实现后必须重写接口中的方法
public class me extends Student implements a,b;
- 接口没有构造方法,也不能被实例化
-
异常:
try { 监控区域代码块 System.out.println(a/b); }catch (Throwable e){ 解决异常代码块 System.out.println("发生了异常"); }finally { System.out.println("无论怎么样都会被执行"); } IDEA快捷键 Ctrl+Alt+T 方法中 throw 抛异常,方法上 throws 抛异常