当前位置:网站首页>2022-0801 第六小组 瞒春 学习笔记
2022-0801 第六小组 瞒春 学习笔记
2022-08-02 14:21:00 【烫嘴的辛拉面】
学习目标:
泛型
枚举
线程
学习内容:
- 泛型类泛型接口的应用,何时确定泛型类型。
- 枚举类的声明和使用
- 什么是进程
泛型 Generics
广泛的、普通的类型,反应可以帮助我们把类型确定下来,即把【类型明确】的工作推迟到创建对象或者调用方法的时候
超级数组中要么只能存数字,要么什么都能存
利用泛型可以解决问题
泛型的修饰
- 泛型类
- 泛型方法
- 泛型接口
泛型类:把泛型定义在类上,用户在使用类的时候才能把类型给确定。
使用方法:<> 加上一个未知数,通常用大写字母表示 K T V(实际只要是个单词就可以)
public class SupperSrray<>{T}B
我们在一个类的后面加上了泛型<>,这个T就是一个数据类型,数据T就是一个数据类型,可以直接拿过来用: pivate T t;
如果一个类泛型类没有在创建对象的时候指定泛型类型,默认是Object。在使用这个类的时候去确定这个类型。 SuperArray<String> superArray=new SuperArray<>(); 这个给超级数组就只能存String类型
泛型方法:我们如果只关心某个方法,我们可以不定义泛型类,之定义泛型方法
泛型方法不是一定要在泛型类里,类里不一定要有方法,与抽象方法类似
在定义泛型方法时,要首先定义泛型类型,定义在方法中间,泛型的使用处之前
public <T> T show(T t){ (要传参)
sout(t);
return t; }
void 没返回值 但是泛型通常需要返回值
new Ch03.show(“哈哈”);
泛型类里使用泛型的方法不是泛型方法
要知道什么方法是泛型方法
父类是泛型类,子类是不是泛型类都可以 泛型的声明只能在当前类名后或者方法中
class Father<T>{}
class son<T> extends Father<T>{} (是通过子类的泛型定义了父类的:父跟的子 子类的T 与父类无关,而且声明的类是自己的)
如果继承的时候,没有指出任何泛型,当前子类不是泛型
如果在一个泛型类中尽量不要使用泛型方法,泛型方法多适用于非泛型类中。
静态方法:static <T> T info(T t)
静态方法如果是泛型方法,泛型的声明必须写,因为静态结构是属于类的,不属于某个对象。
<?>通配符 可以接受任何类型
如果使用Object类型,就不应用泛型
类型参数化:
类型擦除:为了兼容性,使用原始类型(没有泛型)是可以的,在泛型新出的时候,还存在大量未使用泛型代码,为了保证代码的兼容性,将参数化类类型的实例传给设计用于原始类型的方法必须
为了保持兼容性,Java的泛型中,有一种伪泛型,在编译的时候所有的泛型都会被擦掉。
泛型的本质就是约定了一个需要遵守的规则 确定了泛型之后,这个数组统一只放统一类型
要求
1.泛型不能是基本数据类型 用包装器类型,或long
<>里面应该放的类名,数组是在编译后才会生产一个类($xxxx)
- 方法重载 同一个类 方法名相同 参数不同
类型擦除
- 多态上
泛型的应用场景
- 发生在父类或者接口中,起到的规范的作用,对里面的数据类型没有明确要求
- 容器类(超级数组,链表,队列,栈)
当类型无法确定时,使用泛型
更多的使用的泛型类和接口
枚举 enum
应用场景:某些情况下,一个类的对象的个数是有限的,如季节、星期。对象是有限个的时 候可以使用枚举
规定这个类的对象的个数
public enum Season{
SPRING(1,春天),
SUMMER(2,夏天);
}
不需要无参构造器,默认构造器是私有化的,不可以创建对象
Season season=Season.SPRING;
类名+属性名
在枚举类中,把需要用到的对象声明出来
写对应的构造器
可以有set,get方法
枚举的应用:
1.switch...case中使用 case SPRING
2.枚举的静态导入 static com.jsoft.afternoon.Season.*(枚举全类名) *代表导入枚举类的全部对象
3.所有的枚举类要以Enum结尾 SeasonEnum
使用枚举类实现单例模式: 单元素的枚举类型已经成为实现单例模式的最佳方案
枚举可以当内部类用
class Singleton{
私有化构造器
private Singleton(){}6
提供公有的获取实例的静态方法
public static Singleton getInstance(){
return SinglutonHolder.INSTANT.instant;
}
声明一个枚举类(内部类)
private enum SingletonHolder{
INSTANT;
private final Singleton instant;
SingletonMolder(){
instant=new Singleton();
}
}
}
public class Ch05{
sout(Sing)
}
所有东西都是静态的
枚举的优势
- int 类型不具备安全性,如果定义int的时候少写了个final,会存在被他人修改的风险。如果是枚举类,他天然就是一个常量类。
- int类型定义不够明确。如果想在控制台打印输出1
枚举里都是常量,静态 推荐使用==符号比较
学习时间:
- 上午:7:30-12:00
- 下午:1:30-5:00
- 晚上:6:00-11:00
学习产出:
- 泛型类泛型接口的应用,确定泛型类型。
- 枚举类的声明和使用
- 什么是进程
边栏推荐
猜你喜欢
随机推荐
ks.cfg 怎么读取光盘 (cdrom) 上的文件并执行对应的脚本
Scala的安装和IDEA的使用(初入茅庐)
【面经】被虐了之后,我翻烂了equals源码,总结如下
flask获取post请求参数
DOM —— 页面的渲染流程
Principles of permutation entropy, fuzzy entropy, approximate entropy, sample entropy and approximate entropy implemented by MATLAB
【TCP 和 UDP 基本原理】
smart_rtmpd 的 NAT 映射方式使用说明
我的第一篇博客
DOM —— 事件代理
DOM —— 事件绑定与解绑
【无标题】
golang八股文整理(持续搬运)
Jenkins 参数化构建(Extended Choice Parameter)
JSP技术
web渗透之sql注入
Redis6
8.0以上MySQL的常见错误
Filter 过滤器
smart_rtmpd 的 VOD 接口使用说明