目录
一、枚举
1、枚举的简介
指由一组固定的常量组成的类型
2、枚举的语法
枚举类型类的定义
访问修饰符 enum 类名{
//枚举类型的值
}
public enum Genders{
Male,Female
}
枚举类型的测试类成员变量引用
public class Student{
private Genders sex;
}
3、代码示例
类的代码:
package com.bdqn.ready;
/**
* @authorDesc 收获源于是每一分的努力
* @author Jule_zhou
* @date 2022-08-10 17:59:15
* @version
* @description
*/
public enum Week {
/**
* 日期
*/
MON,TUE,WED,THU,FRI,SAT,SUN
}
测试类代码
package com.bdqn.ready;
/**
* @authorDesc 收获源于是每一分的努力
* @author Jule_zhou
* @date 2022-08-10 17:59:11
* @version
* @description
*/
public class Test{
public static void main(String[] args) {
System.out.println("星期一:" + Week.MON);
System.out.println("星期二:" + Week.TUE);
System.out.println("星期三:" + Week.WED);
System.out.println("星期四:" + Week.THU);
System.out.println("星期五:" + Week.FRI);
System.out.println("星期六:" + Week.SAT);
System.out.println("星期日:" + Week.SUN);
}
}
4、枚举的优势
- 枚举可以使代码易于维护,保证类型安全。
- 枚举易于输入,使用枚举赋值,只需要输入枚举名,然后输入点操作符就能将所有的值显示出来。
- 枚举使代码更清晰,允许使用描述性的名称表示数据,使用时直观方便。
二、包装类
1、包装类简介
Java语言是面向对象的,但是Java中的基本数据类型却不是面向对象的,这在实际开发中存在很多的不便。为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类,称为包装类。
2、包装类的作用
- 提供了一系列实用的属性和方法,方便对象的操作。
- 集合不允许存放基本数据类型数据,存放数字时,要用包装类型。
3、包装类与基本数据类型的对应关系
基本数据类型 | 包装类 |
---|---|
byte | Byte |
boolean | Boolean |
short | Short |
char | Character |
int | Integer |
long | Long |
float | Float |
double | Double |
4、包装类的构造方法
方法一、public Type(type value)
// 将基本数据类型520转换为包装类
Integer i=new Integer(520);
方法二、public Type(String value)
Integer i = new Integer(“520”);
特别注意:
除Character类外其他包装类可将一个字符串作为参数构造它们的实例
Boolean类构造方法参数为String类型时,若该字符串内容为true(不考虑大小写),则该Boolean对象表示true,否则表示false
当包装类构造方法参数为String 类型时,字符串不能为null,且该字符串必须可解析为相应的基本数据类型的数据,否则编译通过,运行时NumberFormatException异常
5、继承关系解析
6、方法说明
Number中的方法
- inValue,longValue,floatValue,doubleValue,doubleValue均为抽象类方法
- byteValue,shortValue具有返回值,返回属性分别为byte与short
除去char的基本数据类型包装类中的方法
返回值类型 方法名 | 作用 |
---|---|
String toString(基本数据类型 参数) | 将数据转换为字符串类型 |
包装类 valueOf(基本数据类型 参数) | 将基本数据类型转换为包装类 |
基本数据类型 parse包装类(String s, int radix) | 把字符串转换为相应的基本数据类型数据 |
示例:String toString(基本数据类型 参数)
byte bt=12;
String b=Byte.toString(bt);
short sh=25;
String s=Short.toString(sh);
String num=Integer.toString(520);
String l=Long.toString(123456789l);
String f=Float.toString(3.14f);
String PI=Double.toString(3.1415926d);
String bool=Boolean.toString(false);
示例:基本数据类型 parse包装类(String s, int radix)
byte b=Byte.parseByte("125");
short s=Short.parseShort("3256");
int num=Integer.parseInt("36");
long l=Long.parseLong("123456789");
float f=Float.parseFloat("3.14");
final double PI=Double.parseDouble("3.14159");
boolean bool=Boolean.parseBoolean("false");
三、简述装箱与拆箱
1、装箱
基本类型转换为包装类的对象
Integer intObj = 5; //装箱
2、拆箱
包装类对象转换为基本类型
int intValue = intObj; //拆箱
3、包装类的特点
- 所有包装类都是final类型,不能创建它们的子类
- Java 5.0版本以后,程序员不需要编码实现基本数据类型和包装类之间的转换,编译器会自动完成。
- JDK1.5后,允许基本数据类型和包装类型进行混合数学运算。
- 包装类并不是用来取代基本数据类型的,在基本数据类型需要用对象表示时使用
四、Math类
Math类提供了常用的数学运算方法和两个静态常量E(自然对数的底数)和PI
方法名 | 备注 |
---|---|
abs(int a) | 返回 int 值的绝对值 |
ceil(double a) | 返回最小的(最接近负无穷大)double 值,该值大于等于参数,并等于某个整数。 |
floor(double a) | 返回最大的(最接近正无穷大)double 值,该值小于等于参数,并等于某个整数。 |
max(int a, int b) | 返回两个 int 值中较大的一个。 |
min(int a, int b) | 返回两个 int 值中较小的一个。 |
random() | 返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。 |
round(double a) | 返回最接近参数的 long。 |
sqrt(double a) | 返回正确舍入的 double 值的正平方根。 |
代码说明
// 代码
// 结果
System.out.println(Math.abs(-10));
// 10
System.out.println(Math.ceil(Math.PI));
// 4.0
System.out.println(Math.floor(Math.PI));
// 3.0
System.out.println(Math.max(1,10));
// 10
System.out.println(Math.min(1,10));
// 1
System.out.println(Math.random());
// (显示一个,大于等于 0.0 且小于 1.0,的双精度浮点数)
System.out.println(Math.round(Math.PI));
// 3
System.out.println(Math.sqrt(1.44));
// 1.2
五、Random类
Random类:用于生成伪随机数流
构造方法 | 备注 |
---|---|
Random( ) | 创建一个新的随机数生成器。 |
Random(long seed) | 使用单个 long 种子创建一个新的随机数生成器。 |
方法名 | 备注 |
---|---|
next(int bits) | 生成下一个伪随机数。 |
nextInt( ) | 返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。 |
nextInt(int n) | 返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int 值。 |
六、String类
1、常用方法
方法名 | 作用 |
---|---|
char charAt(int index) | 返回指定索引处的 char 值。 |
String concat(String str) | 将指定字符串连接到此字符串的结尾。 |
boolean contains(CharSequence s) | 当此字符串包含指定的 char 值序列时,返回 true。 |
boolean equals(Object anObject) | 将此字符串与指定的对象比较。 |
boolean equalsIgnoreCase(StringanotherString) | 将此 String 与另一个 String 比较,不考虑大小写。 |
byte[] getBytes() | 使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。 |
int indexOf(String str) | 返回指定子字符串在此字符串中第一次出现处的索引。 |
int lastIndexOf(String str) | 返回指定子字符串在此字符串中最右边出现处的索引。 |
int length( ) | 返回此字符串的长度。 |
boolean matches(String regex) | 告知此字符串是否匹配给定的正则表达式。 |
String replace(CharSequence target, CharSequence replacement) | 使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。 |
String[] split(String regex) | 根据给定正则表达式的匹配拆分此字符串。 |
String substring(int beginIndex) | 返回一个新的字符串,它是此字符串的一个子字符串。 |
String substring(int beginIndex, int endIndex) | 返回一个新的字符串,它是此字符串的一个子字符串。 |
char[] toCharArray() | 将此字符串转换为一个新的字符数组。 |
String toLowerCase() | 将此 String 中的所有字符都转换为小写。 |
String toUpperCase() | 将此 String 中的所有字符都转换为大写。 |
String trim() | 返回字符串的副本,忽略前导空白和尾部空白。 |
static String valueOf(Object obj) | 返回 Object 参数的字符串表示形式。 |
String replace(CharSequence target, CharSequence replacement) | 使用指定的字面值替换替换此字符串所有匹配字面值目标序列的子字符串。 |
2、部分方法说明
方法名 | 作用 |
---|---|
int length( ) | 返回字符串中的字符数。 |
String trim() | 返回字符串的副本,忽略前导空白和尾部空白。 |
boolean equals(Object anObject) | 比较存储在两个字符串对象的内容是否一致 。 |
String[] split(String regex) | 将一个字符串分割为子字符串,结果作为字符串数组返回 |
String类的concat() | 将指定字符串连接到此字符串的结尾。(拼接字符串) |
特殊说明:拼接char类型时候,需要使用char的包装类转字符串类型
String verification = "";
char character = '';
verification = verification.concat(Character.toString(character));
3、“==”和equals()有什么区别
==:判断两个字符串在内存中的地址,即判断是否是同一个字符串对象
equals():检查组成字符串内容的字符是否完全一致
4、字符串比较的其他方法
方法名 | 作用 |
---|---|
boolean equalsIgnoreCase(StringanotherString) | 字符串比较时不考虑大小写。 |
String toLowerCase() | 将此 String 中的所有字符都转换为小写。 |
String toUpperCase() | 将此 String 中的所有字符都转换为大写。 |
5、字符串的搜索和提取方法
方法名 | 说明 |
---|---|
public int indexOf(int ch) public int indexOf(String value) | 搜索第一个出现的字符ch(或字符串value),如果没有找到,返回-1 |
public int lastIndexOf(int ch) public int lastIndexOf(String value) | 搜索最后一个出现的字符ch(或字符串value),如果没有找到,返回-1 |
public String substring(int index) | 提取从位置索引开始的字符串部分 |
public String substring(int beginindex, int endindex) | 提取beginindex和endindex之间的字符串部分 |
七、StringBuffer
1、StringBuffer的特点
- StringBuffer类位于java.util包中,是String类的增强类。
- 对字符串频繁修改时,使用StringBuffer类可以大大提高程序执行效率
2、StringBuffer类的常用方法
方法名 | 说明 |
---|---|
strb.toString() | 将StringBuffer类型的字符串转化为String类型的对象返回 |
strb.append(Object obj) | 将参数连接到字符串后并返回 |
strb.insert (int offset, Object obj) | 将参数插入到字符串指定位置后并返回 |
3、String类、StringBuffer类和StringBuilder类的区别
Q:String是不可变对象,在每次对String类型进行改变时其实都等同于生成了一个新的String对象,然后再指向新的String对象。
A:经常改变内容的字符串最好不要使用String,因为每次生成对象都会对系统性能产生影响。
Q:StringBuffer是可变的字符串,在每次对StringBuffer对象进行改变时,会对StringBuffer对象本身进行操作,而不是生成新的对象。
A:字符串经常改变的情况可使用StringBuffer,执行效率要比String类高。
Q:JDK5.0后提供了StringBuilder,等价StringBuffer 。
A:区别:StringBuffer类是线程安全的, StringBuilder类是单线程,不提供同步,理论上效率更高
八、Date类、Calendar类、SimpleDateFormat类
1、Date类、SimpleDateFormat类
java.util包中提供的和日期时间相关的类有Date类、Calendar类
java.text包中提供将日期转换为文本的类有SimpleDateFormat类
//创建日期对象
Date date = new Date();
//定制日期格式
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy年MM月dd日 HH:mm:ss");
//调用方法将日期格式化为文本
String now = sdf.format(date);
System.out.println(now);
2、抽象类:Calendar类
Calendar类是抽象类:用于设置和获取日期/时间数据的特定部分
Calendar类提供一些方法和静态字段来操作日历
属性 | 说明 |
---|---|
static int MONTH | 指示月 |
static int DAY_OF_MONTH | 指示一个月中的某天 |
static int DAY_OF_WEEK | 指示一个星期中的某天 |
注意:在此程序中以国际记时规则(星期日为第一天)
方法 | 说明 |
---|---|
static Calendar getInstance() | 使用默认时区和语言环境获得一个Calendar对象 |
int get(int field) | 返回给定日历字段的值 |
3、代码实现
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* @authorDesc 收获源于是每一分的努力
* @author Jule_zhou
* @date 2022-08-09 21:18:43
* @version
* @description
*/
public class Test {
public static void main(String[] args) {
String[] weeks = {"星期一","星期二","星期三","星期四","星期五","星期六","星期日"};
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dates = simpleDateFormat.format(date);
System.out.println("今天是:" + dates);
Calendar calendar = Calendar.getInstance();
System.out.println("今天是:" + weeks[calendar.get(Calendar.DAY_OF_WEEK) - 2]);
}
}