• Java 第二阶段提升编程能力【常用类】


    代码链接:https://download.csdn.net/download/qq_52354698/86395007?spm=1001.2014.3001.5503

    1. 包装类

    1. 包装类的分类

    1. 针对八种基本数据类型相应的引用类型–包装类
    2. 有了类的特点,就可以调用类中的方法。

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    2. 包装类和基本数据的转换

    1. jdk5之前的手动装箱和拆箱方式,装箱:基本类型->包装类型,反之,拆箱
    2. jdk5之后(含jdk5)的自动装箱和拆箱方式
    3. 自动装箱底层调用的是valueOf()方法
            //手动拆箱
            int n1 = 100;
            Integer integer = new Integer(n1);
            Integer integer1 = Integer.valueOf(n1);
            //手动装箱
            int i = integer.intValue();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
            //自动装箱
            int n2 = 200;
            Integer integer2 = n2;//底层自动调用的valueOf()
            //自动拆箱
            int n3 = integer2;//底层自动调用intValue()
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3. 包装类型和String类型的相互转换

            Integer integer = 100;
            String str1 = integer + "";
            String str2 = integer.toString();
            String str3 = String.valueOf(integer);
    
            String str4 = "1234";
            Integer integer1 = Integer.parseInt(str4);
            Integer integer2 = new Integer(str4);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    4. Integer类和Character类的常用方法

    在这里插入图片描述

    2. String类

    1. String类的理解和创建对象

    1. String对象用于保存字符串,也就是一组字符序列。
    2. 字符串常量对象是用双引号括起来的字符序列。
    3. 字符串的字符使用Unicode字符编码,一个字符(不区分字母还是汉字)占两个字节。
    4. String类有很多构造器,重载。
    5. String类实现了接口Serializable【String可以串行化:可以在网络传输】。
    6. String类实现了接口Comparable【String类可以比较大小】。
    7. String类是final类,不能被其他类继承。
    8. String有属性private final char value[];用于存放字符串内容。
    9. 一定要注意:value是一个final类型,不可以修改(即value不能指向新的地址,但是单个字符内容是可以变化 )。

    在这里插入图片描述

    2. 两种创建String对象的区别

    方式一:直接赋值String s = “qdu”;
    方式二:调用构造器String s2 = new String(“qdu”);

    1. 方式一:先从常量池查看是否有"qdu"数据空间,如果有,直接指向;如果没有则重新创建,然后指向。s 最终指向的是常量池的空间地址。
    2. 方式二:先在堆中创建空间,里面维护了value属性,指向常量池的qdu空间。如果常量池中没有"qdu",重新创建,如果有,直接通过value指向,最终指向堆中的空间地址。

    在这里插入图片描述

    3. 字符串的特性

    1. String是一个final类,代表不可变的字符序列
    2. 字符串是不可变的。一个字符串对象一旦被分配,其内容是不可变的。

    4. String类的常见方法

    String类是保存字符串常量的。每次更新都需要重新开辟空间,效率较低,因此java设计者还提供了StringBulider和StringBuffer来增强String的功能,并提供效率。

    在这里插入图片描述
    在这里插入图片描述

    5. StringBuffer类

    1. 基本介绍

    java.lang.StringBuffer代表可变的字符序列,可以对字符串内容进行增删
    很多方法与String相同,但是StringBuffer是可变长度的
    StringBuffer是一个容器

    在这里插入图片描述

    1. StringBuffer的直接父类是AbstractStringBulider
    2. StringBuffer实现了Serializable,即StringBuffer的对象可以串化
    3. 在父类中AbstractStringBuilder有属性char[] value,不是final,该value数组存放字符串内容,引出存放在堆中的
    4. StringBuffer是一个fina类,不能被继承

    2. String VS StringBuffer

    1. String 保存的是字符串常量,里面的值不能更改,每次 String 类的更新实际上就是更改地址,效率较低。
    2. StringBuffer 保存的是字符串变量,里面的值可以更改,每次StringBuffer的更新实际上可以更新内容,不能每次更新地址,效率较高。

    3. StringBuffer构造器

    StringBuffer()
    构造一个其中不带字符的字符串缓冲区,其初始容量为16个字符。
    StringBuffer(int capacity)
    构造一个不带字符,但具有指定初始容量的字符串缓冲区。
    StringBuffer(String str)
    构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。

            StringBuffer stringBuffer = new StringBuffer();
    
            StringBuffer stringBuffer1 = new StringBuffer(100);
    
            StringBuffer stringBuffer2 = new StringBuffer("test");
    
    • 1
    • 2
    • 3
    • 4
    • 5

    4. String和StringBuffer相互转换

    String转换为StringBuffer

            String str = "hello world";
    
            StringBuffer stringBuffer = new StringBuffer(str);
    
            StringBuffer stringBuffer1 = new StringBuffer();
            stringBuffer1 = stringBuffer1.append(str);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    StringBuffer转换为String

            StringBuffer stringBuffer2 = new StringBuffer("test");
            String s = stringBuffer2.toString();
    
            String s1 = new String(stringBuffer2);
    
    • 1
    • 2
    • 3
    • 4

    5. StringBuffer类常见方法

    在这里插入图片描述

    6. StringBuilder类

    1. 基本介绍

    1. 一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步(StringBulider 不是线程安全)。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候。如果可能,建议优先采用该类,因为在大多数实现中,它比StringBuffer要快。
    2. 在 StringBuilder 上的主要操作时 append 和insert 方法,可重载这些方法,以接受任意类型的数据。

    在这里插入图片描述

    2. String、StringBuffer、StringBuilder的比较

    1. StringBuilder 和 StringBuffer 非常类似,均代表可变的字符序列,而且方法也一样。
    2. String:不可变字符序列,效率低,但复用率高。
    3. StringBuffer:可变字符序列,效率较高(增删),线程安全。
    4. StringBuilder:可变字符序列,效率最高,线程不安全。

    7. Math类

    1. 基本介绍

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

    2. 常用基本方法

    在这里插入图片描述

    random 求随机数
    random 返回的是 0 <= x < 1 之间的一个随机小数
    获取一个 a - b 之间的一个随机整数
    int num = (int)(a + Math.random() * (b - a + 1))

    8. Arrays类

    1. 基本介绍

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

    2. 常见基本方法

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

            Integer[] integers = {1, 20, 40};
            System.out.println(Arrays.toString(integers));
    
    • 1
    • 2

    在这里插入图片描述

    2. sort 排序(自然排序和定址排序)

            Integer[] integers = {1, -2, 7, 0, 90};
            System.out.println(Arrays.toString(integers));
            Arrays.sort(integers);
            System.out.println(Arrays.toString(integers));
            Arrays.sort(integers, new Comparator() {
                @Override
                public int compare(Object o1, Object o2) {
                    Integer i1 = (Integer) o1;
                    Integer i2 = (Integer) o2;
                    return i2 - i1;
                }
            });
            System.out.println(Arrays.toString(integers));
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述

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

            Integer[] integers = {1, -4, 17, 8};
            Arrays.sort(integers);
            int index = Arrays.binarySearch(integers, 8);
            System.out.println(Arrays.toString(integers));
            System.out.println(index);
    
    • 1
    • 2
    • 3
    • 4
    • 5

    输出的数组的下标
    在这里插入图片描述
    4. copyOf 数组元素的复制

            Integer[] integers = {1, 2, 3, 7};
            Integer[] integers1 = Arrays.copyOf(integers, integers.length);
            System.out.println(Arrays.toString(integers));
            System.out.println(Arrays.toString(integers1));
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    5. fill 数组元素的填充

            Integer[] integers = {1, 2, 3, 4};
            System.out.println(Arrays.toString(integers));
            Arrays.fill(integers, 99);
            System.out.println(Arrays.toString(integers));
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    9. System类

    1. exit 退出当前程序

            System.out.println("ok1");
            System.exit(0);
            System.out.println("ok2");
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    2. arraycopy 复制数组元素,比较适合底层调用,一般使用 Arrays.copyOf 完成复制数组

    在这里插入图片描述

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

    4. gc 运行垃圾回收机制 System.gc()

    10. BigInteger和BigDecimal类

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

    对应的加减乘除需要使用对应的方法,不能直接使用运算符

            BigInteger bigInteger = new BigInteger("19999999999999999999");
            System.out.println(bigInteger);
            BigInteger bigInteger1 = new BigInteger("100");
            BigInteger add = bigInteger.add(bigInteger1);
            System.out.println(add);
            BigInteger subtract = bigInteger.subtract(bigInteger1);
            System.out.println(subtract);
            BigInteger multiply = bigInteger.multiply(bigInteger1);
            System.out.println(multiply);
            BigInteger divide = bigInteger.divide(bigInteger1);
            System.out.println(divide);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述

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

    除法的时候可能会存在精度问题,可能会抛一个异常,因此在使用除法的时候,我们经常指定精度

            BigDecimal bigDecimal = new BigDecimal("1.99999999999999999999");
            System.out.println(bigDecimal);
            BigDecimal bigDecimal1 = new BigDecimal("1.1");
            System.out.println(bigDecimal.add(bigDecimal1));
            System.out.println(bigDecimal.subtract(bigDecimal1));
            System.out.println(bigDecimal.multiply(bigDecimal1));
            System.out.println(bigDecimal.divide(bigDecimal1, BigDecimal.ROUND_CEILING));
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    11. 日期类

    1. 第一代日期类

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

    在这里插入图片描述
    2. SimpleDateFormat:格式和解析日期的类
    SimpleDateFormat 格式化和解析日期的具体类。它允许进行格式化(日期->文本)、解析(文本->日期)和规范化。

    在这里插入图片描述

            Date date = new Date();
            System.out.println(date);
    
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyy年MM月dd日 hh:mm:ss E");
            String format = simpleDateFormat.format(date);
            System.out.println(format);
    
            String str = "1990年01月01日 10:20:30 星期一";
            Date parse = simpleDateFormat.parse(str);
            System.out.println(parse);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述

    2. 第二代日期类

    1. Calendar 是一个抽象类,并且构造器是private
    2. 可以通过 getInstance() 来获取实例
    3. 提供大量的方法和字段提供给程序员
    4. Calendar 没有专门的格式化方法,所以需要程序员自己来组合显示

    在这里插入图片描述

            Calendar calendar = Calendar.getInstance();
            System.out.println(calendar);
    
            System.out.println(calendar.get(Calendar.YEAR));
            System.out.println(calendar.get(Calendar.MONTH));
            System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
            System.out.println(calendar.get(Calendar.HOUR));
            System.out.println(calendar.get(Calendar.SECOND));
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    3. 第三代日期类

    JDK8加入

    1. LocalDate(日期/年月日)
    2. LocalTime(时间/时分秒)
    3. LocalDateTime(日期时间/年月日时分秒)

    在这里插入图片描述

            LocalDateTime localDateTime = LocalDateTime.now();
            System.out.println(localDateTime);
            System.out.println(localDateTime.getYear());
            System.out.println(localDateTime.getMonth());
            System.out.println(localDateTime.getMonthValue());
            System.out.println(localDateTime.getDayOfMonth());
            System.out.println(localDateTime.getHour());
            System.out.println(localDateTime.getMinute());
            System.out.println(localDateTime.getSecond());
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

    1. DateTimeFormatter 格式日期类
      类似 SimpleDateFormat

    2. Instant 时间戳

    在这里插入图片描述

            Instant instant = Instant.now();
            System.out.println(instant);
            Date date = Date.from(instant);
            System.out.println(date);
            Instant instant1 = date.toInstant();
            System.out.println(instant1);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    plus 和 minus 方法可以对当前时间进行加或者减

  • 相关阅读:
    JavaScript基础
    PlantUML使用入门
    十五.镜头知识之景深(Depth of Field)
    Sentinel 哨兵数据 更新下载地址 2023年11月
    揭秘如今市场上最火爆的三大商业模式,点进来看看有没有什么收获
    德语翻译器在线翻译中文-德语翻译器支持各大语言翻译
    05 【函数(上)】
    【pytest】html报告修改和汉化
    Spring Boot单元测试
    Radzen 2.70.6 update 2022-09-05
  • 原文地址:https://blog.csdn.net/qq_52354698/article/details/126256857