第三章:常用类02

第三章:常用类

Data日期类

java对日期类的处理

  • 怎么获取当前时间
  • 怎么将Date转换成字符String
  • 怎么将String转换成Date

1. 怎么获取当前时间

	  Date newTime = new Date();
  	  System.out.println(newTime);

2. 怎么将Data日期类型标准化??

      yyyy 年(年是4位)
      MM 月
      dd 日
      HH 时
      mm 分
      ss 秒
      SSS 毫秒
	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
    String nowTimeStr = sdf.format(newTime);
    System.out.println(nowTimeStr);

3. 怎么将标准日期类型转换成Data类型??

	 //将字符创格式转换成Date
    String time = "2008-08-08 08:05:08 888";
    SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
    Date dateTime = sdf2.parse(time);
    System.out.println(dateTime);
public class DateTest01 {
    
    
    public static void main(String[] args) throws ParseException {
    
    
        //获取系统当前时间(精确到毫秒的系统当前时间)
        Date newTime = new Date();
        System.out.println(newTime);//Tue Nov 03 20:01:02 CST 2020
        //将Date转换成字符串格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
        String nowTimeStr = sdf.format(newTime);
        System.out.println(nowTimeStr);
        //将字符创格式转换成Date
        String time = "2008-08-08 08:05:08 888";
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
        Date dateTime = sdf2.parse(time);
        System.out.println(dateTime);
    }
}

3. 怎么将 总毫秒数---->Date—>标准化处理??

/*
将毫秒数通过Date中的构造方法转换成Date类型,再用SimpleDateFormat做标准化输出
Date
public Date(long date)
分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。

参数:
date - 自 1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数。
    将毫秒数转换成Date
 */
public class DateTest03 {
    
    
    public static void main(String[] args) {
    
    
        long nowTime = System.currentTimeMillis(); //获取总毫秒数
        Date time = new Date(nowTime);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm-ss SSS");
        String sdfTime = sdf.format(time);
        System.out.println(sdfTime);
    }
}

枚举类

  • 枚举是一种引用数据类型

  • 枚举类型怎么定义,语法是?

     enum 枚举类型名{
     枚举值1,枚举值2....
     } 
    
  • 结果值只有两种情况的建议使用boolean类型。

     结果超过两种并且还是可以一枚一枚列举出口的,建议使用枚举类型。
     例如:颜色,四季,星期等都可以使用枚举类型
    
public class EnumTest02 {
    
    
    public static void main(String[] args) {
    
    
        Result r = divide(10,0);
        System.out.println(r == Result.SUCCESS?"计算成功":"计算失败");

    }

    /**
     * 计算两个int类型数据的商。
     * @param a
     * @param b
     * @return  Result.SUCCESS表示成功,Result.FAIL表示失败
     */
    public static Result divide(int a,int b){
    
    
        try {
    
    
            int c = a / b;
            return Result.SUCCESS;
        }catch (Exception e){
    
    
            return Result.FAIL;
        }
    }
/*
    枚举:一枚一枚可以列举出来的,才建议用枚举
    枚举编译之后也是生成class文件。
    枚举也是一种引用数据类型
    枚举中的每一个值都可以看做是常量
 */
enum Result{
    
    
    //SUCCESS 是枚举Result的一个值
    //FAIL是枚举Result类型中的一个值
    //枚举中的每一个值,可以看做是常量
    SUCCESS,FAIL
}
}

Random类

/*
    int nextInt(int n)
          返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int 值。
 */

public class RandomTest01 {
    
    
    public static void main(String[] args) {
    
    
        //创建随机数对象
        Random random = new Random();
        //产生一个int类型的随机数
        int num1 = random.nextInt();
        System.out.println(num1);

        //产生一个[0,100]之间的随机数。不能产生101
        //nextInt翻译为:下一个int类型的数据是101.表示只能去取到101.
        int num2 = random.nextInt(101);
        System.out.println(num2);
    }
}

Scanner类

概述:
        扫描器。能够解析字符串和基本数据类型
        构造方法
            public Scanner(InputStream is): 构造一个扫描器对象,从指定的输入流中获取参数System.in,对应键盘录入
        成员方法
            hashNextXxx():判断是够还有下一个输入项,其中Xxx可能是任意数据类型。返回值结果为布尔类型。
            nextXxx():过去下一个输入项,其中Xxx可能是任意基本数据类型,返回对应类型的数据
            String nextLine():获取下一行数据。以换行符为分隔符
            String next:获取下一个输入项,以空白符作为分隔符
                            空白字符:空格,tab 回车等
        注意:
            在实际开发中,应用到最多最多的放法就是:
                nextIne() :接受整数
                nextLine():接受字符串
public class Test {
    
    
    public static void main(String[] args) {
    
    
        //创建Scanner类型的对象
        //System.in标准输入流,默认指向键盘
        Scanner sc = new Scanner(System.in);

//        System.out.println("请输入一个整数");
//        //为了避免InputMismatchException异常,可以加一个判断我
//        if (sc.hasNextInt()){//判断下一个录入的书否为整数,如果是,结果就是true
//            int num = sc.nextInt();
//            System.out.println("num:"+num);
//
//        }

        System.out.println("请输入一个字符串");
        String str1 = sc.nextLine();//结束标记是:换行符
        System.out.println("str1:" + str1);

        String str2 = sc.next();//结束标记是:空白字符,tab,换行符
        System.out.println("str2:" + str2);


    }
}

BigDecimal类

/*
   1.BigDecimal 属于大数据,精度极高。不属于基本数据类型,属于java对象(引用数据类型)
   这是SUN提供的一个类。
 */

import java.math.BigDecimal;

public class BigDecimalTest02 {
    
    
    public static void main(String[] args) {
    
    
        //精度极高 且不是基本数据类型,要调用方法进行求和
        BigDecimal v1 = new BigDecimal(100);
        BigDecimal v2 = new BigDecimal(200);
        System.out.println(v1.add(v2));
    }
}

DecimalFormat类

/*
   关于数字的格式化
 */
public class DecimalFormatTest01 {
    
    
    public static void main(String[] args) {
    
    
        //java.text.DecimalFormat专门负责  数字格式化的
        //DecimalFormat df = new DecimalFormat("数字格式");
        /*
            数字格式有哪些?
            # 表示任意数字
            ,表示千分位
            . 代表小数点
            0 代表不够时补0

            "###,###.##"
                表示加入千分位保留两个小数
         */

        DecimalFormat df = new DecimalFormat("###,###.##");
        String s = df.format(1234.56);
        System.out.println(s);

        DecimalFormat df2 = new DecimalFormat("###,###.0000");
        String s2 = df2.format(1234.56);
        System.out.println(s2);
    }
}

StringBuffer类

 java中的字符串是不可变的,每一次拼接都会产生行的字符串
        这样会占用大量的方法区内存。造成内存空间的浪费。
        String s = "abc";
        s += "hello";
        以上两行代码在方法区中创建了3个对象;
            “abc"
            "hello"
            "abchello"
/**
 * 如果以后频繁的采用字符创拼接,建议使用JDK中自带的:
 *  java.lang.StringBuffer
 *  java.lang.StringBuilder
 *
 *  如何优化StringBuffer的性能??
 *      在创建StringBuffer的时候尽可能的给定一个初始化容量。
 *      最好减少底层数组的扩容次数。预估计一下,给一个大一些初始化容量。
 *      关键点:给一个合适的初始化容量
 */

public class StringBuffTest02 {
    
    
    public static void main(String[] args) {
    
    
        //创建一个初始化容量为16个byte[] 数组。(字符串缓冲对象)
        StringBuffer stringBuffer = new StringBuffer();
        //拼接字符串,以后拼接字符同意调用append方法。
        stringBuffer.append("a");
        stringBuffer.append("b");
        stringBuffer.append(3.14);
        stringBuffer.append(true);
        System.out.println(stringBuffer);
        //默认的情况下初始化是向底层申请一个16个空间的byte[]数组。
        StringBuffer stringBuffer1 = new StringBuffer(100);
        stringBuffer1.append("hello");
        stringBuffer1.append("world");
        System.out.println(stringBuffer1);
    }
}


/*
    java.lang.StringBuilder
    StringBuffer和StringBuilder的区别?
    StringBuffer中的方法都有:synchronized关键字修饰。表示StringBuffer在多线程环境下运行是安全的
    StringBuilder中的方法没有:synchronized关键字修饰。表示StringBuilder在多线程环境下运行是不安全的

     StringBuffer是线程安全的
     StringBuilder是非线程安全的


 */
public class StringBuilderTest01 {
    
    
    public static void main(String[] args) {
    
    
        StringBuilder sb = new StringBuilder();
        sb.append(100);
        sb.append(true);
        System.out.println(sb);
    }
}

猜你喜欢

转载自blog.csdn.net/qq_28384023/article/details/109681862