常用类的使用

包装类

  • 分类

基本数据类型

包装类

boolean

Boolean

char

Character

byte

Byte

short

Short

int

Integer

long

Long

float

Float

double

Double

/**
*装箱拆箱演示
*/
public class Integer01 {
    public static void main(String[] args) {
        //手动装箱 int->Integer
        int n1 = 100;
        Integer integer = new Integer(n1);
        Integer integer1 = Integer.valueOf(n1);
        //手动拆箱Integer -> int
        int i = integer.intValue();
        int n2 = 200;
        //自动装箱 int->Integer
        Integer integer2 = n2;
        //自动拆箱 Integer->int
        int n3 = integer2; 
    }
}
  • 包装类与String类型的相互转换

/**
*包装类与String类型相互转换
*/
public class WrapperVSString {
    public static void main(String[] args) {
        //包装类(Integer)->String
        Integer i = 100;

        String str1 = i + "";

        String str2 = i.toString();

        String str3 = String.valueOf(i);
        //String -> 包装类(Integer)
        String str4 = "12345";
        Integer i2 = Integer.parseInt(str4);
        Integer i3 = new Integer(str4);
        System.out.println("ok~~");
    }
}
  • Integer类与Character类的常用方法

/**
*Integer类与Character类的常用方法
*/
public class WrapperMethod {
    public static void main(String[] args) {
        System.out.println(Integer.MIN_VALUE); //返回最小值
        System.out.println(Integer.MAX_VALUE);//返回最大值
        System.out.println(Character.isDigit('a'));//判断是不是数字
        System.out.println(Character.isLetter('a'));//判断是不是字母
        System.out.println(Character.isUpperCase('a'));//判断是不是大写
        System.out.println(Character.isLowerCase('a'));//判断是不是小写
        System.out.println(Character.isWhitespace('a'));//判断是不是空格
        System.out.println(Character.toUpperCase('a'));//转成大写
        System.out.println(Character.toLowerCase('A'));//转成小写
    }
}

String类

  • 创建String对象的两种方式

  1. 直接赋值String s = "Rillia"

  1. 调用构造器String s = new String("Rillia")

  • 字符串的特性

  1. String类是一个final类,代表不可变的字符序列

  1. 字符串是不可变的。一个字符串对象一旦被分配,其内容是不可变的

  • String类的常见方法

  1. equals//区分大小写,判断内容是否相等

  1. equalslgnoreCase//忽略大小写的判断内容是否相等

  1. length//获取字符的个数,字符串的长度

  1. indexOf//获取字符在字符串中第1次出现的索引,索引从0开始,如果找不到,返回-1

  1. lastlndexOf//获取字符在字符串中最后1次出现的索引,索引从0开始,如找不到,返回-1

  1. substring//截取指定范围的子串

  1. trim//去前后空格

  1. charAt:获取某索引处的字符,注意不能使用Str[index] 这种方式。

  1. toUpperCase

  1. toLowerCase

  1. concat

  1. replace 替换字符串中的字符

  1. split 分割字符串,对于某些分割字符,我们需要 转义比如| \ \等

案例:String poem ="锄禾日当午,汗滴禾下土,谁知盘中餐,粒粒皆辛苦";和文

件路径。

  1. compareTo//比较两个字符串的大小

  1. toCharArray//转换成字符数组

  1. format//格式字符串, %s 字符串 %c 字符 %d 整型 %.2f 浮点型

案例,将一个人的信息格式化输出。

StringBuffer类

  1. java.lang.StringBuffer代表可变的字符序列,可以对字符串内容进行增删。

  1. 很多方法与String相同,但StringBuffer是可变长度的。

  1. StringBuffer是一个容器

/**
*StringBuffer
*/
public class StringBuffer01 {
    public static void main(String[] args) {

        StringBuffer stringBuffer = new StringBuffer("hello");
    }
}
String vs StringBuffer
String保存的是字符串常量,里面的值不能更改,每次String类的更新实际上就是更改地址,效率较低//private final char value[];
StringBuffer保存的是字符串变量,里面的值可以更改,每次StringBuffer的更新实际上可以更新内容,不用每次更新地址,效率较高
//char[] value;//这个放在堆。
  • String 和 StringBuffer 相互转换

/**
*String 和 StringBuffer 相互转换
*/
public class StringAndStringBuffer {
    public static void main(String[] args) {
        // String——>StringBuffer
        String str = "hello tom";
        //方式 1 使用构造器
        //返回的才是 StringBuffer 对象,对 str 本身没有影响
        StringBuffer stringBuffer = new StringBuffer(str);
        //方式 2 使用的是 append 方法
        StringBuffer stringBuffer1 = new StringBuffer();
        stringBuffer1 = stringBuffer1.append(str);
        StringBuffer stringBuffer3 = new StringBuffer("hh");
        //方式 1 使用 StringBuffer 提供的 toString 方法
        String s = stringBuffer3.toString();
        //方式 2: 使用构造器来搞定
        String s1 = new String(stringBuffer3);
    }
}
  • StringBuffer 类常见方法

/**
*StringBuffer 类常见方法
*/
public class StringBufferMethod {
    public static void main(String[] args) {
        StringBuffer s = new StringBuffer("hello");
        s.append(',');
        s.append("ll");
        s.append("tt").append(100).append(true).append(10.5);
        s.delete(11, 14);
        System.out.println(s);
  
        s.replace(9, 11, "rr");
        System.out.println(s);
        int indexOf = s.indexOf("ll");
        System.out.println(indexOf);//6
        s.insert(9, "tt");
        System.out.println(s);
        
        System.out.println(s.length());
        System.out.println(s);
    }
}

StringBuilder

  • 基本介绍

  1. 一个可变的字符序列。此类提供一个与StringBuffer 兼容的API,但不保证同步(StringBuilder 不是线程安全)。该类被设计用作 StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候。如果可能,建议优先采用该类因为在大多数实现中,它比 StringBuffer 要快 。

  1. 在 StringBuilder 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。

/**
*StringBuilder 类
*/
public class StringBuffer01 {
    public static void main(String[] args) {

        StringBuffer stringBuffer = new StringBuffer("hello");
    }
}
  • StringBuilder 常用方法

/**
*StringBuilder 常用方法
*/
public class StringBuilder01 {
public static void main(String[] args) {

        StringBuilder stringBuilder = new StringBuilder();
	}
}
String、StringBuffer 和 StringBuilder 的比较
StringBuilder和 StringBuffer非常类似,均代表可变的字符序列,而且方法也一样
String:不可变字符序列,效率低,但是复用率高。
StringBuffer:可变字符序列、效率较高(增删)、线程安全,看源码
StringBuilder:可变字符序列、效率最高、线程不安全
String使用注意说明:string s="a";//创建了一个字符串s+="b";//实际上原来的"a"字符串对象已经丢弃了,现在又产生了一个字符串s+"b”(也就是"ab").如果多次执行这些改变串内容的操作,会导致大量副本字符串对象存留在内存中,降低效率。如果这样的操作放到循环中,会极大影响程序的性能 =>结论:如果我们对String 做大量修改,不要使用String
String、StringBuffer 和 StringBuilder 的选择
如果字符串存在大量的修改操作,一般使用 StringBuffer 或StringBuilder
如果字符串存在大量的修改操作,并在单线程的情况,使用 StringBuilder
如果字符串存在大量的修改操作,并在多线程的情况,使用 StringBuffer
如果我们字符串很少修改,被多个对象引用,使用String,比如配置信息等

Math类

Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。

/**
*Math 类常见方法应用案例
*/
public class MathMethod {
    public static void main(String[] args) {

        //1.abs 绝对值
        int abs = Math.abs(-9);
        System.out.println(abs);//9
        //2.pow 求幂
        double pow = Math.pow(2, 4);//2 的 4 次方
        System.out.println(pow);//16
        //3.ceil 向上取整,返回>=该参数的最小整数(转成 double);
        double ceil = Math.ceil(3.9);
        System.out.println(ceil);//4.0
        //4.floor 向下取整,返回<=该参数的最大整数(转成 double)
        double floor = Math.floor(4.001);
        System.out.println(floor);//4.0
        //5.round 四舍五入 Math.floor(该参数+0.5)
        long round = Math.round(5.51);
        System.out.println(round);//6
        //6.sqrt 求开方
        double sqrt = Math.sqrt(9.0);
        System.out.println(sqrt);//3.0
        //7.random 求随机数
        // random 返回的是 0 <= x < 1 之间的一个随机小数
        for(int i = 0; i < 100; i++) {
        System.out.println((int)(2 + Math.random() * (7 - 2 + 1)));
        }
        //max , min 返回最大值和最小值
        int min = Math.min(1, 9);
        int max = Math.max(45, 90);
        System.out.println("min=" + min);
        System.out.println("max=" + max);
    }
}

Arrays类

Arrays里面包含了一系列静态方法,用于管理或操作数组(比如排序和搜索)

  1. toString 返回数组的字符串形式

Arrays.toString(arr)

  1. sort排序(自然排序和定制排序)

Integer arr[] = {1, -1, 7, 0, 89};

ArraysSortCustom.java

ArraysMethod02.java

  1. binarySearch 通过二分搜索法进行查找,要求必须排好序

int index= Arrays.binarySearch(arr, 3);

ArraysMethod02.java

  1. copyOf 数组元素的复制

Integer[] newArr = Arrays.copyOf(arr,arr.length);

  1. fill 数组元素的填充

Integer[] num = new Integer[]{9,3,2};

Arrays.fill(num, 99);

  1. equals 比较两个数组元素内容是否完全一致

boolean equals = Arrays.equals(arr, arr2);

  1. asList 将一组值,转换成list

List< Intege r> asList = Arrays,asList(2,3,4,5,6,1);

System.out.println("asList="+ asList);

/**
*Arrays类常见方法
*/
public class ArraysMethod02 {
	public static void main(String[] args) {
        Integer[] arr = {1, 2, 90, 123, 567};
        // binarySearch 通过二分搜索法进行查找,要求必须排好
     int index = Arrays.binarySearch(arr, 567);
        System.out.println("index=" + index);
    
        Integer[] newArr = Arrays.copyOf(arr, arr.length);
        System.out.println("==拷贝执行完毕后==");
        System.out.println(Arrays.toString(newArr));

        Integer[] num = new Integer[]{9,3,2};

        Arrays.fill(num, 99);
        System.out.println("==num 数组填充后==");
        System.out.println(Arrays.toString(num));

        Integer[] arr2 = {1, 2, 90, 123};

        boolean equals = Arrays.equals(arr, arr2);
        System.out.println("equals=" + equals);

        List asList = Arrays.asList(2,3,4,5,6,1);
        System.out.println("asList=" + asList);
        System.out.println("asList 的运行类型" + asList.getClass());
     }
}

System类

  • System 类常见方法

  1. exit 退出当前程序

  1. arraycopy:复制数组元素,比较适合底层调用,一般使用

Arrays.copyOf完成复制数组。

int[] src={1,2,3};

int[] dest = new int[3];

System.arraycopy(src, 0, dest, 0, 3);

  1. currentTimeMillens:返回当前时间距离1970-1-1的毫秒数

  1. gc:运行垃圾回收机制 System.gc();

/**
*System 类案例
*/
public class System_ {
    public static void main(String[] args) {

        int[] src={1,2,3};
        int[] dest = new int[3];

        System.out.println("dest=" + Arrays.toString(dest));

        System.out.println(System.currentTimeMillis());
    }
}

BigInteger 和 BigDecimal 类

  • 应用场景

  1. Biglnteger适合保存比较大的整型

  1. BigDecimal适合保存精度更高的浮点型(小数)

  • BigInteger 和 BigDecimal 类常见方法

  1. add加

  1. subtract减

  1. multiply乘

  1. divide除

/**
*常见方法
*/
public class BigInteger_ {
    public static void main(String[] args) {

        BigInteger bigInteger = new BigInteger("23788888899999999999999999999");
        BigInteger bigInteger2 = new
        BigInteger("10099999999999999999999999999999999999999999999999999999999999999999999999999999999");
        System.out.println(bigInteger);

        BigInteger add = bigInteger.add(bigInteger2);
        System.out.println(add);
        BigInteger subtract = bigInteger.subtract(bigInteger2);
        System.out.println(subtract);
        BigInteger multiply = bigInteger.multiply(bigInteger2);
        System.out.println(multiply);
        BigInteger divide = bigInteger.divide(bigInteger2);
        System.out.println(divide);
    }
}
public static void main(String[] args) {

    BigDecimal bigDecimal = new BigDecimal("1999.11");
    BigDecimal bigDecimal2 = new BigDecimal("3");
    System.out.println(bigDecimal);

    System.out.println(bigDecimal.add(bigDecimal2));
    System.out.println(bigDecimal.subtract(bigDecimal2));
    System.out.println(bigDecimal.multiply(bigDecimal2));
 
    System.out.println(bigDecimal.divide(bigDecimal2, BigDecimal.ROUND_CEILING));
    }
}

日期类

  • 第一代日期类

  1. Date:精确到毫秒,代表特定的瞬间

  1. SimpleDateFormat 格式化和解析日期的具体类。它允许进行格式化(日期->文本)解析(文本 -> 日期)和规范化

/**
*第一代日期类
*/
public class Date01 {
    public static void main(String[] args) throws ParseException {
       
        Date d1 = new Date();
        System.out.println("当前日期=" + d1);
        Date d2 = new Date(9234567); 
        System.out.println("d2=" + d2); 
    
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy 年 MM 月 dd 日 hh:mm:ss E");
        String format = sdf.format(d1); 
        System.out.println("当前日期=" + format);

        String s = "1996 年 01 月 01 日 10:20:30 星期一";
        Date parse = sdf.parse(s);
        System.out.println("parse=" + sdf.format(parse));
    }
}
  • 第二代日期类

  1. 第二代日期类,主要就是 Calendar类(日历)。

public abstract class Calendar extends Object implements Serializable,

Cloneable, Comparable< Calendar>

  1. Calendar 类是一个抽象类,它为特定瞬间与一组诸如YEAR、MONTH、DAY OF MONTH、HOUR等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。

/**
*第二代日期类
*/
public class Calendar_ {
    public static void main(String[] args) {
   
        Calendar c = Calendar.getInstance(); 
        System.out.println("c=" + c);
    
        System.out.println("年:" + c.get(Calendar.YEAR));

        System.out.println("月:" + (c.get(Calendar.MONTH) + 1));
        System.out.println("日:" + c.get(Calendar.DAY_OF_MONTH));
        System.out.println("小时:" + c.get(Calendar.HOUR));
        System.out.println("分钟:" + c.get(Calendar.MINUTE));
        System.out.println("秒:" + c.get(Calendar.SECOND));

        System.out.println(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" +
        c.get(Calendar.DAY_OF_MONTH) +
        " " + c.get(Calendar.HOUR_OF_DAY) + ":" + c.get(Calendar.MINUTE) + ":" + c.get(Calendar.SECOND) );
    }
}
  • 第三代日期类

  • 前面两代日期类不足的分析

JDK 1.0中包含了一个java.util.Date类,但是它的大多数方法已经在JDK 1.1引入

Calendar类之后被弃用了。而Calendar也存在问题是:

  1. 可变性:像日期和时间这样的类应该是不可变的。

  1. 偏移性:Date中的年份是从1900开始的,而月份都从0开始。

  1. 格式化:格式化只对Date有用,Calendar则不行。

  1. 此外,它们也不是线程安全的;不能处理闰秒等(每隔2天,多出1s).

  • LocalDate(日期/年月日)、LocalTime(时间/时分秒)、LocalDateTime(日期时间/年月日时分秒)JDK8加入

  1. LocalDate只包含日期,可以获取日期字段

  1. LocalTime只包含时间,可以获取时间字段

  1. LocalDateTime包含日期+时间,可以获取日期和时间字段

/**
*第三代日期类
*/
public class LocalDate_ {
    public static void main(String[] args) {
  
        LocalDateTime ldt = LocalDateTime.now(); 
        System.out.println(ldt);
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String format = dateTimeFormatter.format(ldt);
        System.out.println("格式化的日期=" + format);
        System.out.println("年=" + ldt.getYear());
        System.out.println("月=" + ldt.getMonth());
        System.out.println("月=" + ldt.getMonthValue());
        System.out.println("日=" + ldt.getDayOfMonth());
        System.out.println("时=" + ldt.getHour());
        System.out.println("分=" + ldt.getMinute());
        System.out.println("秒=" + ldt.getSecond());
        LocalDate now = LocalDate.now(); 
        LocalTime now2 = LocalTime.now();

        LocalDateTime localDateTime = ldt.plusDays(890);
        System.out.println("890 天后=" + dateTimeFormatter.format(localDateTime));
      
        LocalDateTime localDateTime2 = ldt.minusMinutes(3456);
        System.out.println("3456 分钟前 日期=" + dateTimeFormatter.format(localDateTime2));
    }
}
  • 第三代日期类更多方法

  1. LocalDateTime类

  1. MonthDay类:检查重复事件

  1. 是否是闰年

  1. 增加日期的某个部分

  1. 使用plus方法测试增加时间的某个部分

  1. 使用minus方法测试查看一年前和一年后的日期

  1. 其他的方法,老师就不说,使用的时候,自己查看API使用即可

DateTimeFormatter 格式日期类

类似于SimpleDateFormat

DateTimeFormat dtf DateTimeFormatter.ofPattern(格式)

String str dtf.format(日期对象)

Instant 时间戳

类似于Date

提供了一系列和Date类转换的方式

Instant-->Date:

Date date = Date.fr0m(instant);

Date-->Instant:

Instant instant = date.toInstant();

/**
*Instant 
*/
public class Instant_ {
    public static void main(String[] args) {
        Instant now = Instant.now();
        System.out.println(now);
        Date date = Date.from(now);
        Instant instant = date.toInstant();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值