这里写目录标题
一、泛型
(1)泛型集合
概念: 数据安全性的集合,强制要求集合中存储的数据类型统一
a.list<数据类型> list = new ArrayList<数据类型>();
list<数据类型> list = new ArrayList<>();// 简略写法
b.集合中存储的元素必须是<>中指定的数据类型
例如:list<String> list = new ArrayList<String>(); //常规写法
list<String> list = new ArrayList<>(); //简略写法
(2)自定义的泛型类
a.class 类名<泛型标识>{
//在类中将泛型标识作为一种数据类型
}
例如: class Person<T>{
private T t;
public T getT(){
return T;
}
public void setT(T t){
this.t = t;
}
}
注意: 通常会用K/V/T/E等单个大写字母作为泛型标识。
b.泛型类中泛型标识具体的数据类型是根据对象创建时指定:
类名<具体的数据类型> 引用名 = new 类名<具体的数据类型>();
例如: ArrayList<Integer> list = new ArrayList<Integer>();
注意: 基本数据类型必须使用其包装类型作为泛型类型
(3)泛型的通配符
? 表示任何类型
? extends Number: 表示Number类或Number的任何子类
? super Number: 表示Number类或Number的任何父类
? extends Comparable: 表示任何实现Comparable接口的类
代码演示:
public static void main(String []args){
List<String> s1 = new ArrayList<String>();
List<Integer> s2 = new ArrayList<Integer>();
List<Double> s3 = new ArrayList<Double>();
List<Object> s4 = new ArrayList<Object>();
List<Number> s5 = new ArrayList<Number>();
print(s1);
print(s2);
print(s3);
print(s4);
print(s5);
}
//可以将s1,s2,s3,s4,s5作为实参调用该方法
static void print(List< ? > list){}
//只能将s2,s3,s5作为实参调用该方法
static void print(List< ? extends Number > list){}
//只能将s1,s2,s3作为实参调用该方法
static void print(List< ? extends Comparable>){}
//只能将s4,s5作为实参调用该方法
static void print(List< ? super Number>){}
(4)泛型方法
语法: 泛型写在修饰符和返回值的中间
//表示 T既是Number的子类,还得实现Comparable接口
例如: public <T extends Number & Comparable> void method(){}
二、jdk5.0出现的一些语法
(1)静态引入
作用: 用到一个类中静态成员时,可以省略类名
语法: import static 静态成员所在的类.*;
//意思就是导入lang包中的Scanner类里面的所有静态成员
例如: import static java.lang.Sacnner.*;
import static java.util.Math.*
out.println(random()); //等同于System.our.println(Math.ramdom());
(2)格式化输入输出:printf
String name = "zhang3";
int age = 20;
double score = 96.5;
System.out.printf("name: %s , age: %d ,score: %f",name,age,score);
//打印结果: name: zhang3,age: 20,score: 96.5
//等同于System.out.println("name:" + name + ",age:" + age + ",score:" + score);
//区别: printf是直接格式化打印,println是字符串拼接,而String是不可变长字符串,效率会比printf稍微慢点
%s:字符串占位符
%d:整数占位符
%f:浮点数占位符
%1.3f:保留3位小数 1表示小数点前有1位 3表示小数点后有3位
例如: double d = 1.69541516;
System.out.printf("d= %1.2f",d);// 打印结果1.70
三、枚举
(1)枚举类
概念: 这个类的对象是构造好的,不允许用户构造该类的新对象
特殊的类 默认是Enum的子类 默认被final修饰
例如:
enum Season{
SPRING,
SUMMER,
AUTUMN,
WINTER;
}
完全等价于:
class Season{
public static final Season SPRING = new Season();
public static final Season SUMMER = new Season();
public static final Season AUTUMN = new Season();
public static final Season SPRING = new Season();
private Season(){}
}
(2)枚举值
概念:该枚举类型的对象,也是枚举类中的公开静态常量
例如:
enum Season{
SPRING("春天"),
SUMMER("夏天"),
AUTUMN("秋天"),
WINTER("冬天");
String name;
Season(String name){
this.name = name;
}
public void getName(){
return name;
}
}
(3)语法
(1)所有的构造方法必须是私有的 可以不写,默认添加private(跟接口差不多)
(2)枚举中可以定义抽象方法,由枚举值分别实现
例如:
enum Operator{
ADD{
public double calculate(double a,double b){
return a+b;
}
},
SUBSTRACT{
public double calculate(double a,double b){
return a-b;
}
},
MULTIPLY{
public double calculate(double a,double b){
return a*b;
}
},
DIVISION{
public double calculate(double a,double b){
return a/b;
}
};
public abstract double calculate(double a,double b);
}
这些是我预习整理的一些笔记