Java常用类总结

字符串中相关的类:String

  1. 说明:String:字符串,使用一对“”引起来表示的

    • 声明为final的,不可被继承

    • 实现了Serializable接口:表示字符串是支持序列化的

      实现了Comparable接口:表示String可以比较大小

    • 内部定义了final char[] value 用于存储字符串数据

    • 代表不可变的字符序列。

      • 当对字符串重新赋值时,需要重新制定内存区域赋值,不能使用原有的value进行赋值
      • 当对享有的字符串进行连接操作时,需要重新制定内存区域赋值,不能使用原有的value进行赋值
    • 通过字面量的方式给一个字符串赋值,此时的字符串值声明在字符串常量池中

    • 字符串常量池中是不会存储相同内容的字符串的

  2. String的实例化方式:

    • 通过字面量定义的方式
    • 通过new + 构造器的方式
  3. 面试题:String s = new String(“abc”); 方式创建对象,在内存中创建了几个对象?答:两个 —一个堆空间中new的,另一个是线程池中的value值

  4. 结论:

    • 常量与常量的拼接结果在常量池。且常量池中不会存在相同内容的常量
    • 只要其中有一个是变量,结果就在堆中
    • 如果拼接的结果调用intern()方法,返回值就在常量池中
    • 请添加图片描述
  5. 常用方法

    • boolean endsWith(String suffix):测试此字符串是否以指定的后缀结束
    • boolean startsWith(String prefix):测试此字符串是否以指定的前缀开始
    • boolean startsWith(String prefix, int toffset):测试此字符串从指定索引开始的子字符串是否以指定前缀开始
    • boolean contains(CharSequence s):当且仅当此字符串包含指定的 char 值序列时,返回 true
    • int indexOf(String str):返回指定子字符串在此字符串中第一次出现处的索引
    • int indexOf(String str, int fromIndex) :返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始
    • ** **int lastIndexOf(String str):**返回指定子字符串在此字符串中最右边出现处的索引
    • **int lastIndexOf(String str, int fromIndex)****:**返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索
    • 注:indexOf和lastIndexOf方法如果未找到都是返回-1
    • String replace(char oldChar, char newChar) :返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
    • String replace(CharSequence target, CharSequence replacement):使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。
    • String replaceAll(String regex, String replacement) 使 用 给 定 的replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
    • String replaceFirst(String regex, String replacement) 使 用 给 定 的replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。
    • boolean matches(String regex):**告知此字符串是否匹配给定的正则表达式。 **
    • **String[] split(String regex):**根据给定正则表达式的匹配拆分此字符串。
    • String[] split(String regex, int limit):根据匹配给定的正则表达式来拆分此字符串,最多不超过limit个,如果超过了,剩下的全部都放到最后一个元素中。
    • String—>char[] : 调用String的同CharArray();
    • char[] —>String: 调用String的构造器
    • String 与byte[] 之间的转换
      • 编码:String–> byte[] : 调用String的getBytes();
      • 解码:byte[]–>String:调用String构造器

StringBuffer

  1. String、StringBuffer、StringBuilder三者的异同?
    • String:不可变的字符序列;底层使用char[]存储
    • StringBuffer:可变的字符序列;线程安全的,效率低;底层使用char[]存储
    • StringBuilder:可变的字符序列;jdk5.0新增的,线程不安全,效率高;底层使用char[]存储
  2. StringBuffer注意:
    • StringBuffer的默认初始长度为16
    • 扩容问题:默认情况下扩容为元类的2倍加2,同时将原有数组中的元素复制到新的数组中
  3. StringBuffer的常用类
    • StringBuffer append(xxx):提供了很多的append()方法,用于进行字符串拼接
    • StringBuffer delete(int start,int end):删除指定位置的内容
    • StringBuffer replace(int start, int end, String str):把[start,end)位置替换为str
    • StringBuffer insert(int offset, xxx):在指定位置插入xxx
    • StringBuffer reverse() :把当前字符序列逆转
    • public int indexOf(String str)
    • public String substring(int start,int end)
    • public int length()
    • public char charAt(int n )
    • public void setCharAt(int n ,char ch)
  4. 对比String、StringBuffer、StringBuilder三者效率对比
    • 从高到低排列:StringBulider>StringBuffer>String

日期和时间

  1. System类提供的public static long currentTimeMillis()用来返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。

  2. java.util.Date 表示特定的瞬间,精确到毫秒

    • getTime(): 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
    • *oString():把此 Date 对象转换为以下形式的 String: dow mon ddhh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat),zzz是时间标准。
  3. java.sql.Date表示特定的瞬间,精确到毫秒,只打印出年月日

    • 如何将java.util.Data对象转化为java.sql.Data

      • Data data=new Data();
        java.sql.Data data2=new java.sql.Data(data.getTime());
        
  4. java.text.SimpleDateFormat

    • 两个操作①格式化 ②解析

      • 格式化:日期—> 字符串
      • 解析:格式化的逆过程,字符串 —>日期
    • package com.zhh.java2;
      
      import org.junit.Test;
      
      import java.text.ParseException;
      import java.text.SimpleDateFormat;
      import java.util.Date;
      
      public class testSimpleDateFormat {
      
          @Test
          public  void testSimpleData() throws ParseException {
              //实例化SimpleDataFormat   使用默认构造器,一般不用
              SimpleDateFormat sdf = new SimpleDateFormat();
              //格式化:日期--->字符串
              Date date = new Date();
              System.out.println(date);
      
              String format= sdf.format(date);
              System.out.println(format);
      
              //解析:格式化的逆过程,字符串 --->日期
              String str = "22-1-14 上午11:07"; //默认解析格式
              Date date1 = sdf.parse(str);
              System.out.println(date1);
      
              //-----------------------------------
              //自定义格式
              SimpleDateFormat sdf1 =new SimpleDateFormat("yyyy-MM-dd hh-mm-ss");
              System.out.println((String) sdf1.format(date));
          }
      }
      
      
    • 练习:字符串“2020-08-08”转化为java.sql.Data

      • String birth = "2020-08-08";
        
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
        Date date sdf1.prase(birth);
        
        java.sql.Date birthDate = new java.sql.Date(date.getTime());
        System.out.println(birthDate);
        
  5. java.util.Calendar(日历)类

    1. 获取Calendar实例的方法

      • 使用Calendar.getInstance()方法
      • 调用它的子类GregorianCalendar的构造器。
    2. 一个Calendar的实例是系统时间的抽象表示,通过get(int field)方法来取得想

      要的时间信息。比如YEAR、MONTH、DAY_OF_WEEK、HOUR_OF_DAY 、

      MINUTE、SECOND

      • public void set(int field,int value)
      • public void add(int field,int amount)
      • public final Date getTime()
      • public final void setTime(Date date)
    3. 注意:

      • 获取月份时:一月是0,二月是1,以此类推,12月是11
      • 获取星期时:周日是1,周二是2 , 。。。。周六是7
    4. 问题

      • 可变性:像日期和时间这样的类应该是不可变的。
      • 偏移性:Date中的年份是从1900开始的,而月份都从0开始。
      • 格式化:格式化只对Date有用,Calendar则不行。
      • 此外,它们也不是线程安全的;不能处理闰秒等。
  6. LocalDate、LocalTime、LocalDateTime的使用

    • //.now() 获取当前时间
             LocalDate localDate =LocalDate.now();
             LocalTime localTime = LocalTime.now();
             LocalDateTime localDateTime = LocalDateTime.now();
       
             System.out.println(localDate);
             System.out.println(localTime);
             System.out.println(localDateTime);
       
             //.of() 设置指定的年月日,时分秒 没有没有偏移量
             LocalDateTime localDateTime1 = LocalDateTime.of(2020, 5, 4, 12, 5);
             System.out.println(localDateTime1);
       
             //getXxx();
             System.out.println(localDateTime1.getYear());
             System.out.println(localDateTime1.getMonth());
       
             //setXxx()
             LocalDate localDate1=localDate.withDayOfMonth(22);
             System.out.println(localDate1);
             System.out.println(localDate); //体现不可变性
       
         }
      
  7. 瞬时: Instant

    • Instant:时间线上的一个瞬时点。 这可能被用来记录应用程序中的事件时间戳。

    • (1 ns = 10-9 s) 1秒 = 1000毫秒 =106微秒=109纳秒

    • 请添加图片描述

    • 时间戳是指格林威治时间1970年01月1日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。

  8. 格式化与解析日期或时间

    1. 预定义的标准格式。 ISO_LOCAL_DATE_TIME;ISO_LOCAL_DATE;ISO_LOCAL_TIME
    2. 本地化相关的格式。如:ofLocalizedDateTime(FormatStyle.LONG)
    3. 自定义的格式。如:ofPattern(“yyyy-MM-dd hh:mm:ss”)
    4. 方法:
      • ofPattern(String pattern) 静态方法 , 返 回 一 个 指 定 字 符 串 格 式 DateTimeFormatter
      • format(TemporalAccessor t) 格式化一个日期、时间,返回字符
      • parse(CharSequence text) 将指定格式的字符序列解析为一个日期、时间
  9. 与传统日期处理的转换

    • 请添加图片描述

java比较器

  1. 自然排序:java.lang.Comparable

    • 实现 Comparable 的类必须实现 compareTo(Object obj) 方法,两个对象即通过 compareTo(Object obj) 方法的返回值来比较大小。如果当前对象this大 于形参对象obj,则返回正整数,如果当前对象this小于形参对象obj,则返回负整数,如果当前对象this等于形参对象obj,则返回零。
    • 对于类 C 的每一个 e1 和 e2 来说,当且仅当 e1.compareTo(e2) == 0 与e1.equals(e2) 具有相同的 boolean 值时,类 C 的自然排序才叫做与 equals 一致。建议(虽然不是必需的)最好使自然排序与 equals 一致。
  2. 定制排序:java.util.Comparator

    • 当元素的类型没有实现 java.lang.Comparable 接口而又不方便修改代码

      或者实现了 java.lang.Comparable 接口的排序规则不适合当前的操作,

      么可以考虑使用 Comparator 的对象来排序

    • 重写compare(Object o1,Object o2)方法,比较o1和o2的大小:如果方法返 回正整数,则表示 o1 大于 o2 ;如果返回 0 ,表相等;返回负整数,表示 o1 小于 o2

System类

  1. System类内部包含in、out和err三个成员变量,分别代表标准输入流(键盘输入),标准输出流(显示器)和标准错误输出流(显示器)。
  2. native long currentTimeMillis() **:**该方法的作用是返回当前的计算机时间,时间的表达格式为当前计算机时间和GMT时间(格林威治时间)1970年1月1号0时0分0秒所差的毫秒数。
  3. void exit(int status) **:**该方法的作用是退出程序。其中status的值为0代表正常退出,非零代表异常退出。使用该方法可以在图形界面编程中实现程序的退出功能等。
  4. void gc() **:**该方法的作用是请求系统进行垃圾回收。至于系统是否立刻回收,则取决于系统中垃圾回收算法的实现以及系统执行时的情况。
  5. String getProperty(String key) **:**该方法的作用是获得系统中属性名为key的属性对应的值。系统中常见的属性名以及属性的作用如下表所示:
  • 请添加图片描述

Math

  1. abs 绝对值
  2. acos,asin,atan,cos,sin,tan* 三角函数
  3. sqrt* 平方根
  4. *pow(double a,doble b) a的b次幂
  5. log** 自然对数
  6. *exp e为底指数
  7. max(double a,double b)
  8. min(double a,double b)
  9. random()** **返回****0.0到1.0的随机数
  10. long round(double a) double型数据a转换为long型(四舍五入)
  11. toDegrees(double angrad)** 弧度**—>角度
  12. toRadians(double angdeg)** 角度**—>弧度**

BigInteger

  1. BigInteger 可以表示不可变的任意精度的整数
  2. BigInteger 还提供以下运算:模算术、GCD 计算、质数测试、素数生成、位操作以及一些其他操作。
  3. 构造器 BigInteger(String val):根据字符串构建BigInteger对象
  4. 常用方法:
    • public BigInteger abs():返回此 BigInteger 的绝对值的 BigInteger。
    • BigInteger add(BigInteger val) :返回其值为 (this + val) 的 BigInteger
    • BigInteger subtract(BigInteger val) :返回其值为 (this - val) 的 BigInteger
    • BigInteger multiply(BigInteger val) :返回其值为 (this * val) 的 BigInteger
    • BigInteger divide(BigInteger val) :返回其值为 (this / val) 的 BigInteger。整数相除只保留整数部分。
    • BigInteger remainder(BigInteger val) :返回其值为 (this % val) 的 BigInteger。
    • BigInteger[] divideAndRemainder(BigInteger val):返回包含 (this / val) 后跟(this % val) 的两个 BigInteger 的数组。
    • BigInteger pow(int exponent) :返回其值为 (thisexponent) 的 BigInteger

BigDecimal

  1. 一般的Float类和Double类可以用来做科学计算或工程计算,但在**商业计算中,**要求数字精度比较高,故用到 java.math.BigDecimal 类。
  2. BigDecimal类支持不可变的、任意精度的有符号十进制定点数。
  3. 构造器
  • public BigDecimal(double val)
  • public BigDecimal(String val)
  1. 常用方法
    • public BigDecimal add(BigDecimal augend)
    • public BigDecimal subtract(BigDecimal subtrahend)
    • public BigDecimal multiply(BigDecimal multiplicand)
    • public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BayMin0520

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值