第5讲 接口、String常用的API、包装类、正则表达式、File文件类

1 接口的特点

1、我们使用interface关键字定义接口
2、我们使用implements关键字建立接口实现类与接口的实现关系
     接口是父级,接口实现类是子级
3、接口实现类如果实现部分/不实现接口中的抽象方法,那么实现类是一个抽象类
     接口实现类如果实现了接口所有的抽象方法,那么这个实现类是一个普通类
4、抽象类与接口都不可以实例化/创建对象
5、接口没有构造函数,实现类使用的super()是父类的无参构造
      如果没有明确指定父类,super()代表的才是Object的无参构造
6、接口中都是静态常量,没有成员变量,因为会默认拼接public static final
7、接口中都是抽象方法,默认会拼接public abstract
     故此:静态常量与抽象方法默认拼接的部分,可以省略不写
8、接口不是类!!!
9、接口是用来制定规则的【有哪些功能?方法有参数吗?有返回值吗?】
      方法具体的实现交给接口的实现类去完成

2 接口与类的复杂关系 

1. 类与类的关系

继承关系,只支持单继承
比如A是父类,B是子类,B具备A的所有功能
如果B对A的功能不满意,可以重写(两同 两小 一大)

2. 类和接口的关系

实现关系,可以单实现,也可以多实现
比如:多实现:class A implements B,C{}
A是实现类,B和C是接口,A需要实现BC接口的所有抽象方法,否则A就是一个抽象类

3. 接口与接口的关系

继承关系,可以单继承,也可以多继承
interface A extends B,C{}
A B C 都是接口,A是子接口,具有B C父接口的所有功能(抽象方法)
class X implements A{}
X实现类需要实现A接口,以及A接口继承自B C接口的所有抽象方法,否则就是抽象类

class O extends A implements B,C{}
其中O是实现类,也是A的子类,同时拥有A的所有功能,并且需要实现BC的所有功能

4.接口与抽象类的区别

1.接口是一种用interface定义的类型
抽象类是一种用class定义的类型
2.接口中的方法都是抽象方法
抽象类中的方法不做限制
3.接口中的都是静态常量
抽象类中可以写普通的成员变量
4.接口中没有构造方法,不可以实例化
抽象类中有构造方法,但是也不可以实例化
5.接口是先天设计的结果,抽象是后天重构的结果
6.接口可以多继承,抽象类只能单继承

3 内部类总结 

1.内部类创建对象的格式:
外部类名.内部类名 对象名 = 外部类对象.内部类对象
2.根据内部类的位置不同,分为:
成员内部类(类里方法外)
局部内部类(方法里)
3.内部类可以直接使用外部类的资源,但是外部类使用内部类资源时
需要先创建内部类的对象,通过内部类的对象来调用
4.如果内部类被private修饰,无法直接在外界创建内部类对象
我们可以创建外部类的对象,间接访问内部类的资源
5.如果内部类被static修饰,可以把这个类称为静态内部类
静态内部类不需要先创建外部类对象,而是先通过外部类的类名找到内部类,再创建内部类对象
6.如果静态内部类中有静态资源,可以不创建一个对象,就通过
外部类名.内部类名.静态资源名的链式加载的方式,使用这个资源
7.直接创建外部类对象,调用局部内部类所处的方法时,并不会触发局部内部类的功能
需要在局部内部类所处的方法中,先创建局部内部类对象,并调用其功能,功能才会被触发
8.匿名内部类没有名字,通常与匿名对象结合在一起使用
9.匿名对象只能使用一次,一次只能调用一个功能
匿名内部类其实就是充当了实现类的角色,去实现未实现的方法,只是没有名字而已
如果想要多次使用实现后的功能,还要创建之前的普通对象

4 String常用的API 

int hashCode() 返回此字符串的哈希码
boolean equals(Object anObject) 将此字符串与指定的对象比较,比较的是重写后的串的具体内容
String toString() 返回此对象本身(它已经是一个字符串!)

int length() 返回此字符串的长度
String toUpperCase() 所有字符都转换为大写
String toLowerCase() 所有字符都转换为小写
boolean startsWith(String prefix) 测试此字符串是否以指定的元素开头
boolean endsWith(String suffix) 测试此字符串是否以指定的字符串结束

char charAt(int index) 返回指定索引/下标处的 char 值/字符
int indexOf(String str) 返回指定字符在此字符串中第一次出现处的索引
int lastIndexOf(String str) 返回指定字符在此字符串中最后一次出现处的索引
String concat(String str) 将指定字符串连接/拼接到此字符串的结尾,注意:不会改变原串
String[] split(String regex) 根据给定元素来分隔此字符串

String trim() 返回去除首尾空格的字符串
byte[] getBytes() 把字符串存储到一个新的 byte 数组中
String substring(int beginIndex) 返回一个新子串,从指定下标处开始,包含指定下标
String substring(int beginIndex, int endIndex) 返回一个新子串,从执定下标开始,到结束下标为止,但不包含结束下标
static String valueOf(int i) 把int转成String

5 包装类 

  1. Java的数据类型只有两大类:8大基本类型与引用类型
  2. 包装类是引用类型中的一种,包装类与基本类型一一对应,也有8种
  3. 基本类型只能存自己类型的值,没有其他额外的功能
  4. 包装类型是对基本类型进行了包装,提供了丰富的功能,包装类型是基本类型的拓展
  5. 包装类型Integer的创建方式:
    1)Integer i1 = new Integer(5); 没有高效的效果,new一次,创建一个包装类对象
    2)Integer i2 = Integer.valueOf(5); 有高效的效果,数据在-128~127的范围内,才有高效的效果
    3)Integer i3 = 5; 自动装箱:编译器会把int类型5装箱,变成Integer,底层调用的方法:valueOf(5)
  6. 包装类型Double的创建方式:
    1)Double d1 = new Double(3.4); 没有高效的效果,new一次,创建一个包装类对象
    2)Double d2 = Double.valueOf(3.4);这个也没有高效的效果,只有Integer有
  7. Integer的常用方法:i1.parseInt(“80”);将字符串80转成int类型的80
    Double的常用方法:d1.parseDouble(“80”);将字符串80转成double类型的80
  8. 自动装箱与自动拆箱: 
    1)Integer i3 = 5; 自动装箱【基本类型 到 包装类型】:
    编译器会把int类型的5装箱,变成Integer类型,底层调用的方法:valueOf(5)
    2)int n = i3;自动拆箱【包装类型 到 基本类型】:
    编译器会把包装类型的i3中的数据取出来,把这个值赋值给基本类型int
    底层调用的方法:i3.intVlaue();

6 浮点数运算不精确的解决方案:BigDecimal

1、如果使用一个工具,必须先创建这个类的对象,如果想创建对象,必须先了解它提供了哪些构造方法
2、创建BigDecimal对象的方式:
        1)BigDecimal(double val) :将double类型的数据作为参数,交给BigDecimal对象【不用,因为double本身不精确】
        2)BigDecimal(String val) :将String类型的数据作为参数,交给BigDecimal对象【用这个】
        注意:double->String直接拼接一个空串“”就可以
3、使用对象进行加减乘除操作,注意:除法除不尽时会抛出异常,所以需要指定除不尽时保留几位小数以及舍入方式

7 正则表达式

作用: 拿着我们指定好的规则,去判断数据是否符合这个规则

指定规则:String regex = “[0-9]{17}[0-9X]”;
拿着数据与规则做比较:input.matches(regex)–>如果匹配,matches方法返回true
注意:单个斜杠表示转义字符,所以在正则中如果想要表示单个斜杠,需要写双斜杠
至于正则表达式的对照关系,详见笔记中正则速查表

 

 8 File 文件类

创建File类的对象:new File(String pathname) :这个参数是一个String类型的路径名,这个路径可能是:
1)文件的路径 “D:\ready\1.txt”
2)文件夹的路径 “D:\ready\a”
3)之前不存在的文件/文件夹的路径:这个路径暂时在windows中还未创建出来
注意:new File类的对象只是在内存中多个一个Java对象,并不会真的帮我们在外部创建一个新的文件/文件夹

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lushao6688

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值