Java基础 - 常用类

9.JDK常用类

9.1 String类

  • 常用方法

      String format(String format, Object... args) 
    
      format:  %d 整数  %s 字符串  %c 字符
    

说说String str ="ABC"和String str = new String("ABC")的区别.

  • String str = "ABC";该代码创建了一个对象或者没有创建String对象.
    若常量池存在ABC,则直接引用,若常量池不存在ABC,则先创建对象,再引用.
  • String str = new String("ABC"); 该代码创建了一个或者两个String对象.
    new肯定会创建String对象,(同上).

String对象比较:

  1. 单独使用""引号创建的字符串都是常量,编译期就已经确定存储到常量池中;
  1. 使用new String("")创建的对象会存储到堆内存中,是运行期才创建;
  1. 使用只包含直接量的字符串连接符如"aa" + "bb"创建的也是直接量编译期就能确定,已经确定存储到常量池中;
  1. 使用包含String直接量(无final修饰符)的字符串表达式(如"aa" + s1)创建的对象是运行期才创建的,存储在堆中;

字符串拼接

  • StringBuffer :特点: 线程安全性较高,但是性能较低. 多线程使用StringBuffer.
  • StringBuilder :特点: 线程安全性较低,但是性能较高. 推荐 单线程使用StringBuilder.

9.2 Math类

  • 常用方法

      double abs(double a)  返回一个 数的绝对值(正数)
    
      double cbrt(double a) 开三次方
    
      double ceil(double a)   a为正数则整数位+1,小数舍弃;a为负数则直接舍弃小数  
      如a =1.6 返回 2;a = -1.6 返回-1
    
      double floor(double a)  a为正数则直接舍弃小数;a为负数则整数位-1,小数舍弃
    
      double max(double a,double b) 返回两个数的最大值
    
      double min(double a,double b) 返回两个数的最小值
    
      double pow(double a,double b) 返回a的b次方
    
      double round(double a) 返回a的四舍五入值
    
      double sqrt(double a) 开平方,取正数
    
      double random() 返回[0,1)之间的随机数
    
      public static final double E = 2.718281828459045D;  自然对数的底数
    
      public static final double PI = 3.141592653589793D;  圆的周长与直径之比
    

9.2 Random类

用来生成伪随机数的类,伪随机数指的是有规律的随机数

  • 常用方法

      double nextDouble() 返回[0,1)之间的随机数
    
      int nextInt(int bound) 返回[0,bound)之间的随机整数
    

9.2 BigInteger/BigDecimal类

  1. BigInteger

    不可变的任意精度的整数

    • 常用方法

        BigInteger valueOf(long value) 静态方法获取对象  返回指定value值的对象
      
        BigInteger add(BigInteger value)    返回this+value的值的对象
      
        BigInteger divide(BigInteger value)     返回this/value 的值对象
      
        BigInteger multiply(BigInteger value)   返回this*value 的值对象
      
        BigInteger subtract(BigInteger value)   返回this-value 的值对象
      
  2. BigDecimal

    不可变的任意精度的有符号十进制数

    适用于对于数字精度有高要求的场景

    • 常用方法

        static BigDecimal valueOf(double val) 静态方法创建对象,val不超出double极限的情况下可以使用
      
        BigDecimal(String val) 构造方法,传入字符串形式
      
        其他常用方法同BigInteger
      
    • 示例代码

        double a1 = 3.14;
        double a2 = 1000000.00000001;
        System.out.println(a1*a2);
        //输出3140000.0000000317,精度不准确,对精度要求极高的系统影响很大
      
        BigDecimal c1 = new BigDecimal(3.14);
        BigDecimal c2 = new BigDecimal(1000000.00000001);
        System.out.println(c1.multiply(c2));
        //输出 3140000.00000003156113848490349607235614363913282255647008156529409461654722690582275390625
        //这种传入数字类型的创建方式,会导致小数位出现异常情况,不建议使用此构造方式
      
        BigDecimal b1 = new BigDecimal("3.14");
        BigDecimal b2 = new BigDecimal("1000000.00000001");
        System.out.println(b1.multiply(b2));
        //输出 3140000.0000000314  精度准确,推荐此方式
      

9.3 通用唯一标识符

UUID

  • 定义

    • 这个UUID的值是有时间(包括时区,经纬度等信息),硬件信息等等综合产生的一个值,这个值全球计算机界唯一

    • 表示一个128位的值

  • 常用方法

      static UUID randomUUID()  获取伪随机生成的UUID对象
    
  • 常用场景

    1. 验证码

    2. mysql数据库 表table中的主键,特点是唯一

9.3 Date

表示特定的瞬间,精确到毫秒,表示的是毫秒值

  • 构造方法

      Date()  创建表示当前时间的对象
    
      Date(long date)     创建对象,表示从标准基准时间1970年1月1日00:00:00GMT以来的指定毫秒数date
    
  • 常用方法

      log getTime()   返回Date对象的毫秒值    
    

9.3 DateFormat

这个类是专门处理格式化(Date --> String)和解析(String --> Date)

  • 常用方法

      DateFormat getDateInstance()  获取对象的静态方法
    
      DateFormat getDateTimeInstance()
    
      DateFormat getInstance() 
    
      String format(Date date)   将Date格式化为字符串
    
      Date parse(String source)   将字符串解析成Date
    

9.3 SimpleDateFormat

可按照我们自己需要的样式来格式化和解析日期的类,是DateFormat的子类

  • 构造方法

      SimpleDateFormat(String pattern) pattern为日期格式,如yyyy-MM-dd HH:mm:ss
    
  • 常用方法

      String format(Date date)   将Date格式化为字符串
    
      Date parse(String source)   将字符串解析成Date
      注意: source的格式必须与pattern一致
    
  • 示例代码

      String pattern = "yyyy年MM月dd日-E-HH时mm分ss秒";//自定义的格式
      SimpleDateFormat df = new SimpleDateFormat(pattern);
      //格式化
      String str = df.format(new Date());
      //解析字符串,传入的字符串格式必须跟自定义格式一致
      Date parse = df.parse("2015年3月22日-星期五-15时23分22秒");
    

9.3 Calendar

可通过操作日历字段获得或修改时间

  • 常用方法

      static Calendar getInstance()   获取日历对象,默认拿到的是当前时间
    
      set(int field, int value)   将指定的日历字段设置为指定值
    
      void setTime(Date date) 使用指定的Date设置日历的时间
    
      add(int field, int amount)  根据日历规则,为给定的日历字段添加或者减去指定的时间量
    
      int get(int field) 获取指定日历字段的值
    
      Date getTime()  返回一个表示此日历时间的Date对象
    
      long getTimeInMillis()  返回此日历的时间毫秒数
    
      
      日历中的字段
    
      YEAR    年
    
      MONTH   月  从0开始算
    
      DAY_OF_MONTH    一个月中的某天
    
      HOUR_OF_DAY     一天中的小时
    
      MINUTE      一个小时中的分钟
    
      SECOND      一分钟中的秒
    
  • 示例代码

      Calendar calendar = Calendar.getInstance();
      int year = calendar.get(Calendar.YEAR);
      int month = calendar.get(Calendar.MONTH) + 1; //从0开始算,需+1
      int day = calendar.get(Calendar.DAY_OF_MONTH);
      int hour = calendar.get(Calendar.HOUR_OF_DAY);
      int min = calendar.get(Calendar.MINUTE);
      int second = calendar.get(Calendar.SECOND);
      System.out.println(String.format("%d-%d-%d %d:%d:%d",year,month,day,hour,min,second));
    
      calendar.set(Calendar.YEAR,2000); //设置年为2000
      System.out.println(calendar.getTime());
    
      //想知道50天后的日子,两种方式
      //calendar.set(Calendar.DAY_OF_MONTH,calendar.get(Calendar.DAY_OF_MONTH) + 50);
      calendar.add(Calendar.DAY_OF_MONTH,50);//给当前天数增加50天
      System.out.println(calendar.getTime());
    
      //将日历年份退回到1000年前
      calendar.add(Calendar.YEAR,-1000);
      System.out.println(calendar.getTime());
    

你可能感兴趣的:(Java基础 - 常用类)