目录
1.枚举
1.1 为什么使用枚举
枚举就是定义一组固定的值,尽管我们可以使用控制语句控制对类属性值的范围控制,但实际上可以使用更方便更高效的枚举类来定义某种属性的取值,这种方法主要应用在属性值为固定值时。
1.2 如何使用枚举
1.2.1 基础使用方法
enum Sex {
MALE,FEMALE;//第一行写枚举类型中存放的固定值
//注意只能用英文,且一般全大写
}
public class Student {
private Sex sex;//定义这个属性为Sex类型的值
public Sex getSex() {
return sex;
}
public void setSex(Sex sex) {
this.sex = sex;
}
public static void main(String[] args) {
Student student = new Student();
student.setSex(Sex.Male);//使用Sex枚举设置属性值,用.来调用enum的属性值
System.out.println(student.getSex());//MALE
}
}
1.2.2 添加映射
由于enum只能添加英文的固定值,因此我们有时需要对它进行转换,使我们得到中文字符串。
enum Sex {
Male("男"),Female("女");//使用
private String name;//定义一个成员变量,表示Sex属性的中文名
Sex(String name) {
this.name = name;//构造器,参数为对应的中文字符串
}
public String getName() {
return name;//可以使用getter方法对该中文名进行调用
}
public void setName(String name) {
this.name = name;
}
}
public class Student {
private Sex sex;
public Sex getSex() {
return sex;
}
public void setSex(Sex sex) {
this.sex = sex;
}
public static void main(String[] args) {
Student student = new Student();
student.setSex(Sex.Male);
System.out.println(student.getSex().getName());//男
}
}
2.包装类
2.1 什么是包装类
2.1.1 定义
每个基础数据类型在java.lang包下,都有各自的包装类,例如常用的int类型对应的Integer包装类,char类型对应的Character包装类。
2.1.2 作用
包装类提供了一些实用的方法,例如基本数据类型和包装类的转换;集合中只能存放对象,想要存放基本类型数据时,就需要使用包装类。
2.2 包装类的构造方法
2.2.1 无参构造
Integer a = new Integer();
//a的初始值为null
//实际上所有对象不赋值的话初始值都是null
2.2.2 带基础数据类型的参数
//参数类型为int类型
//直接使用数值
//或者使用int类型的变量
Integer a = new Integer(1);
int num = 123;
Interger b = new Integer(num);
2.2.3 字符串作为参数
//字符串的内容必须是符合数据类型的规律的,否则会抛出异常
Integer a = new Integer("123");
//Character类不具有这个功能
Character b = new Character("a");//会提示无法填入String类型的值
//Boolean类在识别时,忽略大小写,非true的字符串都默认为false
Boolean c = new Boolean("TrUE");//不报错,且c为true
Boolean d = new Boolean("A");//不报错,且d为false
2.3 包装类的常用方法
2.2.1 xxValue()
返回一个自身代表的基本数据类型(xx)的值
Integer a = new Integer(12)
int value1 = a.intValue();//返回值类型为方法规定的类型
System.out.println(value1);//12
Integer b = new Integer(600);
byte value2 = b.byteValue();//这类方法可以用于强制转换
System.out.println(value2);//88
2.2.2 toString()
实际上所有Object都具有这个方法,该方法是将对象转换为字符串类型的方法,在包装类中,实际上就是将包装类的对象转换为字符串。
String string = Integer.toString(111);//这是个静态方法
2.2.3 parseXx()
将字符串转换为某个基本类型(Xx)。
int a = Integer.parseInt("124");//静态方法
2.2.4 valueOf()
将基本数据类型或字符串转换为包装类,实际上就是构造器调用的方法,不再赘述。
2.4 拆箱和装箱
实际上我们在使用过程中发现,包装类和基础数据类型的直接转换是不需要使用方法的,而是可以自动的相互转换,这个自动转换的过程我们就叫拆箱和装箱。
Integer a = 1;//装箱
int b = a;//拆箱
3. String类
3.1 String类的基本语法
String str1 = "Hello";//使用双引号表示String关键字,这种方法会将该值直接放在静态区
String str2 = new String();//创建一个空字符串,使用new的对象都会放在堆中
String str3 = new String("Hello");//str3与str1所指向的对象并非同一个
3.2 常用方法
3.2.1 length()
String str = "abc";
int len = str.length();//返回str字符串中包含字符的数量
3.2.2 equals()
String str1 = "aa";//存放在静态区
String str2 = "a"+"a";//同样存放在静态区,由于和上面一样,因此不会创建新的String对象
String str3 = new String("aa");//创建了新的String对象,存放在堆中
//equals主要是判断两个字符串的值是否相同
//而比较运算符 == 则是判断两个对象是否在同一个地址
System.out.println(str1 == str2);//true
System.out.println(str1.equals(str2));//true
System.out.println(str1 == str3);//false
System.out.println(str1.equals(str3));//true
3.2.3 equlasIgnoreCase()
//在equals基础之上,不区分大小写的比较
String str1 = "abcD";
String str2 = "AbCd";
System.out.println(str1.equalsIgnoreCase(str2));//true
3.2.4 toLowerCase()/toUpperCase()
//toLowerCase()是将字符串中所有大写字母转换为小写字母
System.out.println("ABCdE".toLowerCase());//abcde
//toUpperCase()是将字符串中所有小写字母转换为大写字母
System.out.println("abcDe".toUpperCase());//ABCDE
3.2.5 concat()
//该方法作用就是连接字符串并返回连接后的字符串
String a = "abc";
String b = "123";
String c = a.concat(b);//c为"abc123"
//concat和连接符"+"的区别在于
//concat只能连接字符串,而+可以在有字符串时,连接所有数据类型
//concat的效率比连接符高很多
3.2.6 trim()
//trim()方法用于去除字符串首尾的空格,并返回去除后的新字符串
String str = " ab c d ";
String new_str = str.trim();//new_str为"ab c d"
3.2.7 indexOf
//该方法用于查找指定字符或字符串的索引值
String str = "abc go go";
int a = str.indexOf('a');//查询字符第一次出现时的索引值//返回0
int b = str.indexOf("go");//也可以是字符串,会返回第一个字符的索引值//返回4
int c = str.indexOf("ac");//如果不存在会返回-1
int d = str.indexOf('g',5);//可以设置查找的起始索引值//返回7
3.2.8 substring()
//该方法用于截取字符串
String str0 = "HelloWorld";
String str1 = str0.substring(2);//返回从该索引值到结尾的字符串
System.out.println(str1);//lloWorld
String str2 = str0.substring(3,6);//返回从开始索引值到结尾索引值-1位置的字符串
System.out.println(str2);//loW
3.2.9 split()
//该方法用于切割字符串,并返回切割后的数组
String str = "a,b,c";
String[] array1 = str.split(",");//返回值为一个数组
//array1中的内容为{"a","b","c"}
String[] array2 = str.split("",2);//第二个参数表示最大分割块数
//array2中的内容为{"a",",b,c"}
4.StringBuffer
4.1 为什么要使用StringBuffer
主要是String类一旦创建后无法被修改,StringBuffer提供了方法可以原地修改,而不必创建新的对象,因此在需要频繁修改字符串时,就要使用StringBuffer。
4.2 StringBuffer常用方法
4.2.1 append()
//append()方法在末尾添加内容,可以添加任何类型的数据
StringBuffer str = new StringBuffer();
str.append("a");
str.append(12);
str.append(true);
System.out.println(str);//a12true
4.2.1 insert()
//该方法可以在指定位置插入一个任意数据的类型
StringBuffer str = new StringBuffer("Hello you are good!");
str.insert(6,"狗蛋 ");//第一个参数为索引值,第二个参数为添加的值
System.out.println(str);//Hello 狗蛋 you are good!
5.Date类
5.1 Date对象
Date date = new Date();
System.out.println(date);
//会显示当前时间的西历表达
//例如Tue Jun 13 18:37:12 CST 2023
//按顺序分别为 星期几,月份,日,时间,时区,年份
5.2 SimpleDateFormat类
5.2.1 将Date对象转换为字符串
SimpleDateFormat sdf =
new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");//日期格式
String curTime = sdf.format(date);
System.out.println(curTime);
//2023年06月13日 18时39分52秒
5.2.2 将字符串转换为Date对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
String time = "1111年1月22日 1时1分1秒 ";
Date date = sdf.parse(time);//转换时需要格式一致
System.out.println(date);
//Sun Jan 22 01:01:01 CST 1111