一、包装类
1、简介:
在实际应用中经常需要将基本数据转化成对象,以便于操作,但八大基本数据类型都不是对象。为了解决这个不足,Java在设计类时为每个基本数据类型设计了一个对应的类进行代表。
byte==>Byte short==>Short int==>Integer long==>Long
float==>Float double==>Double boolean==>Boolean char==>Character
优点:
- 某些方法的参数必须是对象,为了让基本数据类型的数据能作为参数,提供包装类。
- 可以实现字符串和基本数据类型之间的转换。
2、自动装箱和自动拆箱
自动装箱和拆箱就是将基本数据类型和包装类之间进行自动的互相转换。
- 自动装箱过程是通过调用包装类valueOf()方法实现的;Integer in = 10;
- 而自动拆箱过程是通过调用包装类 xxxValue()方法实现的(xxx代表对应的基本数据类型,如intValue()、doubleValue()等)。int num = new Integer(10);
二、String类
包括String类、StringBuilder类、StringBuffer类。
1、String类中方法:不会对原有数据造成影响
- str.length() ==> 字符串长度
- str.isEmpty() ==> 是否为空字符串
- str.startWith("你") ==> 字符串是否以“你”字开头
- str.endWith("好") ==> 字符串是否以“好”字结尾
- str.toUpperCase() ==> 将字符串转换成大写(用于验证码判断)
- str.toLowerCase() ==> 将字符串转换成小写
- str1.toUpperCase().equals(str2.toUpperCase()) ==> 将2个字符串全部变成大写再比较(用于验证码判断)
- str1.equalsIngnoreCase() ==> 忽略大小写比较
- str.charAt(2) ==> 拿到字符串第2个位置(位置从0开始)的字符
- (int)str.charAt(2) ==> 拿到第2个位置字符,对应的编码值
- str.substring(beginIndex:1) ==> 拿到从第1个位置开始,到最后一个位置的字符
- str.substring(beginIndex:1,endIndex:3) ==> 拿到字符串第1到第3个位置的字符
- str.indexOf("你") ==> 拿到“你”字在字符串中第一次出现的下标,没有返回-1
- str.lastIndexOf("你") ==> 拿到“你”字在字符串中最后一次出现的下标,没有返回-1
- str.indexOf("你",5) ==> 从第下标为5的位置开始找,找到第一次出现“你”字的下标
- str.split(",") ==> 用逗号拆分str字符串
- str.trim() ==> 去除字符串两端的空格
- byte[ ] byte = str.getBytes; ==> 将字符串存到byte类型的数组内,一个字符(汉字)占4个字节
- String s = new String(byte,0,3) ==> 拿到byte数组内从0开始的,前3个字节的字符
- str="a" str1="A" str.compareTo(str1) ==> 判断a的编码值比A的编码值大多少
- str.concat("你好").concat("哈哈") ==> 在字符串后拼接“你好”、“哈哈”
- str.contains("你好") ==> 判断字符串中是否存在“你好”两个字
- str.replace("你好","哈哈") ==> 将字符串中的“你好”,替换成“哈哈”
三、StringBuilder和StringBuffer
- StringBuffer:JDK1.0提供的类,线程安全,做线程同步检查,效率较低。
- StringBuilder JDK1.5提供的类,线程不安全,不做线程同步检查,因此效率较高。 建议采用该类。
使用:StringBuilder buider = new StringBuilder("你好,世界");
实际开发中,builder.append()使用较多。
方法:
- builder.append("嘿嘿") ==> 在末尾追加子串“嘿嘿”
- builder.insert(1,"aa") ==> 在下标为1的位置插入“aa”
- builder.length() ==> 字符串长度
- builder.setLength() ==> 设置字符串长度
- builder.delete(startIndex:1,endIndex:3) ==> 删除字符串中下标[1,3)范围的字符
- builder.deleteCharAt(1) ==> 删除下标为1的字符
- builder.indexOf("你") ==> 拿到“你”字在字符串中第一次出现的下标
- builder.lastIndexOf("你") ==> 拿到“你”字在字符串中最后一次出现的下标
- builder.charAt(1) ==> 拿到下标为1的字符
- builder.setCharAt(1,'虎') ==> 将下标为1的字符替换成“虎”字
- builder.codePointAt(1)、(int)builder.charAt(1)==> 拿到下标为1到的字符对应的编码值
- builder.replace(1,2,"你") ==> 将[1,2)位置的字符替换为“你”
- builder.reverse() ==> 将字符串反转为“界世,好你”
四、日期类
1、Date:
Date date = new Date();
方法:
- date.toString() ==> 获取当前时间
- date.toLocalString() ==> 获取本地时间
- date.getYear() getMonth() getDate() getDay() getHours() getMinutes() getSecond() ==> 获取年、月、日、星期、时、分、秒
- date.getTime() System.currentTimeMillis() ==> 获取当前时间距离1970年1月1日的毫秒数
- System.nanoTime() ==> 获取当前时间距离1970年1月1日的纳秒数
2、DateFormat:
DateFormat dft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
方法:
- dft.format(date) ==> 将当前时间转换为特定格式
- String str = "2020-07-12 14:36:53" dft.parse(str)==> 将字符串转换成日期(Date)
3、Calendar:
使用:
Calendar cal = new GregorianCalendar();
Calendar cal = Calendar.getInstace();==>推荐此方法
方法:
- cal.getTime() ==> 获取当前时间 Sun Jul 12 15:17:11 CST 2020
- cal.get(Calendar.DATE) get(Calendar.MONTH) get(Calendar.YEAR) get(Calendar.HOUR) get(Calendar.MINUTES) get(Calendar.SECOND) ==> 获取当前日期是几号/年份/月份/小时/分钟/秒钟
- cal.get(Calendar.DAY_OF_WEEK) ==> 获取星期数(周日是1)
- cal.getActualMaximum(Calendar.DATE) 。。。==> 获取当前日期/月份/年份/小时/分钟/秒钟的最大值
- cal.set(Calendar.DATE,2) ==> 设置当前日期为2号
- cal.add(Calendar.DATE,10) ==> 在当前日期的基础上添加10天
4、新特性:
- Instant in = Instant.now(); ==> 日期时间都有
- LocalDate lo = LocalDate.now(); ==> 只有时期
- LocalTime lo = LocalTime.now(); ==> 只有时间
- LocalDateTime lo = LocalDateTime.now(); ==> 日期时间都有
五、其他常用类(Math、Random及枚举)
1、Math:
方法:
- Math.PI ==> 圆周率
- Math.round() ==> 四舍五入
- Math.ceil() ==> 向上取整
- Math.floor() ==> 向下取整
- Math.sqrt() ==> 开平方
- Math.pow(2,4) ==> 2的3次方
- Math.abs(-1) ==> 取绝对值
- Math.max() Math.min() ==> 取最大/小值
- Math.random() ==> [0,1)随机数
求m-n随机整数公式(int)(Math.random()*(n-m+1)+m)
2、Random:
Random random = new Random();
方法:
- random.nextInt() ==> 产生int类型的随机数
- random.nextInt(10) ==> 产生0-10之间的随机数
- random.nextDouble() ==> 产生[0,1)之间,double类型的随机数
3、枚举
public enum EnumTest {
春,夏,秋,冬
}