目录
集合
面向对象进阶
继承【补充】
多态【补充】
static关键字
包
Final关键字
代码块
集合
集合和数组的区分:
- 数组:长度固定不变,存储类型:可以存储基本数据类型,也可以存储引用数据类型
- 集合:长度自动伸缩,存储类型:引用数据类型,存储基本数据类型的话需要将它换成对应的包装类然后再进行存储
基本数据类型对应的包装类:
| 基本数据类型 | 对应的包装类 |
byte | Byte |
| short | Short |
| char | Character |
| int | Integer |
| long | Long |
| double | Double |
| float | Float |
| boolean | Boolean |
注意:
- JDK5以后int与Integer可以转换
- 如果要返回多个数据,先将其放入一个容器(数组或者集合)中,再返回
ArrayList创建集合对象:
JDK7:
ArrayList<String> list = new ArrayList<String>();
JDK7以后:
ArrayList<String> list = new ArrayList<>();
泛型:<>:限定集合中存储的数据类型
常用的成员方法:
- boolean add():增加进集合
- boolean remove():从集合中删除
- remove(int index):删除索引指定元素,返回被删除元素
- set(int index(被修改),E e(修改后)):修改索引指定元素,返回被修改的元素
- get(int index):获取索引元素
- int sizr():集合长度,也就是元素的个数,相当于数组的length
集合的遍历:
list.fori回车>>>用list.get(i)获取集合元素
public class Dome { static void main(String[] args) { ArrayList<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); for (int i = 0; i < list.size(); i++) { Integer printDataArray = list.get(i); System.out.println(printDataArray); } } }输出结果:
面向对象进阶
继承【补充】
- 子类无法继承父类中的构造方法
- 成员变量可以被子类继承【public,private可以通过get()、set()】
- 成员方法
- 加载到虚方法标中的可以继承【非private、非static、非final】
- 否则不能继承
多态【补充】
- 一个方法的参数为父类的话,那么其所有子类对象都可以传入(体现扩展性)
- Animal a = new Dog();
- 调用成员变量:编译看左边,运行也看左边
- 调用成员方法:编译看左边,运行看右边
弊端:此时a不能调用Dog里特有的方法,如果要调用,需要向下转型
Dog g = (Dog)a;
g.dog里特有的方法
JDK4新特性:
if(a instanceof Dog d){
d.lookdoor();
}
//判断a是否为Dog类型,是的话就向下转型为Dog类型,变量为d,不是的话直接返回false
static关键字
表示静态修饰符,可修饰成员方法、成员变量
- 被static修饰的变量>>>静态变量
1、被类的所有对象共享
2、随着类的加载而加载,优先于对象出现【不属于对象,属于类】
3、调用:
类名.调用【推荐】
对象名.调用
>>>>共享的就用static进行修饰
- 被static修饰的成员方法>>>静态方法
1、多用于测试类和工具类中
2、JavaBean中很少用
3、调用:
类名.调用【推荐】
对象名.调用
Java中的常用三大类:
- JavaBean:用于描述
- 测试类:用于测试
- 工具类:用于帮助我们去做一些事情,但不描述任何事物的类
- 1、见名知意
- 2、方法定义为静态的
- 3、私有化构造方法
- static的注意事项:
1、静态方法只能访问静态变量和静态方法
2、非静态可以访问静态也可以访问非静态
3、静态方法中没有this
包
- 使用同一包中的类,不需要导包
- 使用java.lang包中的类,不需要导包
- 其他情况都需要导包
- 如果同时用两个包中的同名类,需要用全名(报名+类名)
作用:
- 管理各种不同功能的Java类
写法规则:
- 公司域名 + 包;全英文小写,见名知意
Final关键字
应用场景:一种规则,不想被改变就用它来修饰
- 修饰方法,该方法不能被重写
- 修饰类,该类不能被继承
- 修饰变量,叫做常量,仅赋值一次,不可以被改变
- 在实际开发中常量一般作为系统的配置信息,方便维护,提高可读性
命名规则:
- 全部大写
- 多个单词也是全部大写且中间加上下划线
final修饰:
修饰基本数据类型>>>>>>变量存储的数据值不可变
修饰引用数据类型>>>>>>地址值不可以变,对象内部的数据是可以变的
其实前面的字符串不可改变也是因为final
小细节:
ctrl + shift + u:转成大写
代码块
代码块分为局部代码块、构造代码块、静态代码块【掌握】;前两者已经被淘汰,最后一个需要掌握
- 局部代码块
- 用完就消失
- 构造代码块
- 不够灵活
将构造方法中重复的语句抽到代码块中
写在成员位置
执行:构造代码块优先于构造方法
- 静态代码块
格式:static{}
特点:需通过static关键字进行修饰,随类的加载而加载,自动触发,只执行一次
应用:在类加载时,做一些数据初始化