多态
- 使用前提:
- (1)必须有继承或者实现关系!
- (2)必须存在父类类的变量引用子类类型的对象!
- (3)存在方法重写!
- 格式
父类类型 变量名 = new 子类/实现类构造器;
变量名.方法名();
- 向上转型、向下转型
instanceof 关键字可以校验两个引用对象
变量名 instanceof 数据类型
如果变量属于该数据类型或者其子类类型,返回true。
如果变量不属于该数据类型或者其子类类型,返回false。
- 编译看左边,运行看右边
内部类
一个类定义在另外一个类里面
- 分类:
1. **静态内部类**,类定义在了成员位置 (类中方法外称为成员位置,有static修饰的内部类)
2. **实例内部类**,类定义在了成员位置 (类中方法外称为成员位置,无static修饰的内部类)
3. **局部内部类**,类定义在方法内
4. **匿名内部类**。一般定义在方法中,或者可执行代码中
- 格式
外部类.内部类
静态内部类创建
外部类.内部类 变量 = new 外部类.内部类构造器;
实例内部类创建对象格式
外部类.内部类 变量 = new 外部类构造器.new 内部类构造器;
内部类访问外部类对象的格式是:外部类名.this
匿名内部类
前提:匿名内部类必须继承一个父类或者实现一个父接口。
格式:
new 父类名或者接口名(){
// 方法重写
@Override
public void method() {
// 执行语句
}
};
权限修饰符
- private 本类
- 缺省 本类 本包其他类
- protected 本类 本包其他类 其他包下的子类中
- public 任何地方
常用API
Object类
- 所有类的父类
- 重写toString方法
- 重写equals方法:对象内容比较
- static boolean isNull(Object obj) 判断对象是否为null,如果为null返回true。Objects类下的
Date类
- `public long getTime()` 把日期对象转换成对应的时间毫秒值。
- `public void setTime(long time)` 把方法参数给定的毫秒值设置给日期对象
DateFormat类
- 日期格式化类,把时间格式化为目标格式
- 可以把字符串时间解析成日期对象
// 将日期格式化为字符串
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");**
String rs = sdf.format(“日期对象”)**
String rs = sdf.format("时间毫秒值")**
//将字符串转换成日期
- [ ] **SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");**
- [ ] **String str = "2019-11-11 11:11:11";**
- [ ] **Data d = sdf.parse(str );**
Calendar类
- 日历类,代表了此刻日期对象对应的日历对象
- java.util.Calendar类表示一个“日历类”,可以进行日期运算。它是一个抽象类,不能创建对象,可以使用它的子类:java.util.GregorianCalendar类。
- 常用方法
tips:Calendar的月份值是0-11
Math类
基本数字运算
System类
- 代表了当前JVM虚拟机对应的操作系统对象。
- 可以拿系统时间。
long time = System.currentTimeMillis();
- 可以让程序退出JVM虚拟机,让程序立即死亡!!
System.exit(0); //非零表示异常终止
- 可以做数组拷贝。
arraycopy(Object src, int srcPos,
Object dest, int destPos,
int length)
参数一:原数组。
参数二:从原数组哪个位置开始复制
参数三:目标数组
参数四:复制到目标数组的哪个位置开始。
参数五:复制多少个!
BigDecimal类
浮点数做运算会遇到精度问题,引入此类解决
相关内容 | 具体描述 |
---|---|
包 | java.math 使用时需要导包 |
类声明 | public class BigDecimal extends Number implements Comparable |
描述 | BigDecimal类提供了算术,缩放操作,舍入,比较,散列和格式转换的操作。提供了更加精准的数据计算方式 |
- 常用的方法
public BigDecimal add(BigDecimal value) 加法运算
public BigDecimal subtract(BigDecimal value) 减法运算
public BigDecimal multiply(BigDecimal value) 乘法运算
public BigDecimal divide(BigDecimal value) 除发运算
StringBuilder类
- String类不适合做字符串的拼接,增删等运算。不可变字符串,增删性能较差!
- StringBuillder非常适合做字符串的增删改查操作
- 拼接字符串
StringBuilder sb=new StringBuilder("aa");
sb.append("9999");
包装类
基本类型的封装对象
* boolean Boolean
* byte Byte
* short Short
* char Character
* int Integer
* float Float
* double Double
* long Long
将字符类型的数字串转换为对应的基本类型
Xxxx.parseXxxx("字符串类型的数字")
Xxxx.valueOf("字符串类型的数字"):推荐使用的
将基本类型转换为字符串的三种方法
// 1.把基本数据类型的值转换成字符串:toString()
Integer num = 23 ;
String numStr1 = num.toString();
System.out.println(numStr1+1); // 231
// 2.把基本数据类型的值转换成字符串:
Integer num1 = 23 ;
String num1Str1 = Integer.toString(num1);
System.out.println(num1Str1+1); // 231
// 3.把基本数据类型的值转换成字符串:
Integer num2 = 23 ;
String num2Str1 = num2 + "" ; //常见做法!
正则表达式
字符语法:
- [abc]:代表a或者b,或者c字符中的一个。
- [^abc]:代表除a,b,c以外的任何字符。
- [a-z]:代表a-z的所有小写字符中的一个。
- [A-Z]:代表A-Z的所有大写字符中的一个。
- [0-9]:代表0-9之间的某一个数字字符。
- [a-zA-Z0-9]:代表a-z或者A-Z或者0-9之间的任意一个字符。
- [a-dm-p]:a 到 d 或 m 到 p之间的任意一个字符。
关系符:
8. &&:并且
9. | :或者
预定字符:
- “.” : 匹配任何字符。
- “\d”:任何数字[0-9]的简写;
- “\D”:任何非数字[^0-9]的简写;
- “\s”: 空白字符:[ \t\n\x0B\f\r] 的简写
- “\S”: 非空白字符:[^\s] 的简写
- “\w”:单词字符:[a-zA-Z_0-9]的简写
- “\W”:非单词字符:[^\w]
数量:
16. X? : 0次或1次
17. X* : 0次到多次
18. X+ : 1次或多次
19. X{n} : 恰好n次
20. X{n,} : 至少n次
21. X{n,m}: n到m次(n和m都是包含的)
泛型
上下限
? 可以在使用泛型的时候,代表接收一切类型
? extends Car : ?必须是Car的子类或者本身 。 上限
? super Car : ?必须是Car的父类或者本身 。 下限
- 泛型类定义
修饰符 class 类名<泛型对象>{}
- 泛型方法定义
修饰符 <代表泛型的变量> 返回值类型 方法名(形参){}
- 泛型接口:
修饰符 interface 接口名<代表泛型的变量>{}
泛型类型不确定,可以通过通配符<?>
Collection集合:List , Map , Set
常见的功能
Collection集合作为集合的根类,它的功能是一切集合都可以直接使用的。
- public boolean add(E e): 把给定的对象添加到当前集合中 。
- public void clear() :清空集合中所有的元素。
- public boolean remove(E e): 把给定的对象在当前集合中删除。
- public boolean contains(Object obj): 判断当前集合中是否包含给定的对象。
- public boolean isEmpty(): 判断当前集合是否为空。
- public int size(): 返回集合中元素的个数。
- public Object[] toArray(): 把集合中的元素,存储到数组中