day12 笔记
一.StringBuffer
1.概念:线程安全的可变的字符序列,类似于string的缓冲区
通过某些方法调用可以改变其序列长度和内容
append(boolean b) insert(int offset, boolean b)
2.string和stringbuffer的区别:
string不可以改变字符串 stringbuffer是可以改变的字符串长度可以变的,使用一
个新得字符串来代替以前的字符串)
string操作字符串的效率低 stringbuffer效率高 (sql拼接常常使用)
3.StringBuiler 与StringBuffer的区别:
A.版本不一样
StringBuiler1.5 StringBuffer1.0
B.效率
StringBuiler 效率低 StringBuffer 效率高
C.线程安全性
StringBuiler 安全性低 StringBuffer 安全性高
构造方法:
构造方法的名称 | 构造方法的描述 |
---|---|
public StringBuilder() | 实例化StringBuiler对象,初始化容量是16 |
public StringBuffer(int capacity) | 实例化StringBuffer对象 指定初始化容量对象 |
publi StringBuffer(string str) | 将string构建成一个stringbuffer对象 初始化长度是字符串长度+16 |
普通方法:
方法名称 | 方法简述 |
---|---|
public stringBuffer append(String s) | 在字符串末尾进行添加 |
public StringBuffer inser(int offset, String str) | 在字符串指定位置进行添加 |
public int capacity() | 获取StringBuffer的容量 |
public StringBuffer deletaCharAt(int index) | 根据索引来进行删除 |
public StringBuffer delete( int start ,int end) | 指定区间来进行删除 |
public StringBuffer reverse() | 控制反转 |
代码:
package com.qf.lt.oop02;
public class Test05 {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer("张三");
//末尾进行拼接
sb.append("是一个法外狂徒");
System.out.println(sb);
//指定的索引进行删除
sb.deleteCharAt(3);
System.out.println(sb);
//指定的区间进行删除
sb.delete(5,sb.length());
System.out.println(sb);
}
}
StringBuffer与String的转换
1.StringBuffer转换为String
调用toString()
利用构造方法public String(StringBuffer buffer)
2.String 转换 StringBuffer
利用构造方法 publicStringBuffer(String str);
调用方法 new StringBuffer().append("");fv
案例:
分析:
代码:
package com.qf.lt.oop01;
public class Test01 {
public static void main(String[] args) {
int [] arrays ={0,1,2,3};
StringBuffer sb=new StringBuffer();
for (int i=0;i< arrays.length;i++){
sb.append("a"+arrays[i]+",");
}
System.out.println(sb.append("["+"]"));
System.out.println(sb.reverse());
}
}
二.包装类
1.概念:将基本数据类型包装成引用数据类型 将基本数据类型封装成一个类
2.好处:
A.包装类可以调用类的属性和方法
B.集合中的泛型必须使用包装类
3.罗列:(重点)
特点:
A.包装类就是基本数据类型的首字母大int 以及char类型
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OxRViMzX-1642514972992)(C:/Users/%E6%82%B2%E9%99%8C/AppData/Roaming/Typora/typora-user-images/image-20220118184625854.png)]
三.BigDecimal
1.概念:不可变的,任意精度的有字符的十进制数
构造方法:
|
|
|
|
|
方法名称 | 方法简述 |
---|---|
public BigDecimal(double val) | 将double类型转换为BigDecimal |
public BigDecimal(int val) | 将int 类型转换为BigDecimal |
public BigDecimal(string str) | 将string类型转换为BigDecimal |
常用的方法:
方法名称 | 方法描述 |
---|---|
public BigDecimal add(BigDecimal augend) | 加法 |
public BigDecimal divide(BigDecimal divisor,int scale, int roundingMode) | 除法 |
public BigDecimal multiply(BigDecimal multiply) | 乘法 |
public BigDecimal subtract (BigDecimal subtract) | 减法 |
public BigDecimal remaider(BigDecimal divisor) | 取余数 |
代码:
package com.qf.lt.oop02;
import java.math.BigDecimal;
public class Test {
public static void main(String[] args) {
BigDecimal big = new BigDecimal("123547128713874");
System.out.println(big);
BigDecimal big01 = new BigDecimal(15);
BigDecimal big02 = new BigDecimal(7);
//+
System.out.println(big01.add(big02));
//-
System.out.println(big01.subtract(big02));
//*
System.out.println(big01.multiply(big02));
//除
System.out.println(big01.divide(big02,3,BigDecimal.ROUND_HALF_UP));
//%
System.out.println(big01.remainder(big02));
}
}
四.Data
1.构造方法:A.public Data() 创建对象
B.public Data(long data) 创建一个毫秒值德Data对象
2.两个方法:A.public void setTime(long time) 设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后time 毫秒的时间点
B.publi long getTime() 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示 的毫秒数
代码:
package com.qf.demo02;
import java.util.Calendar;
import java.util.Date;
public class Test04 {
public static void main(String[] args) {
//使用 Calendar.getInstance来进行实例化对象的
Calendar cal = Calendar.getInstance();
//获取当前系统的年份Calender的get方法
System.out.println(cal.get(Calendar.YEAR));
//Calender的set方法,设置之后需要转换成Data对象才行
cal.set(Calendar.YEAR,2021);
Date time = cal.getTime();
System.out.println(time);
//Calender的setTime方法,也是设置时间,但是里面的又参数,参数是Data类型的
//相比setTime()来说,getTime()方法是返回的是Data类型的数据
//需要转换毫秒值的时候,需要使用Calender的getTime()方法,在使用Data的getTime()方法来进行转换
}
}
五.calender
1.概念:Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段 之间的转换提供了一些方法
2.获取Calendar ==>Calendar rightNow = Calendar.getInstance();
常用的方法:
方法名称 | 方法描述 |
---|---|
public abstract void add(int field, intamount) | 根据日历的规则,为给定的日历字段添加或减去指定的时间量 |
public int get(int field) | 返回给定日历字段的值 |
public static Calendar getInstance() | 获取Calendar对象 |
public final Date getTime() | 将Calendar转换为Date对象 |
public void set(int field,int value) | 将给定的日历字段设置为给定值 |
代码:
package com.qf.lt.oop02;
import java.util.Calendar;
import java.util.Date;
public class Test03 {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
//获取年
System.out.println(cal.get(Calendar.YEAR));
//获取月
System.out.println(cal.get(Calendar.MONTH));
//获取日
System.out.println(cal.get(Calendar.DATE));
//获取时
System.out.println(cal.get(Calendar.HOUR));
//获取分sout
System.out.println(cal.get(Calendar.MINUTE));
//获取秒
System.out.println(cal.get(Calendar.SECOND));
//设置特定时间段
cal.set(Calendar.MONTH,5);
System.out.println(cal.get(Calendar.MONTH));
Date ti =cal.getTime();
System.out.println(ti);
}
}
六.SimpleDateFormat
1.概念:格式化和解析日期的具体类
2.格式: yyyy-MM-dd ==>年月日 yyyy-MM-dd hh:mm:ss 年 月 日 时 分 秒
3.构造方法:public SimpleDateFormat(String pattern) 参数表示传递格式的类型
4.常用的方法:
public StringBuffer format(Date date)==> 将Date 对象格式化指定时间格式
public Date parse(String text)==>将指定格式字符串时间转换为Date对象
重点:
SimpleDateFormat中format方法可以把date类型转换成特定格式的String型的字符串
SimpleDateFormat中的parse方法可以把String型的字符串转换成特定格式的date类型
package com.qf.lt.oop02;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test04 {
public static void main(String[] args) throws ParseException {
//实例化
SimpleDateFormat sp = new SimpleDateFormat("yyyy/MM/dd");
//实例化
Date ti =new Date();
//将时间转华为string
String str = sp.format(ti);
Date d =sp.parse(str);
System.out.println(d);
System.out.println(sp.format(ti));
}
}
案例:
需求:键盘输入生日,计算出生多少天?
分析:
1.键盘录入的 年 月 日生日 转换为 Date类型
2.调用getTime() 获取毫秒值
3.系统的毫秒值 - 生日的毫秒值
代码:
package com.qf.lt.oop02;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class exit {
public static void main(String[] args) throws ParseException {
Scanner sca = new Scanner(System.in);
System.out.println("输入你出生的时间:");
String date01 = sca.next();
//实例化
Date sp = new SimpleDateFormat("yyyy-MM-dd").parse(date01);
//获取输入时间的毫秒值
long ti = sp.getTime();
//获取当前时间的毫秒值
long newTime = System.currentTimeMillis();
//相减
long day = ((newTime-ti)/1000/60/60/24);
System.out.println("你已经存活了:"+day+"天");
}
}