实现类
引用数据类型:数组、类(String)、接口、枚举
枚举
枚举指由一组固定的常量组成的类型
enum 定义枚举的关键字
特点:
类型安全
易于输入
代码清晰
student.sex = Genders.女; // 只能通过枚举点出来。
学会查Java Platform
包装类
包装类把基本类型数据转换为对象
包装类和基本类型对应
提供了一系列方法
集合存放基本数据类型时,要先进行包装
除Character类外,包装类构造方法可以存放字符串,但该字符串必须能转成对应的数据类型。
Boolean类构造方法参数为String类型时,不是true(不管大小写)的字符串,全为false
枚举的使用
public enum Course {
// 保存在枚举的值是一个对象
L1("大数据开发工程师",0),
L2("大数据挖掘工程师",1),
L3("大数据架构师",2);
private String name;
private int id;
private Course() {
}
// 对象初始化
private Course(String name, int id) {
this.name = name;
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
包装类的使用
集合泛型要求数据类型必须是包装类型。
- 基本数据类型没有函数,所以在当你需要对基本数据类型进行函数操作时,可以使用对应的包装类型。
- 集合泛型要求数据类型必须是包装类。
包装类都是在java.long包下面.
包装类型的常用API
- 包装类型的常见方法( JDK10 作废)
- 包装类型的转换(直接利用函数将基本数据类型值转换为包装类型)
包装类的常用方法
Integer和Character特殊
包装类型的创建(JDK10 作废`)
// 给构造传输一个对应的基本数据类型值
Integer integer = new Integer(10);
// 给构造传输一个字符串类型的值 但是字符串中的内容必须能够转换为对应的包装类
Integer integer2 = new Integer("10");
System.out.println(integer);
System.out.println(integer2);
xxxValue();包装类转换成基本类型
// 包装类--》基本类型
Integer i = new Integer(9);
int j = i.intValue();
System.out.println(j);
// boolean
Boolean b = new Boolean(true);
boolean b1 = b.booleanValue();
System.out.println(b1);
// Double
Double double1 = new Double(9.9);
double d = double1;
System.out.println(d);
toString();以字符串形式返回包装对象表示的基本类型数据
int num = 9;
String strNum = Integer.toString(num);
String strNum2 = num+"";
parsexxx(); 把字符串转换为相应的基本数据类型数据(Character除外)
String s = "89";
int num2 = Integer.parseInt(s);
valueOf();基本类型–》包装类–》基本类型
Integer iNum = Integer.valueOf(89);
Character cNum = Character.valueOf('z');
Boolean bNum1 = Boolean.valueOf(true);
Integer iNum2 = Integer.valueOf("89");
// Character cNum2 = Character.valueOf("z"); Character除外
Boolean bNum12 = Boolean.valueOf("true");
包装类和基本数据类型的使用注意事项
- 包装类是引用数据类型,所以它可以接收null值,而基本数据类型不可以。
public class Student{
// private Integer id;
private Long id;
}
- 包装类型不是用来替代基本数据类型的,而是用来弥补基本数据类型无法使用函数的问题。
基本数据类型可以用==比较值内容。
包装类型默认值为null,而基本数据类型默认值为0 false等等。
- 但是在数据参数传递时,大多数情况基本和包装可以混淆使用。
装箱和拆箱
装箱:基本类型转换为包装类
拆箱:包装类转换为基本类型
基本类型和包装类的自动转换
JDK5之后,Java支持了自动拆箱和装箱。
Integer a = 10; // 装箱
int b = a; // 拆箱
Math类
// 圆周率 自然底数
// 求两者中的最小值
int min = Math.min(10, 9);
System.out.println(min); // 9
int max = Math.max(10, 9);
System.out.println(max); // 10
// 求绝对值
int abs = Math.abs(-10);
System.out.println(abs); // 10
// 求幂运算 2的3次方
double pow = Math.pow(2, 3);
System.out.println(pow); // 8
// 四舍五入
long round = Math.round(10.5);
System.out.println(round); // 11
// 向上取整
double ceil = Math.ceil(10.2);
System.out.println(ceil); // 11
// 向下取整
double floor = Math.floor(10.8);
System.out.println(floor); // 10
// 开平方
double sqrt = Math.sqrt(4);
System.out.println(sqrt); // 2
// 求随机数 [0.0,1.0)
double random = Math.random();
// 求范围内的随机整数[min,max)
// (int)(Math.random() * (max - min)) + min
Random类
Random random = new Random(种子);// 时间的毫秒数
for (int i = 0; i < 10; i++) {
System.out.println(random.nextInt(10));
}
Randonm random = new Random();
random.nextInt(); // 获取随机整数
random.nextDouble(); // 获取随机小数[0.0,1.0)
不同的种子生成的随机数不同,相同的种子随机数相同。
String类
length()方法
字符串常用方法:length(); 确定字符串长度
注意与数组length的区别
equals()方法
比较两个字符串是否一致
面试题equals与==
String重写了equals()变成了比较字符串内容
==是比较两个字符串是否为同一对象
字符串池(常量池)
String常用方法
equalsIgnoreCase();忽略大小写
toLowerCase();将一个字符串变成小写
toUpperCase();讲一个字符串变成大写
trim();去两端空格
字符串连接
+或concat();
字符串的提取方法
public static void main(String[] args) {
String s = "hello,my name is chenxuan!ok";
System.out.println(s.indexOf("o"));
System.out.println(s.lastIndexOf("o"));
System.out.println(s.substring(4));
System.out.println(s.substring(4,6));
}
s.indexOf(“o”); 从前往后查找字符位置(从0开始)
s.lastIndexOf(“o”);从后往前查找字符位置
s.substring(4); 截取字符串,从索引4开始,包含4的元素,一直到末尾。
s.substring(4,6); 包含起始位,不包含结束位置。
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("********欢迎提交作业********");
System.out.println("请输入作业名:");
String name = input.next();
System.out.println("请输入邮箱:");
String email = input.next();
boolean nameFlag = false;
// 判断.的位置
int index = name.indexOf(".");
// 判断文件名是否有.和.的位置是否在开头且是.java的文件
if(index != -1 && index != 0 && name.substring(index).equals(".java")) {
nameFlag = true;
}else {
System.out.println("文件名无效!");
}
boolean emailFlag = false;
// 找到@的位置
int index1 = email.indexOf("@");
// 找到.的位置
int index2 = email.indexOf(".");
// @和.存在且.要在@前面
if(index1 != -1 && index2 != -1 && index1 > index2) {
emailFlag = true;
}else {
System.out.println("邮箱名无效!");
}
// 两个都为true-》作业提交成功
if (nameFlag && emailFlag) {
System.out.println("作业提交成功!");
}else {
System.out.println("作业提交失败了!");
}
}
字符串拆分
xxx.split(" ");
public static void main(String[] args) {
String words = "长亭外 古道边 芳草碧莲天 晚风 拂柳 笛声残";
String[] printWords = new String[100];
System.out.println("原歌词:");
System.out.println(words);
printWords = words.split(" ");
System.out.println("拆分后:");
for (String info : printWords) {
System.out.println(info);
}
}
转义字符
转义输出\
StringBuffer类
append(“world!”); 拼接字符串
insert(1, “,”); 在指定位置插入字符串
Scanner input = new Scanner(System.in);
System.out.println("请输入一串数字:");
String number = input.next();
StringBuffer snumber = new StringBuffer(number);
for (int i = snumber.length()-3; i > 0; i=i-3) {
snumber.insert(i, ",");
}
System.out.println(snumber);
操作日期时间
java.util.Data类:表示日期和时间
提供操作日期和时间各组成部分的方法
java.text.SimpleDateFormat类:
用于定制日期时间的格式
public static void main(String[] args) {
// 当前日期和时间
Date date = new Date();
System.out.println(date);
// 将日期和时间的格式变为我们要求的格式"年-月-日"
SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String sdate = formater.format(date);
System.out.println(sdate);
}
Calendar t = Calendar.getInstance();创建Calendar对象
t.get(Calendar.xxx);
t.get(Calendar.MONTH)+1 中式月
t.get(Calendar.DAY_OF_WEEK)-1 中式周