220815
变量、常量、作用域
1、变量:可以变化的量
2、变量作用域:
3、常量:初始化不能再改变值!不能变动的值!
运算符
1、i++和++i(–同理)
2、逻辑运算符:
3、位运算
<< 相当 *2
>> 相当 /2
4、条件运算符:
x ? y : z 相当于 if () {}
x为真,输出y,为假输出z
220816
用户交互Scanner
Switch选择结构
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入:");
String score = scanner.nextLine();
switch (score) {
case "A":
System.out.println("牛");
break;
case "B":
System.out.println("还行");
break;
default:
System.out.println("输入的什么玩意儿");
}
}
循环:
while
do…while
for
增强for循环
for (int x : number) {
System.out.println(x);
}
break和continue
方法
1、重载
重载:方法名必须相同,返回值类型可以不同,参数类型必须不相同,不管是个数还是类型
2、可变参数
3、递归
数组
冒泡排序
稀疏数组(行 | 列 | 值)
第几行第几列的什么值
面向对象
- 面向对象的本质:以类的方式组织代码,以对象的组织(封装)数据
- 三大特性: 封装、继承、多态
方法调用:
静态方法: 加static关键字,可直接调用,静态方法和类一起加载
非静态方法: 对象.方法名调用,类实例化(new)之后才存在
形参和实参: 方法后面跟着未知参数是形参,调用后-后面赋值的就是实参
this关键字:表示当前类或对象
构造器(构造方法):
- 和类名相等
- 没有void, 没有返回值
作用:
1、需要new对象就要有构造器,本质就是在调用构造器
2、用来初始化值
3、无参构造和有参构造共存
220822
Java三大特征:封装、继承、多态
封装:
继承:
所有的类直接或间接继承Object类
super:
super注意点:
- super调用父类的构造方法,必须在构造方法的第一个
- super必须只能出现在子类的方法或构造方法钟
- super和this不能同时调用构造方法
super 与 this:
- 代表对象不同:
– this:本身调用者对象(本类里面的)
– super:代表父类对象 - 前提:
– this:没有继承也可以使用
– super:只能在继承条件下才能使用 - 构造方法:
– this:本类的构造
– super:父类的构造
方法重写
静态方法和非静态方法区别:静态方法的方法调用只看左边( A a = new A() 、B b = new A() )
需要有继承关系,子类重写父类的方法!!!
- 方法名必须相同
- 参数列表必须相同
- 修饰符:范围可以扩大但不能缩小; public > protected > default > private
- 抛出异常:范围可以缩小但不能扩大
为什么要重写方法:
父类的方法子类用不到或不满足子类的要求
============================================================================
220823
多态
多态是要有继承才能实现的
多态注意事项:
-
多态是方法的多态,属性没有多态
-
父类与子类有联系 类型转换异常! ClassCastException!
-
多态存在的条件:
- 继承关系, 方法需要重写, 父类引用指向子类的对象 (father a = new son());
不能被重写的方法:
- static 方法,属于类,不属于实例
- final 常量,存在于常量池
- private 方法,私有
判断两对象间是否有父子关系instanceof
类型之间的转换:父子关系
//高 低
Person obj = new Student();
// 高转低无需强转,低转高需要强转
// 子类强转父类会丢失自己本来的方法
============================================================================
static关键字
类加载的顺序:静态代码块->匿名代码块->构造方法
静态代码块只执行一次
加了static的属性或方法,可以直接用类名点
final关键字
被final修饰的类不能被继承
============================================================================
抽象类
这是父类:
这是子类:
父类是抽象类并且里面有抽象方法,子类继承父类,要么子类重写父类的方法要么子类也变成抽象类
抽象类特点:
- 这个抽象类不能new,只能考子类去实现它
- 抽象类里面可以写普通方法
- 抽象方法必须在抽象类中
============================================================================
接口
接口可以多继承
接口中所有定义的方法其实都是抽象的 public abstract(可省略)
接口里定义的属性都是静态常量(不过不经常使用)
作用:
1、约束
2、定义不同的方法,让不同的人去实现
3、方法:public abstract
4、属性:public static final
5、接口不能被实例化,接口中没有构造方法~
6、implements可以实现多个接口
7、必须重写接口里的方法