常用类-备忘录

跳转到总目录


常用类

1. Arrays类

static List asList(T…a): 可以放入数组或直接以可变参放入多个类.
static void sort(int[] a): 排序.
static void fill(int[] a, int val): 将指定值填充.
static int binarySearch(int[] a, int key): 对排序后进行二分查找指定值.
static boolean equals(boolean[] a, boolean[] a2): 判断数组是否相等.
基本数据类型(数值型)的包装类有比较大小的方法,如Double类型数值: Double.compareTo(double d1, double d2).


JDK8之前的时间API

注: System.currentTimeMillis() //当前时间与1970-01-01 00:00:00的时间差,即时间戳

1. SimpleDateFormat

格式化 format: Date–>String
解析 parse: String–>Date

 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
 System.out.println(sdf.format(new Date()));
 System.out.println(sdf.parse("2020-02-02 12:12:12"));

2. Calendar

Calendar calendar =Calendar.getInstance(): 获取当前时间.
calendar.set(2021,8,10,15,0,0): 设置时间,注意第二个参数月份是从0开始的,即0为一月,8就是9月了.
calendar.get(Calendar.DAY_OF_WEEK): 获取星期几,返回结果1表示星期日,2表示星期一,…
calendar.get(Calendar.HOUR_OF_DAY): 获取几点,返回的是24时的,Calendar.HOUR返回的是12时的.
calendar.add(Calendar.DATE, 1): 增加,这是将原先时间中的Day加一.
new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”).format(calendar): 格式化.


JDK8中的时间API

1. LocalDate,LocalTime,LocalDateTime(类似Calendar):

now(): 获取当前日期,时间,日期时间,
of(): 设置指定的年月日时分秒,无偏移量.
getXxx(): 获取指定的类型(年,月…)的值.
withXxx(): 设定指定的类型的值,返回新值(原值不可变性).
plusXxx(): 新增指定的类型的值,返回新值(原值不可变性).
minusXxx(): 减少指定的类型的值,返回新值(原值不可变性).

2. Instant(类似Date):

now(): 获取本初子午线对应的标准时间.
atOffset(ZoneOffset.ofHours(8)): 添加时间的偏移量(东八区写8).
toEpochMilli(): 获取1970-1-1 00:00:00开始的毫秒数,即时间戳.

3. DateTimeFormatter(类似SimpleDateFormat):

格式化 format: LocalDate,LocalTime,LocalDateTime–>String
解析 parse: String–>LocalDate,LocalTime,LocalDateTime

 DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
 System.out.println(dateTimeFormatter.format(LocalDateTime.now()));
 System.out.println(dateTimeFormatter.parse("2021-09-25 10:12:10"));

4. 附当月日历(用JDK8中的时间API)

    //当月日历
    @Test
    public void test3(){
        LocalDate date = LocalDate.now();
        int month = date.getMonthValue();
        int today = date.getDayOfMonth();
        date = date.minusDays(today - 1); // Set to start of month
        DayOfWeek weekday = date.getDayOfWeek();
        int value = weekday.getValue();
        System.out.println("Mon Tue Wed Thu Fri Sat Sun");
        for (int i = 1; i < value; i++)
            System.out.print("    ");
        while (date.getMonthValue()== month) {
            System.out.printf("%3d", date.getDayOfMonth());
            if (date.getDayOfMonth() == today)
                System.out.print("*");
            else
                System.out.print(" ");
            date = date.plusDays(1);
            if (date.getDayOfWeek().getValue() == 1) System.out.println();
        }
        if (date. getDayOfWeek() .getValue() != 1) System.out.println();
    }

比较器

Comparable接口(自然排序),String就实现了Comparable接口,重写了compareTo(obj)方法,自定义类也是一样的步骤.
当前this对象大于形参obj,返回正整数(从小到大),小于返回负整数,等于返回零.

public class Goods implements Comparable{
  private String name;
  private int price;

  @Override
  public int compareTo(Object o) {
    if (o instanceof Goods){
      Goods goods = (Goods) o;
      return this.price-goods.price;
    }
   throw new RuntimeException("传入的类型不一致!");
  }
}

Comparator接口(定制排序),没有实现Conparable接口,又不方便修改代码或实现的Comparable接口规则不适合当前操作,可以考虑使用Comparator接口.
o1大于o2,返回正整数,小于返回负,等于返回零.(o1,o2表示比较的类).

   @Test
    public void test(){
        String[] arr = {"Za", "DD", "WW", "gg"};
 
        //Comparator接口(定制排序)
        Arrays.sort(arr, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return -o1.compareTo(o2);
            }
        });
        System.out.println(Arrays.toString(arr));
    }

一般情况下:
Compare接口的方法一旦一定,保证其实现类在任何位置可以比较.
Comparator接口属于临时性的比较.


Math类

注: 以下部分方法省略了参数类型和返回值类型.

abs(): 绝对值
random(): 返回0.0~1.0的随机数.
acos(),asin(),atan(),cos(),sin(),tan(): 三角函数.
sqrt(): 平方根.
long round(double a): double转long的四舍五入.
pow(double a ,double b): a的b次幂.
log: 自然对数.
exp: e为底的指数.
toDegrees(double angrad): 弧度->角度.
toRadians(double angdeg): 角度->弧度.
max(double a, double b): a,b中的最大值.
min(double a, double b): a,b中的最小值.


BigInteger类

Integer最大为2^31-1,
Long最大为2^63-1,
BigInteger表示不可变的任意精度整数.

add(BigInteger val): 加+.
subtract(BigInteger val): 减-.
multiply(BigInteger val): 乘*.
divede(BigInteger val): 除/.
remainder(BigInteger val): 取模%.
abs: 绝对值.
pow(int exponent): 幂运算,返回this exponent的BigInteger.


BigDecimal类

一般Float类和Double类可以做科学计算或工程计算,但在商业模式中,要求数字精度比较高,故用到BigDecimal,表示不可变得任意精度的有符号的十进制数.

add(BIgDecimal val): 加+.
subtract(BigDecimal val): 减-.
multiply(BigDecimal val): 乘*.
divede(BidDecimal val): 除/ (注:除不尽的要指定算多少位).


String类

不可变,底层是final char[].

1. 两种赋值方式

  • 字面量方式(区别于new)赋值,此时字符串声明在方法区中的常量池中(即 String s = “sss”).
  • new String()赋值,声明在堆中,此时保存的地址值指向常量池.

2. 拼接时

  • String常量与常量拼接,结果在常量池,且常量池中不会有相同内容的常量(基本数据都是变量,加final可变为常量).
  • 拼接时其中有一个是变量,结果就会在堆中.
  • 如果拼接结果调用intern(),返回值就在常量池中.

注: getByte(“编码集”) GBK占2字节(byte),UTF-8占3字节.

3. String类,StringBuffer类,StringBuilder类异同

String: 不可变得字符序列,底层用final char[].
StringBuffer: 可变的字符序列,线程安全的,效率低,底层用char[].
StringBuilder: 可变的字符序列,线程不安全的,效率高,底层用char[].
StringBuffer类与StringBuilder类大致相同,继承同一个类AbstractStringBuilder,方法都是一样的,区别于其内方法中是否加了synchronized来同步.

4. StringBuffer类,StringBuilder类的扩容机制

无参默认char[]大小为16,有参为参.lenth()+16.
当超出容量时,扩容为原来容量的2倍+2(这是默认情况,但如果append()过大时,就会直接扩容为append()的值得长度),同时将原先数组复制到新的数组中.

5. StringBuffer类,StringBuilder类的常用方法

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):返回一个从start开始到end索引结束的左闭右开区间的子字符串
public int length()
public char charAt(int n )
public void setCharAt(int n ,char ch)

总结:
增:append(xxx)
删:delete(int start,int end)
改:setCharAt(int n ,char ch) / replace(int start, int end, String str)
查:charAt(int n )
插:insert(int offset, xxx)
长度:length();
遍历:for() + charAt() / toString()


System类

native long currentTimeMillis(): 时间戳(毫秒数),与1970年1月1日0时0分0秒的差.
void exit(int status): 0代表正常退出,非0代表异常退出.
void gc(): 请求系统垃圾回收,是否立即回收看情况.
String getProperty(String key): 获取系统属性,key值如下:

  • System.getProperty(“java.version”)): Java运行环境版本.
  • System.getProperty(“java.home”)): Java安装目录.
  • System.getProperty(“os.name”)): 当前操作系统名称.
  • System.getProperty(“os.version”)): 当前操作系统版本.
  • System.getProperty(“user.name”)): 当前用户的账号名称.
  • System.getProperty(“user.home”)): 当前用户的主目录.
  • System.getProperty(“user.dir”)): 当前用户的工作目录.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值