学习目标:
- 掌握枚举类型
- 掌握Date类及Calendar类
- 理解包装类
- 掌握Math类的常用方法
- 会使用String类的常用方法
- 会使用StringBuffer类的常用方法
- 了解String类及StringBuffer类操作字符串的原理
- 会使用Random类生成随机数
—————————————————————————————————————
认识枚举
从Java SE 5.0开始,Java程序设计语言引入了一种新的类型——枚举(Enum)
枚举是指由一组固定的常量组成的类型。使用关键字enum定义。
枚举其实就是一种类型,是java.long.Enum类的子类,继承了Enum类的许多有用的方法。深入了解请自行查看API帮助文档。
在Java中,通常使用枚举表示一组个数有限的值,用于实现对输入的值进行约束检查。
—————————————————————————————————————
例1:
public enum Genders {
男,女
}
public class Student {
public Genders sex;
public static void main(String[] args) {
Student stu = new Student();
stu.sex = Genders.女;
stu.sex = Genders.男;
}
}
例2:根据用户给的数字,告知该数字(1-7)对应的日期该做什么事情
public enum Week {
星期一,星期二,星期三,星期四,星期五,星期六,星期日
}
public class Test {
public void doWhat(Week week){
switch (week) {
case 星期一:
case 星期二:
case 星期三:
case 星期四:
case 星期五:
System.out.println("工作日:好好写代码!");
break;
case 星期六:
System.out.println("周六啦!看看电影休息一下");
break;
case 星期日:
System.out.println("周日啦,你可以休息一下");
break;
}
}
public static void main(String[] args) {
Test test = new Test();
test.doWhat(Week.星期六);
}
}
—————————————————————————————————————
包装类
Java语言是面向对象的,但是Java中的基本数据类型却不是面向对象的,这在实际开发中存在很多不便。为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类,称为包装类。包装类均位于java.lang包中。
包装类的用途主要有两个:
1.提供了一系列实用的方法。
2.集合不允许存放基本数据类型数据,存放数字时,要用包装类型。
包装类的构造方法:
所有包装类都可以将与之对应的基本数据类型作为参数,来构造他们的实例
除Character类外,其他包装类可将一个字符串作为参数构造它们的实例
注意:(1):Boolean类构造方法参数为String类型时,若该字符串内容为true(不考虑大小写),则该Boolean对象表示true,否则表示false。
(2):当Number包装类构造方法参数为String类型时,字符串不能为null,且该字符串必须可解析为相应的基本数据类型的数据,否则编译通过,运行时NumberFormatException异常
—————————————————————————————————————
包装类的常用方法:
1.XXXValue():包装类转换成基本类型
Integer integerId = new Integer(25);
2.toString():以字符串形式返回包装对象表示的基本类型数据
3.parseXXX():把字符串转换为相应的基本类型数据(Character除外)重点记
4.valueOf():
—————————————————————————————————————
装箱和拆箱
基本类型和包装类的自动转换:
在Java SE 5.0版本之后程序员不需要编码实现基本数据类型和包装类之间的转换,编译器会自动完成。
装箱:基本类型转换为包装类的对象
拆箱:包装类对象转换为基本类型的值
例如:
Integer intObject = 5; //基本数据类型转换成包装类
int intValue = intObject;//包装类转换成基本数据类型
注意:包装类对象只有在基本数据类型需要用对象表示时才使用,包装类并不是用来取代基本数据类型的。
—————————————————————————————————————
Math类
java.lang.Math 类提供了一些基本数学运算和几何运算的方法。此类中的所有方法都是静态的。这个类是final类,因此没有子类。
常用方法:
- static double abs(double a ):返回double值的绝对值。例如,Math.abs(-3.5);返回3.5。
- static double max(double a, double b):返回两个double值中较大的一个。例如,Math.max(2.5,90.5);返回90.5。
- static double random():返回一个随机的double值,该值大于等于0.0且小于1.0。
random():
—————————————————————————————————————
Random类 java.util.Random
注意:用同一个种子来初始化两个Random对象,然后用每个对象调用相同的方法,得到随机数也是相同的。
—————————————————————————————————————
String类
String类位于java.lang包中,具有丰富的方法
常用方法:
length()
—————————————————————————————————————
equals():比较两个字符串内容是否相等
面试题:1.equals()与==
2.创建了几个字符串对象
String重写了equals(),变成了比较字符串内容,==依然是比较两个字符串是否为同一对象
结果参考下图:
创建了三个字符串对象:
在Java中,==和equals()方法应用于两个字符串比较时,所以比较的内容是有差别的。==是比较两个字符串对象所在内存中的地址,就是判断是否是同一个字符串对象,,而equals()比较的是两个字符串对象的值。
字符串比较的其他常用方法:
equalsIgnoreCase()方法:比较字符串时忽略字母大小写。
toLowerCase():全部转换为小写
toUpperCase():全部转换为大写
trim():去掉字符串两端的空格
—————————————————————————————————————
字符串链接:
方法1:使用”+“
方法2:使用String类的concat()方法
—————————————————————————————————————
字符串常用提取方法:
—————————————————————————————————————
字符串拆分方法:split()
—————————————————————————————————————
方法一:采用split()方法,需要输入特定字符进行分割
方法二:采用substring()方法进行拆分
—————————————————————————————————————
注意:String的所有操作并不影响字符串本身,影响的是字符串的一个副本。
StringBuffer类和StringBuilder类
使用StringBuffer类处理字符串:除了使用String类存储字符串之外,还可以使用StringBuffer来存储字符串。StringBuffer类也是Java提供的用于处理字符串的一个类,而且他是比String类更高效的存储字符串一种引用数据类型。特别是对字符串进行连接操作时,使用StringBuffer类可以大大提高程序的执行效率。
使用StringBuilder类处理字符串:
Java.lang.StringBuilder是JDK 5.0版本新增的类,它是一个可变的字符序列。此类提供一个与StringBuffer兼容的API,被设计用作StringBuffer的一个简易替换,在大多数实现中,它比StringBuffer执行要快。使用StringBuilder类处理字符串的方法与StringBuffer类基本一样。
详情请查帮助文档。
String类,StringBuffer类及StringBuilder类对比:
1、String:字符串常量
String是不可变的对象,在每次对String类型进行改变时其实都等同于生成了一个新的String对象,然后指向新的String对象,所以经常改变内容的字符串最好不要用String类型,因此每次生成对象都会对系统性能产生影响。
2、StringBuffer:字符串变量
StringBuffer是可变的字符串,在每次对StringBuffer对象进行改变时,会对StringBuffer对象本身进行操作,而不是生成 新的对象,再改变对象引用。所以,在字符串对象经常改变的情况下推荐使用StringBuffer类。
3、StringBuilder:字符串变量
JDK 5.0版本以后提供了StringBuilder类,它和StringBuffer类等价,区别在于StringBuffer类是线程安全的,StringBuilder类是单线程的,不提供同步,理论上效率更高。
—————————————————————————————————————
java.util包中的常用类
日期操作类:
java.util包中提供的和日期时间相关的类有Date类、Calendar类和SimpleDateFormat类等。
Date类对象用来表示日期和时间,该类提供了一系列操作日期和时间各组成部分的方法。Date类中使用最多的是获取系统当前的日期和时间,如Date date = new Date(); 这句代码使用系统当前的时间创建日期对象。
Calendar类也是用来操作日期和时间的类,它可以看作是Date类的一个增强版,Calendar类提供了一组方法,允许把一个以毫秒为单位的时间转换成年、月、日、小时、分、秒。可以把Calendar类当做是万年历,默认显示的是当前的时间,当然也可以查看其它时间。
Calendar类是抽象类,可以通过静态方法getInstance()获得Calender类的对象,其实这个获得的对象是它的子类的对象。
另外常用的还有格式化日期时间的类——DateFormat类,它在java.text包下,是一个抽象类,提供了多种格式化和解析时间的方法。格式化是指将日期转换成文本,解析是指将文本转换成日期格式。使用比较多的是它的子类SimpleDateFormat,SimpleDateFormat类是一个以与语言环境有关的方式来格式化和解析日期的具体类,如**“yyyy-MM-dd HH:mm:ss”** 就是指一种日期和时间格式。
Date
Calendar
SimpleDateFormat
来源:https://blog.csdn.net/weixin_43857032/article/details/87722963