Java基础12 StringBuffer/StringBulid 包装类Integer BigDecimal大数据类 Data SimpleDateFormat Calendar

一、StringBuffer/StringBuild(重点)

1.1简介
1.概念:线程安全的可变字符序列 个类似于 String 的字符串缓冲区
但通过某些方法调用可以改变该序列的长度和内容
append(boolean b) insert(int offset, boolean b)
2.String 与StringBuffer区别:
String 不可以变字符串 StringBuffer 是可变的字符串
String 操作字符串效率低 StringBuffer效率高 sql拼接
3.StringBuiler 与 StringBuffer的区别:
A.版本不一样
StringBuiler1.5 StringBuffer 1.0
B.效率
StringBuiler 效率高 StringBuffer 低
C.线程安全性
StringBuiler 安全性低 StringBuffer 安全性高
1.2构造方法
在这里插入图片描述

package com.qf.demo01;
public class Test01 {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
System.out.println(sb.capacity());
StringBuffer sb1 = new StringBuffer(20);
System.out.println(sb1.capacity());
StringBuffer sb2 = new StringBuffer("张三");
System.out.println(sb2.capacity());
}
}

1.3 常用方法
在这里插入图片描述

package com.qf.demo01;
public class Test02 {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer("李小明");
sb.append("广州最靓的仔");
System.out.println(sb);
sb.insert(1,"叼毛");
System.out.println(sb);
sb.deleteCharAt(3);
System.out.println(sb);
sb.delete(3,5);
System.out.println(sb);
sb.reverse();
System.out.println(sb);
}
}

1.4 StringBuffer 与 String 互转
1.StringBuffer 转换为String
调用 toString()
利用构造方法 public String(StringBuffer buffer)
2.String 转换 StringBuffer
利用构造方法 public StringBuffer(String str);
调用方法 new StringBuffer().append(s);

package com.qf.demo01;
public class Test03 {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer("陈小明");
System.out.println(sb.toString());
System.out.println(new String(sb));
String s="何小明";
System.out.println(new StringBuffer(s));
System.out.println(new StringBuffer().append(s));
}
}

二、包装类

2.1 简介
1.概念:将基本数据类型包装成引用数据类型 将基本数据类型封装成一个类
2.好处:
A.包装类可以调用类的属性与方法
B. 集合中的泛型必须使用包装类
3.罗列:(重点)
特点:
A.包装类就是基本数据累的首字母变为大写 除了 int 以及char类型
在这里插入图片描述
2.2 Integer
1.概念:
A.Integer 类在对象中包装了一个基本类型 int 的值
B.该类提供了多个方法,能在 int 类型和 String 类型之间互相转换
2.常量
在这里插入图片描述
3.构造方法
在这里插入图片描述
4.常用的成员方法
在这里插入图片描述
重点: parselnt方法,将字符串转为int类型int num = Integer.parseInt("123");
2.3 自动装箱与拆箱
1.装箱:将基本数据类型包装包装类 ===> 快递
2.拆箱:将包装类拆成基本数据类型 ==>拆快递
3.在jdk1.5之后 会自动自动装箱与拆箱

package com.qf.demo02;
public class Test03 {
  public static void main(String[] args) {
     Integer num =5; //自动装箱的过程
     int n = num; //自动 拆箱的过程
}
}

2.4
案例需求分析
1.根据空格来进行拆分 split(" ")
2.遍历数组将数据存入Integer数组中 parseInt()
3.排序 打印

import java.util.Arrays;
public class Test04 {
public static void main(String[] args) {
String str ="10 20 -1 70 100 50 30";
//对字符串进行分割
String[] arrays = str.split(" ");
Integer [] integers = new Integer[arrays.length];
//遍历
for (int i=0;i<arrays.length;i++) {
integers[i]= Integer.parseInt(arrays[i]);
}
//排序
Arrays.sort(integers);
System.out.println(Arrays.toString(integers));
}
}

三、 BigInteger

1.概述:不可变的任意精度的整数 BigInteger 描述整数的类型比int 类型范围更加大(大数据类型)
2.常量
在这里插入图片描述
4.常用的方法
在这里插入图片描述

四、BigDecimal(重点)

1.概念:不可变的、任意精度的有符号十进制数
2.构造方法
在这里插入图片描述

package com.qf.demo03;
import java.math.BigDecimal;
public class Test02 {
public static void main(String[] args) {
BigDecimal big01 = new BigDecimal("1234567890123423");
System.out.println(big01);
BigDecimal big02 = new BigDecimal(123456789);
System.out.println(big02);
BigDecimal big03 = new BigDecimal(1234567890.23);
System.out.println(big03);
}
}

3.常用的方法
在这里插入图片描述

package com.qf.demo03;
import java.math.BigDecimal;
public class Test03 {
public static void main(String[] args) {
BigDecimal big01 = new BigDecimal(10);
BigDecimal big02 = new BigDecimal(2);
System.out.println(big01.add(big02));
System.out.println(big01.subtract(big02));
System.out.println(big01.multiply(big02));
System.out.println(big01.divide(big02));
System.out.println(big01.remainder(big02));
BigDecimal big03 = new BigDecimal(10);
BigDecimal big04 = new BigDecimal(3);
//向上ROUND_UP //ROUND_DOWN 向下 ROUND_HALF_UP 四舍五入
System.out.println(big03.divide(big04,2,BigDecimal.ROUND_UP));
System.out.println(big03.divide(big04,2,BigDecimal.ROUND_DOWN));
System.out.println(big03.divide(big04,3,BigDecimal.ROUND_HALF_UP));
}
}

五 、Math(查看api了解)

1.概念:Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数 数学的工具类
2.常量
在这里插入图片描述

package day12;

public class Test04 {
    public static void main(String[] args) {
        System.out.println(Math.PI);
        System.out.println(Math.E);
        //绝对值
        System.out.println(Math.abs(-1));
        System.out.println(Math.abs(1));
        //取大取小
        System.out.println(Math.max(10,20));
        System.out.println(Math.min(10,20));
        System.out.println(Math.pow(2,3));//次方
        System.out.println(Math.cbrt(8));//开三次方
        System.out.println(Math.random());
        System.out.println(Math.round(2.3));//向上取整
        System.out.println(Math.floor(2.5));//向下取整
        System.out.println(Math.ceil(2.3));//四舍五入
    }
}

六 System

1.概述:System 类包含一些有用的类字段和方法。它不能被实例
2.常量
在这里插入图片描述
3.方法
在这里插入图片描述
System.currentTimeMillis 重点常用 获取系统当前毫秒值

七、Date

1.概念:类 Date 表示特定的瞬间,精确到毫秒 表示的是java中的时间对象
2.构造方法
在这里插入图片描述

Date d1 = new Date(1000);
System.out.println(d1);

输出1970年1月1日0点0分0秒加上1000毫秒的时间
3.常用方法
在这里插入图片描述

package com.qf.demo06;
import java.util.Date;
public class Test01 {
public static void main(String[] args) {
Date d = new Date(1000);
d.setTime(3000);
System.out.println(d);
System.out.println(d.getTime());
//System.out.println(d.getTime());
}
}

Date d = new Date(1000); 等价于 Date d = new Date();d.setTime(1000);
d.setTime(毫秒值) 即是将d 的值改为1970年1月1日0时0分加毫秒值的和
可以自己设置date 来与当前系统时间进行运算
long time = date.getTime(); 获取date数据表示的时间减1970年1月1日0时0分的毫秒值
long t = System.currentTimeMillis(); 获取当前系统时间减1970年1月1日0时0分的毫秒值
两者相减得当前系统与data 的差值

八、Calendar(重点)

1.概念:Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR等 日历字段之间的转换提供了一些方法
2.获取Calendar ==>Calendar rightNow = Calendar.getInstance();
3.常用的方法
在这里插入图片描述

package day12;

import java.util.Calendar;
import java.util.Date;

public class Test06 {
    public static void main(String[] args) {
        Calendar cal= Calendar.getInstance();
        System.out.println(cal.get(Calendar.YEAR));
        System.out.println(cal.get(Calendar.MONTH)+1);//美国与中国不同,从0开始计月,所以加一
        System.out.println(cal.get(Calendar.DAY_OF_MONTH));
        System.out.println(cal.get(Calendar.HOUR));
        System.out.println(cal.get(Calendar.MINUTE));
        System.out.println(cal.get(Calendar.SECOND));
        Date date = cal.getTime();
        System.out.println(date);

    }
}

Calendar cal= Calendar.getInstance();Calendar 类是一个抽象类,必须通过静态方法来实例化Calendar对象
Date date = cal.getTime();将Calendar类型对象转换为Date类型
cal.setTime(date类型数据);将data类型数据转为Calendar类型数据

九、SimpleDateFormat(重点)

1.概念:格式化和解析日期的工具类 用于date 和String 互转
实例化提供对象名来调用其方法,可匿名调用

 Date d = new SimpleDateFormat("yyyy-MM-dd").parse(sc.next());

2.格式: yyyy-MM-dd == >年月日 yyyy-MM-dd hh:mm:ss 年 月 日 时 分 秒
hh表12小时制,HH表24小时制
3.构造方法:public SimpleDateFormat(String pattern) 参数表示传递格式的类型
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd”);实例化SimpleDateFormat,为调用方法提供对象名
4.常用的方法:
public StringBuffer format(Date date)== > 将date类型数据转为有格式的string数据
public Date parse(String text)== 将有格式String类型数据转为date数据

package com.qf.demo06;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test03 {
public static void main(String[] args) throws ParseException {
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String time = sdf.format(d);
System.out.println(time);
Date d1 = sdf.parse(time);
System.out.println(d1);
}
}

输出结果
2022-02-04
Fri Feb 04 00:00:00 CST 2022
所以time是2022-02-04 String类型 有-格式 ,date是Fri Feb 04 00:00:00 CST 2022 一串数据,有年月日 时分秒,
Date d = new Date(); 获取当前的系统时间 有具体的年月日 时分秒
d1 的时分秒为0是因为其由time转换而来,time没有时分秒所以默认为0
如果在new SimpleDateFormat(“yyyy-MM-dd”);是加上hh:mm:ss time就会有时分秒
案例

package com.qf.demo06;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
public class Test05 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入出生日期");
String line =input.next();// 1968-11-23
//对字符串进行拆分
String[] arrays = line.split("-");
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR,Integer.parseInt(arrays[0]));
cal.set(Calendar.MONTH,Integer.parseInt(arrays[1]));
cal.set(Calendar.DAY_OF_MONTH,Integer.parseInt(arrays[2]));
Date date = cal.getTime();
System.out.println(date);
long time = date.getTime();
//获取到系统毫秒值
long t = System.currentTimeMillis();
System.out.println((t-time)/1000/60/60/24/365);
}
}

日期方法类总结
long time = date.getTime(); 获取date数据表示的时间减1970年1月1日0时0分的毫秒值
long t = System.currentTimeMillis(); 获取当前系统时间减1970年1月1日0时0分的毫秒值
两者相减得当前系统与data 的差值
Calendar cal= Calendar.getInstance();Calendar 类是一个抽象类,必须通过静态方法来实例化Calendar对象
Date date = cal.getTime();将Calendar类型对象转换为Date类型
cal.setTime(date类型数据);将data类型数据转为Calendar类型数据
int year = cal.get(Calendar.YEAR); 获取int类型的年月日
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd”);实例化SimpleDateFormat,为调用方法提供对象名
SimpleDateFormat类型的对象名.format(date类型数据) 将date类型数据转为有格式的string数据
SimpleDateFormat类型的对象名.parse(String数据有格式) 将有格式String类型数据转为date数据

Data SimpleDateFormat Calendar 看代码就会了,主要的功能方法就那两句,感觉一般用不到

2000-01-01格式字符串转为date数据第一种方式
        * String borth =sc.next();
        SimpleDateFormat s1 = new SimpleDateFormat("yyyy-MM-dd");
        Date date = s1.parse(borth);
        *2000-01-01格式字符串转为date数据第二种方式
        *  String line = sc.next();
        String [] array = line.split("-");
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.YEAR,Integer.parseInt(array[0]));
        cal.set(Calendar.MONTH,Integer.parseInt(array[1]));
        cal.set(Calendar.DAY_OF_MONTH,Integer.parseInt(array[2]));
        Date date = cal.getTime();
        * 得出两者插值求出年龄
        * long time =date.getTime();
        long t = System.currentTimeMillis();
        System.out.println((t-time)/1000/60/60/24/365);
        * 将当前系统时间转化为yyyy-MM-dd格式
        * Date d = new Date();
        SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String time = s.format(d);
        //将给定的 Date 格式化为日期/时间字符串,并将结果添加到给定的 StringBuffer
        System.out.println(time);
        * //SimpleDateFormat的parse方法解析字符串的文本,转成Date类型
        Date d1 = s.parse(time);
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入年-月-日");
        /*String[] s = sc.next().split("-");
        int num = Integer.parseInt(s[0]);//静态方法用类名加方法调用*/

        Date d = new SimpleDateFormat("yyyy-MM-dd").parse(sc.next());
        Calendar cal = Calendar.getInstance();
        cal.setTime(d);
        int num = cal.get(Calendar.YEAR);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值