JAVA学习经历(第四周)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、枚举

1.枚举

(1) 介绍:枚举属于一种特殊的类,里面只包含一组有限的特定的对象。
(2) 枚举的实现
a. 自定义类实现枚举
1) 因为枚举对象通常为只读,因此不需要提供set方法。
2) 枚举对象可以有多个属性
3) 为了优化,对枚举对象/属性用final+static修饰。
4) 构造器私有化
5) 本类内部创建对象
案例:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
输出:
在这里插入图片描述
b. enum关键字实现枚举

  1. 当我们使enum关键字开发一个枚举类时,默认会继承 Enum 类, 而且是一个 final 类。
  2. 传统的 public static final Week Monday = new Week(“周一”, “工作”); 简化成 Monday(“周一”, “工作”)。
  3. 如果使用无参构造器创建枚举对象,则实参列表和小括号都可以省略。
  4. 当有多个枚举对象时,使用,间隔,最后有一个分号结尾 。
  5. 枚举对象必须放在枚举类的行首。
    所以刚才的案例更改为:
    在这里插入图片描述
    在这里插入图片描述
    输出

在这里插入图片描述

2.enum的常用方法

使用关键字enum 时,会隐式继承Enum 类, 这样我们就可以使用 Enum 类相关。
(1) toString:Enum 类已经重写过了,返回的是当前对象名,子类可以重写该方法,用于返回对象的属性信息。
(2) name:返回当前对象名(常量名),子类中不能重写。
(3) ordinal:返回当前对象的位置号,默认从 0 开始。
(4) values:返回当前枚举类中所有的常量。
(5) valueOf:将字符串转换成枚举对象,要求字符串必须 为已有的常量名,否则报异常!
(6) compareTo:比较两个枚举常量,比较的就是编号。

3.enum实现接口

  1. 使用enum关键字后,就不能再继承其它类了,因为 enum 会隐式继承Enum,而 Java 是单继承机制。
  2. 枚举类和普通类一样,可以实现接口。
    enum 类名 implements 接口 1,接口 2 {}
    代码: 在这里插入图片描述
    在这里插入图片描述
    输出
    在这里插入图片描述

二、常用类

1.包装类

(1) 针对八种基本数据类型相应的引用类型—包装类。
在这里插入图片描述
在这里插入图片描述
(2) 自动装箱和拆箱
在底层调用valueOF()方法,比如Interger.valueOF()
例如
在这里插入图片描述
(3) 包装类型和String类型转换
a. 包装类->String
在这里插入图片描述
b. String类->包装类
在这里插入图片描述
(4) Integer类和Character类的一些常用方法
在这里插入图片描述
输出
在这里插入图片描述
(5)包装类时的注意事项
Integer integer = i;调用valueOF(i)时要注意,

  1. 如果i在 IntegerCache.low(-128)~IntegerCache.high(127),,即-128<i<127时,就直接从数组返回。
  2. 如果不在 -128~127,就直接 new Integer(i)
    根据 == 运算符的性质,导致
    在这里插入图片描述
    在这里插入图片描述

2.String类

(1) 特性
1) String是一个final类,代表不可变的字符序列
2) 字符串说不可变的。一个字符对象一旦被分配,其内容是不可变的。
(2) String类的常用方法
1) equals 区分大小写,判断内容是否相等。
2) equalslgnoreCase 忽略大小写,判断内容是否相等。
3) length 获取字符的个数,字符串的长度。
4) indexOf 获取字符在字符串中第一次出现的索引,从0开始,如果找不到,则返回-1。
5) IastlndexOf 获取字符在字符串中最后一次出现的索引,从0开始,如果找不到,则返回-1。
6) Substring 截取指定范围的字串。
7) charAt 获取某索引处的字符。
8) toUpperCase 转换成大写。
9) toLowerCase 转换成小写。
10) concat 拼接字符串。
11) replace 替换字符串中的字符。
12) split 分割字符串。
13) compareTo 比较两个字符串的大小。
14) toCharArray 转换成字符数组。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.StringBuffer

(1) 特性
1) StringBuffer代表可变的字符序列,可以对字符串内容进行增删。
2) 方法大致和String相同,但StringBuffer是可变长度的。
(2)StringBuffer和String的不同
1) StringBuffer保存的是字符串变量,里面的值可以更改,不用每次更新内容,效率较高。
2) String保存的是字符串常量,里面的值不能更改,每次更新地址,效率较低。
(3) StringBuffer和String的相互转换
A. String—>StringBuffer
String str = “hello”;
1)使用构造器
//注意: 返回的才是 StringBuffer 对象,对 str 本身没有影响 StringBuffer
stringBuffer = new StringBuffer(str);
2)使用的是 append 方法
StringBuffer stringBuffer1 = new StringBuffer();
stringBuffer1 = stringBuffer1.append(str);
B. StringBuffer—>String
StringBuffer stringBuffer2 = new StringBuffer(“hello”);
1)方式 1 使用 StringBuffer 提供的 toString 方法
String s = stringBuffer2.toString();
2)方式 2: 使用构造器来搞定
String s1 = new String(stringBuffer2);
(4) String的常见方法
1) 增append()
2) 删delete() 删除索引>=start&&<=end处的字符。
3) 改replace() 替换索引>=start&&<=end处的字符。
4) 查indexOf() 查找指定的子串在字符串第一次出现的索引,如果找不到返回-1。
5) 插insert() 在索引处插入字符串。
在这里插入图片描述
输出
在这里插入图片描述

4.StringBuilder

(1) 特性
1) 也是一个可变的字符序列,但是并不是线程安全的,优点是在大多数实现中,StringBuilder比StringBuffer更快。
2) 在StringBuilder上的主要操作是append和insert方法,可以重载这些方法,来接受数据。
(2) 方法:因为StringBuilder和StringBuffer均代表可变的字符序列,所以方法是一样的。

5.总结

1) String:不可变字符序列,效率低,但复用率高。
2) StringBuffer:可变字符序列,效率较高,线程安全。
3) StringBuilder:可变字符序列,效率最高,线程不安全。

6.Math类

(1)介绍:Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
(2)Math类常见方法
在这里插入图片描述
在这里插入图片描述
输出
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值