1.掌握枚举的使用
枚举:
引用数据类型:数组、类(String)、接口、枚举
switch支持int String 枚举(enum)
public class Student{
private String name;
private int age;
private String gender;
public void setAge(int age){
if(age < 0 || age > 100){
syso("年龄非法!.....");
this.age = 60;
}else{
this.age = age;
}
}
public void setGender(String gender){
if(gender.equals("男") || gender.equals("女")){
this.gender = gender;
}else{
syso(xxxx);
}
}
}
public class Test{
main(){
Student stu = new Student();
// stu.age = -1000;(采用封装解决) 为了解决不合理赋值
stu.gender = "呵呵"; // 男 女 xx String类型 -> 性别类型呢?
}
}
枚举的使用:
/**
* 性别类型
* @author Charles7c
* 2019年4月21日 上午9:59:03
*/
public enum Gender {
// 常量 static final
// 男,女
// 0 1
MALE,FEMALE
}
package cn.kgc.demo1;
/**
* 学生类
*/
public class Student {
private String name;
private int age;
// private String gender; 0 1
private Gender gender;
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + ", gender=" + gender + "]";
}
public Student() {
super();
// TODO Auto-generated constructor stub
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
/*public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}*/
public Gender getGender() {
return gender;
}
public void setGender(Gender gender) {
this.gender = gender;
}
}
package cn.kgc.demo1;
public class Test {
public static void main(String[] args) {
Student student = new Student();
student.setName("豆涵");
student.setAge(10);
// student.setGender("呵呵");
// 在很多场景下 我们需要其他开发者 在调用我们的某些方法时 只能传递某几个固定值
// 那么就需要枚举
student.setGender(Gender.MALE);
System.out.println(student);
}
}
2.掌握包装类的使用
- 基本数据类型没有函数,所以在当你需要对基本数据类型进行操作时,那么可以使用对应的包装类型。
- 集合泛型要求数据类型必须是包装类型。
包装类型常用API
- 字符串 ->基本数据类型 / 包装类型(我们在网络数据传输中,你的数据表层会转换为字符串,服务器在接受时就是一些字符串而已,但是你也知道字符串对于有些数据的操控并不是太方便,所以需要进行转换)
String value = "10";
// 可将字符串转换为对应的基本类型
int parsrInt = Integer.parsrInt(value);
// 可以将字符串转换成对应的包装类型
Integer valueof = Integer.valueof(value);
- 基本/包装类型 -> 字符串
int a = 10;
// 凡是与字符串用+号拼接的都成为了字符串
String b = a+"";
// 将基本数据类型转换为字符串
String string = Integer.toString(a);
// 将包装类型转换为字符串
Integer c = Integer.valueof(a);
String string2 = c.toString();
拆箱和装箱
**拆箱:**包装类型转换为基本数据类型
**装箱:**基本数据类型转换为包装类型
包装类和基本数据类型的使用注意事项
- 包装类是引用数据类型,所以它可以接受null值,而基本数据类型不可以
public class Student{
// private Integer id;
private Long id;
}
- 包装类型不是用来替代基本数据类型的,而是用来弥补基本数据类型无法使用函数的问题。
基本数据类型可以用==比较值得内容 包装类型默认值为null,而基本数据类型默认值为0 false等等
- 但是在数据蚕食传递时,多多是情况基本和包装可以混淆使用
3.Math和Random类
Math教学类
// 圆周率 自然数底数
// 求两者中的最小值
int mins = Math.min(10,9);
System.out.println(min); // 9
// 求两者中的最大值
int maxs = Math.max(10,9);
System.out.println(maxs); // 10
// 求绝对值
int abss = Math.abs(-10);
System.out.println(abss); // 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
4.掌握String的常用API
- 获取字符串长度:int length();
- 判断字符串的内容是否相同:boolean equals(Object obj)
- 不区分大小写的字符串比较:boolean equalslgnoreCase(String str);
- 将字母全部转换为大写/小写:String toUpperCase();/ String toLowerCase();
- 字符串拼接:String concat(String anotherString);
String str1 = "hello";
String str2 = "world";
String str3 = str1.concat(str2);
System.out.println(str3);
- 查找指定字符串第一次出现的位置:int indexOf(String subtr);
String str1 = "helloworld";
int index = str1.indexOf("o");
System.out.println(index);// 4 输出的是索引 从左开始第一个
int lastIndexOf = str1.lastIndexOf("o");
System.out.println(lastIndexOf);// 6 从右开始第一个
- 从指定位置(包含)开始,查找指定字符串出现的位置:int indexOf(String subtr,int fromIndex);
- 查找指定字符串最后出现的位置:String substring(int starlndex);
- 从指定位置开始截取子字符串:String substring(int startIndex);
String str1 = "helloworld";
String substring2 = str1.substring(3);
System.out.println(substring2);
// loworld 会获取索引3以后的所有字符
- .从指定位置开始截取到指定位置结束的子字符串:String substring(String subtr,int fromIndex); [ substring, fromIndex)
String str1 = "helloworld";
String substring = str1.substring(3, 6);
System.out.println(substring);// low
- 获取指定索引的字符:char charAt(int index);
String str1 = "helloworld";
char charAt = str1.charAt(5);
System.out.println(charAt);// w
- 去除字符串两端的空格:String trim();
- 替换字符串:String replace(String oldStr,String newStr);
String replace = userInput.replace("垃圾", "**");
(userInput 只是一个键盘输入的一个变量名)
- 拆分字符串:String[] split(String 正则表达式);
String str = "长亭外~古道边~芳草碧连天";
// 正则 regular expression regex
// 一种规则 简单模式 复合模式 \d{9}
// 可以匹配规则
String[] split = str.split("~");
for (String stri : split) {
System.out.println(stri);
}
- 将字符串转换为字符数组:char[] toCharArray();
2.掌握StringBuffer的基本使用
String字符串 Buffer缓冲区
字符串String 引用数据类型,那么每一次使用字符串都需要创建对象(在方法区中存在一个字符串常量池,所以有些时候,它不会创建对象);字符串拼接的时候,每一次都在创建新的字符串对象,效率特别低!
循环中不要使用+号使用拼接字符串,因为底层是使用StringBuffer/StringBuilder实现的。
构造方法:
StringBuffer();
StringBuffer(String str);
常用方法:
append (任意数据类型);追加字符串
insert(int index, 任意类型数据); 在指定位置插入任意数据 原有数据后移
reverse(); 字符串反转
toString(); 转换为字符串
掌握StringBuffer和String的区别
String每一此拼接一个字符串都要再次创建一个新的空间,一次只能两个两个的拼接,按下图,Str要拼接4次
StringBuffer则是可以不用再次创建空间,直接进行一次性拼接完成
// 创建对象
// StringBuffer sb = new StringBuffer();
StringBuffer sb = new StringBuffer("begin:");
// 拼接字符串
sb.append(10);
sb.append(11);
sb.append("abc");
String string = sb.toString();
System.out.println(string);// begin:1011abc
// 在指定的位置插入数据
sb.insert(3, "hehe");
System.out.println(sb);// beghehein:1011abc
sb.reverse();
System.out.println(sb);// cba1101:niehehgeb
// 12345678
String numStr = "12345678";
// 利用字符串缓冲区对象来进行内容插入 -> 变相拼接
StringBuffer sb = new StringBuffer(numStr);
for (int i = numStr.length() - 3; i > 0 ; i -= 3) {
sb.insert(i, ",");
}
System.out.println(sb);// 12,345,678
3.掌握时间类型Date
java.util.Date
掌握时间格式转换SimpleDateFormat
Date date = new Date(); 会获取当前的系统时间进行赋值
//输出结果:Fri Apr 26 18:17:48 CST 2019(美国的看法)
SimpleDateFormat simpleDateFormat =
new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String f = simpleDateFormat.format(date);
System.out.println(f);
// 这样的话就会转成目前当下的时间值
package cn.kgc.demo3;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Demo1 {
private Date birthday;
public static void main(String[] args) {
Date date = new Date();
System.out.println(date);
// 过时了
int month = date.getMonth();
// sCalendar.get(Calendar.MONTH)
// 格式转换对象 SimpleDateFormat
// 转换的格式字符串
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String format = sdf.format(date);
System.out.println(format);
try {
Date parse = sdf.parse("2019年04月21日 11:31:42");
System.out.println(parse);
} catch (ParseException e) {
e.printStackTrace();// 返回到Fri Apr 26 18:17:48 CST 2019这种格式
}
}
}
掌握日期类型的使用Calendar
public static void main(String[] args) {
// 消除时间敏感性
Calendar calendar = Calendar.getInstance();
// 获取时间信息
// int dayOfMonth = calendar.get(5);
// 不要使用魔法值 使用常量
int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(dayOfMonth);
int month = calendar.get(Calendar.MONTH);
System.out.println(month);
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
System.out.println(dayOfWeek);
}