StringBuffer类
String字符串 字符串值不可变 可以共享
buffer缓冲区、缓冲器
StringBuffer字符串缓冲区,作用相当于一个容器,里面存放很多字符串值
特点:
1.线程安全的可变字符序列。
2.可以添加任意类型的数据,但是添加进去的数据会被转换成字符串类型。
3.StringBuffer类主要是通过append和insert方法进行操作。
4.StringBuffer类是有索引,有序的
5.StringBuffer类构件对象会有一个初始容器,当存储的元素超过初始容量,容量会自动扩充
6.JDK1.5之后,官方提供了一个等价的类StringBuilder类,不同步,速度较快
crud操作:添加、插入、删除和替换
//添加 插入 删除 替换
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append("张三");
stringBuffer.append(true);
stringBuffer.append(20);
stringBuffer.append(13.5);
System.out.println(stringBuffer.toString());
//插入 insert()
stringBuffer.insert(6,"李四" );
System.out.println(stringBuffer.toString());
//删除delete(int start,int end )
StringBuffer delete = stringBuffer.delete(6, 8);
System.out.println(stringBuffer.toString());
System.out.println(delete.toString());//张三true2013.5
//替换 replace(int start,int end,String str)
StringBuffer replace = stringBuffer.replace(2, 6, "女");
System.out.println(stringBuffer.toString());
System.out.println(replace.toString());
//toString() 打印对象时,JVM会自动调用toString()方法
char c = stringBuffer.charAt(2);
System.out.println(c);
StringBuilder类属于线程不安全的,执行效率较高,推荐使用该类
Date类:日期类
1.Date类有两大功能:①把日期解释为年月日时分秒
②允许格式化和解析日期字符串
2.Date类中的以上两大功能分别被Calender类和DateFormat类替换掉
3.在Date类中出现了大量的已弃用和已过时方法。
//构造函数
Date date = new Date();
System.out.println(date.toString());//获取当前的系统时间
//Wed Nov 04 15:35:33 CST 2020
//星期 月份 日期 时:分:秒 CST 年份
//构造函数 Date(long date)
//86400秒*1000 = 一天毫秒值
//一年 86400*1000*365
//从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。
Date date2 = new Date(4545545545456l);
System.out.println(date2);
//日期和毫秒的转换
long time = date2.getTime();
System.out.println(time);
DateFormat java.text包中 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间
是一个抽象类
直接子类SimpleDateFormat
作用:格式化日期并解析日期时间,通常用于日期和String字符串之间的转换
日期---》文本 / 文本---》日期
借助于Date对象
// 构建日期对象
Date date = new Date();//日期对象 Wed Nov 04 15:46:40 CST 2020
// 2020/11/4 16:01:22
//使用DateFormat累的子类SimpleDateFormat pattern 格式,模式 buffer n. [计] 缓冲区;缓冲器
/*
G-->年代
y-->年
M-->月
m-->分钟
d-->一月中的第几日
D-->一年中的第几天
h-->小时 12小时制
H-->小时 24小时制
s-->秒
S-->毫秒
E-->星期
F-->一月中的第几个星期几
w-->一年中的第几星期
W-->一月中的第几星期
z-->时区
*/
DateFormat df = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
//把日期数据类型转换成字符串数据类型 格式化format(Date date)
String str = df.format(date);
System.out.println(str);
//把字符串转换成日期格式
String time = "2020年11月4日";//转换成Date类型 CST
//parse(String str)
//指定日期格式 参照字符串的格式
DateFormat df2 = new SimpleDateFormat("yyyy年MM月dd日");
//把字符串转换成日期
try {
Date date2 = df2.parse(time);
System.out.println(date2);//2020年11月4日---->CST格式 Wed Nov 04 15:35:33 CST 2020
//00:00:00 是因为在字符串定义没有给时分秒设定值
} catch (ParseException e) {
e.printStackTrace();
}
Calender类 日历类:实现日期和时间字段之间转换
是一个抽象类,
作用:获取日历上的时间字段值
Calender对象的创建通过静态的getInstance()
//构建一个Calender类日历对象
//通过静态方法getcalendar()
Calendar calendar = Calendar.getInstance();
//java.util com.zhiyou100.API
//Calendar calendar = new Calendar(); protected Calendar(){}
//年月日 时分秒 星期 get()
int year = calendar.get(Calendar.YEAR);
System.out.println(year);//2020
int month = calendar.get(Calendar.MONTH);//0-11
System.out.println(month);//10
int date = calendar.get(Calendar.DATE);
System.out.println(date);
int hour = calendar.get(Calendar.HOUR);
System.out.println(hour);
int minute = calendar.get(Calendar.MINUTE);
System.out.println(minute);
int second = calendar.get(Calendar.SECOND);
System.out.println(second);
System.out.println(year + "/" + (month + 1) + "/" + date + " " + (hour + 12) + ":" + minute + ":" + second);
//指定字段增加值
//修改当前的时间为7天后
calendar.add(Calendar.DATE, 7);
//获取日期值
int day = calendar.get(Calendar.DATE);
System.out.println(day);//11日
calendar.add(Calendar.HOUR, 5);
//获取当前时间的小时
int hour2 = calendar.get(Calendar.HOUR);
System.out.println(hour2);//5+5 --->10
//日历对象转换成日期对象 Date格式 getTime()
Date time = calendar.getTime();
System.out.println(time);
BigDecimal类
大数据中的大小数
BigInteger
大数据中的大整数
//BigInteger BigDecimal
//大数据整数的加、减、乘、除 四则运算
BigInteger bigInteger = new BigInteger("200000000000000000000");
BigInteger bigInteger1 = new BigInteger("120123241554112122222");
//相加运算
BigInteger result1 = bigInteger.add(bigInteger1);
System.out.println(result1);
//减法运算
BigInteger result2 = bigInteger.subtract(bigInteger1);
System.out.println(result2);
// 乘法运算
BigInteger result3 = bigInteger.multiply(bigInteger1);
System.out.println(result3);
//除法运算
BigInteger result4 = bigInteger.divide(bigInteger1);
System.out.println(result4);
//BigDecimal类 大小数
//有时候操作小数的时候,会出现精度损失问题
System.out.println(0.09+0.01);//0.1-->0.09999999999999999
System.out.println(1.231*100);//123.1-->123.10000000000001
//大小数四则运算 加减乘除
BigDecimal bigDecimal1 = new BigDecimal("0.09");
BigDecimal bigDecimal2 = new BigDecimal("0.01");
//加法运算
BigDecimal result01 = bigDecimal1.add(bigDecimal2);
System.out.println(result01);
//减法运算
BigDecimal result02 = bigDecimal1.subtract(bigDecimal2);
System.out.println(result02);
//乘法运算
BigDecimal result03 = bigDecimal1.multiply(bigDecimal2);
System.out.println(result03);
除法运算
BigDecimal result04 = bigDecimal1.divide(bigDecimal2);
System.out.println(result04);
包装类
基本数据类型和对应的包装类--》对应的引用类型 Class类型
ArrayList类 容器
byte Byte
short Short
int Integer[重点]
long Long
float Float
double Double
char Character[重点]
boolean Boolean
基本数据类型转换成包装类------》valueOf() 以int类型示例Integer。value1Of(3)---》Integer
包装类转换成基本数据类型----->以int类型示例 intValue()--->int
在JDK1.5以后,基本数据类型和包装类不在需要显式的转换---》会自动转换
装箱:基本数据类型转换成包装类
拆箱:包装类转换成基本数据类型
开发中,定义类中属性时,建议使用