Java--常用类

一、StringBuffer

1.1 概述

  • 线程安全的可变字符序列。

  • 一个类似于 String 的字符串缓冲区,但能修改。

  • 但通过某些方法调用可以改变该序列的长度和内容。

1.2 创建对象

​
public class Demo04 {
    public static void main(String[] args) {
        /**
            构造方法摘要 
                StringBuffer() 
                          构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。 
                StringBuffer(int capacity) 
                          构造一个不带字符,但具有指定初始容量的字符串缓冲区。 
                StringBuffer(String str) 
                          构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。 
         */
        
        //  构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。 
        StringBuffer buffer01 = new StringBuffer();
        System.out.println(buffer01.length());
        System.out.println(buffer01.capacity());
        
        // 构造一个不带字符,但具有指定初始容量的字符串缓冲区。 
        StringBuffer buffer02 = new StringBuffer(1024);
        System.out.println(buffer02.length());
        System.out.println(buffer02.capacity());
        
        // 构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。 
        StringBuffer buffer03 = new StringBuffer("abcdefg");
        System.out.println(buffer03.length());
        System.out.println(buffer03.capacity());
    }
}

1.3 常用方法

增加数据
​
public class Demo05 {
    public static void main(String[] args) {
        /**
         * 方法摘要 
         * 增
             StringBuffer append(Object obj) 
                      追加 Object 参数的字符串表示形式。 
             StringBuffer insert(int offset, Object obj) 
                      将 Object 参数的字符串表示形式插入此字符序列中。 
         */
        
        // 空的字符串缓冲区,内容为0,容量16
        StringBuffer buffer = new StringBuffer();
        
        buffer.append("Hello");
        System.out.println(buffer.length());
        System.out.println(buffer.capacity());
        
        buffer.append(true);
        System.out.println(buffer.length());
        System.out.println(buffer.capacity());
        
        buffer.append(3.14);
        System.out.println(buffer.length());
        System.out.println(buffer.capacity());
        
        // 在指定位置插入元素
        buffer.insert(1, 222);
        System.out.println(buffer);
        System.out.println(buffer.length());
        System.out.println(buffer.capacity());
        
        /**
         *  扩容:
         *      ensureCapacityInternal(count + len);    确保容量
         *          newCapacity(minimumCapacity)        计算容量
         *          默认扩容:   int newCapacity = (value.length << 1) + 2;
         *          默认扩容不足:
         *              如果没有超过MAX_ARRSY_SIZE,扩容到需要的容量
         *              如果超过MAX_ARRSY_SIZE,没有超过Integer.MAX,扩容需要的容量
         *              如果超过Integer.MAX,报错OutOfMemoryError
         */
        buffer.append("01234567890123456789");
        System.out.println(buffer.length());
        System.out.println(buffer.capacity());
        
    }
}
删改查数据
​
public class Demo06 {
    public static void main(String[] args) {
        /**
         *       
         * 删
             StringBuffer delete(int start, int end) 
                      移除此序列的子字符串中的字符。 
             StringBuffer deleteCharAt(int index) 
                      移除此序列指定位置的 char。 
         
         * 改
             void ensureCapacity(int minimumCapacity) 
                      确保容量至少等于指定的最小值。 
             StringBuffer replace(int start, int end, String str) 
                      使用给定 String 中的字符替换此序列的子字符串中的字符。 
             StringBuffer reverse() 
                      将此字符序列用其反转形式取代。 
             void setCharAt(int index, char ch) 
                      将给定索引处的字符设置为 ch。 
             void setLength(int newLength) 
                      设置字符序列的长度。 
             void trimToSize() 
                      尝试减少用于字符序列的存储空间。 
         
         * 查
             int length() 
                      返回长度(字符数)。 
             int capacity() 
                      返回当前容量。 
             char charAt(int index) 
                      返回此序列中指定索引处的 char 值。 
             int indexOf(String str) 
                      返回第一次出现的指定子字符串在该字符串中的索引。 
             int indexOf(String str, int fromIndex) 
                      从指定的索引处开始,返回第一次出现的指定子字符串在该字符串中的索引。 
             int lastIndexOf(String str) 
                      返回最右边出现的指定子字符串在此字符串中的索引。 
             int lastIndexOf(String str, int fromIndex) 
                      返回最后一次出现的指定子字符串在此字符串中的索引。 
             String substring(int start) 
                      返回一个新的 String,它包含此字符序列当前所包含的字符子序列。 
             String substring(int start, int end) 
                      返回一个新的 String,它包含此序列当前所包含的字符子序列。 
         */
        StringBuffer buffer = new StringBuffer();
        
        buffer.append("01234567890123456789");
        System.out.println(buffer);
        
        // 删除区间内容
        buffer.delete(0, 5);
        System.out.println(buffer);
        
        // 如果预知有大批量的数据会加入,手动调整容量
        buffer.ensureCapacity(1024);
        System.out.println(buffer.capacity());
        
        // 替换区间内容
        buffer.replace(0, 3, "伍六");
        System.out.println(buffer);
        
        buffer.reverse();
        System.out.println(buffer);
        buffer.reverse();
        System.out.println(buffer);
        
        // 设置字符的数量
        buffer.setLength(10);
        System.out.println(buffer);
        
        // 调整容量:把容量调整为长度
        buffer.trimToSize();
        System.out.println(buffer.length());
        System.out.println(buffer.capacity());
        
    }
}

1.4 StringBuilder

  • 一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。

  • 作用、构造方法、常用方法和StringBuffer相同

  • 线程不安全,效率较高,单线程推荐使用

二、包装类

2.1 概述

  • 每一种基本类型都有其对应的引用类型

  • 这些引用类型中有属性和方法,更方便我们操作数据

  • 这些引用类型称为包装类

2.2 包装类大全

基本类型包装类
byte
short
intInteger
long
float
double
boolean
charCharacter

2.3 常用方法

  • 整数--》字符串

  • 字符串--整数

​
public class Demo01 {
    public static void main(String[] args) {
        // 基本类型int
        int i = 10;
        System.out.println(i);
        
        // 引用类型Integer,存储基本类型的数据 && 提供属性和方法
        Integer ii = new Integer(20);
        System.out.println(ii);
        
        int iii = Integer.parseInt("100");
        System.out.println(iii);
        
        // 前端 == 后端
        System.out.println(Integer.MAX_VALUE);
        
        /**
            static int parseInt(String s) 
                      将字符串参数作为有符号的十进制整数进行解析。 
            static String toBinaryString(int i) 
                      以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。 
            static String toOctalString(int i) 
                      以八进制(基数 8)无符号整数形式返回一个整数参数的字符串表示形式。 
            static String toString(int i) 
                      返回一个表示指定整数的 String 对象。 
            static String toHexString(int i) 
                      以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式。 
         */
        // 十进制数字转换成其他进制字符串
        System.out.println(Integer.toBinaryString(66));
        System.out.println(Integer.toString(66));
        System.out.println(Integer.toOctalString(66));
        System.out.println(Integer.toHexString(66));
        
    }
}

三、System

3.1 概述

  • System 类包含一些有用的类字段和方法。它不能被实例化。

  • System 类提供的设施中,有标准输入、标准输出和错误输出流;

  • 对外部定义的属性和环境变量的访问;

  • 加载文件和库的方法;

  • 还有快速复制数组的一部分的实用方法。

3.2 常用方法

当前时间毫秒值
​
public class Demo01 {
    public static void main(String[] args) {
        /**
         *  方法摘要 
                static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 
                          从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。 
                static long currentTimeMillis() 
                          返回以毫秒为单位的当前时间。 
                static void exit(int status) 
                          终止当前正在运行的 Java 虚拟机。 
                static void gc() 
                          运行垃圾回收器。 
                          
                static Map<String,String> getenv() 
                          返回一个不能修改的当前系统环境的字符串映射视图。 
                static String getenv(String name) 
                          获取指定的环境变量值。 
                static Properties getProperties() 
                          确定当前的系统属性。 
                static String getProperty(String key) 
                          获取指定键指示的系统属性。 
                static String getProperty(String key, String def) 
                          获取用指定键描述的系统属性。 
         */
        long startTime = System.currentTimeMillis();
        for (long i = 0; i < 10000000000L; i++) {
            //System.out.println(i);
        }
        long endTime = System.currentTimeMillis();
        System.out.println(endTime - startTime);
    }
}
退出JVM
​
public class Demo02 {
    public static void main(String[] args) {
        System.out.println("main方法开始...");
        show();
        System.out.println("main方法结束...");
    }
    
    public static void show(){
        System.out.println("show方法开始...");
        for (int i = 0; i < 100; i++) {
            System.out.println(i);
            if (i == 6) {
                // break;   // 终止循环
                // return;  // 结束方法
                System.exit(0); // 结束虚拟机,0是状态码
            }
        }
        System.out.println("show方法结束...");
    }
}
gc
​
public class Demo03 {
    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            new Student("宋江" + i);
        }
        // 手动触发垃圾回收
        System.gc();
        
        System.out.println("OVER");
    }
}
环境和属性
​
import java.util.Map;
import java.util.Properties;
​
public class Demo04 {
    public static void main(String[] args) {
        // 获取所有的系统设置信息
        Map<String, String> map = System.getenv();
        System.out.println(map);
        
        String env = System.getenv("JAVA_HOME");
        System.out.println(env);
        
        Properties properties = System.getProperties();
        System.out.println(properties);
    }
}

四、Math

​
public class Demo01 {
    public static void main(String[] args) {
        /**
         * 方法摘要 
            static double abs(double a) 
                      返回 double 值的绝对值。 
            static long round(double a) 
                      返回最接近参数的 long。 
            static double ceil(double a) 
                返回最小的(最接近负无穷大)double 值,该值大于等于参数,并等于某个整数。
            static double floor(double a) 
                      返回最大的(最接近正无穷大)double 值,该值小于等于参数,并等于某个整数。 
                      
            static double pow(double a, double b) 
                      返回第一个参数的第二个参数次幂的值。 
            static double sqrt(double a) 
                      返回正确舍入的 double 值的正平方根。 
            static double cbrt(double a) 
                      返回 double 值的立方根。 
                      
            static double max(double a, double b) 
                      返回两个 double 值中较大的一个。 
            static double min(double a, double b) 
                      返回两个 double 值中较小的一个。 
                      
            static double random() 
                      返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。 
         */
        
        System.out.println(Math.abs(3.3));
        System.out.println(Math.abs(-3.3));
        
        System.out.println(Math.round(3.3));
        System.out.println(Math.round(3.6));
        
        System.out.println(Math.ceil(5.5));
        System.out.println(Math.floor(5.5));
        
        // a的b次方
        for (int i = 2; i <= 10; i++) {
            System.out.println(Math.pow(2, i));
        }
        
        // 平方根
        for (int i = 2; i <= 20; i++) {
            System.out.println(Math.sqrt(i));
        }
        
        // 立方根
        for (int i = 2; i <= 20; i++) {
            System.out.println(Math.cbrt(i));
        }
    }
}
​
public class Demo02 {
    public static void main(String[] args) {
        // 生成0~1之间的随机数
        for (int i = 0; i < 1000; i++) {
            System.out.println(Math.random());
        }
    }
}

五、Random

package com.shine.math;
​
import java.util.Random;
​
public class Demo03 {
    public static void main(String[] args) {
        // 创建随机对象
        Random r = new Random();
        
        // 生成布尔值
        for (int i = 0; i < 10; i++) {
            System.out.println(r.nextBoolean());
        }
        
        // 生成指定范围的随机数字
        for (int i = 0; i < 10; i++) {
            System.out.println(r.nextInt(100));
        }
        
        // 生成55~99之间的随机数字
        // 生成一注双色球【考试题】
    }
}

六、BigDecimal

import java.math.BigDecimal;
​
public class Demo01 {
    public static void main(String[] args) {
        // 数学运算小数不准确
        System.out.println(1.0 - 0.9);
        System.out.println(10.0 / 3);
        
        BigDecimal bd01 = new BigDecimal("1.0");
        BigDecimal bd02 = new BigDecimal("0.9");
        System.out.println(bd01.add(bd02));
        System.out.println(bd01.subtract(bd02));
        System.out.println(bd01.multiply(bd02));
        System.out.println(bd01.divide(bd02, 3, BigDecimal.ROUND_HALF_UP));
    }
}

七、日期相关

7.1 Date

  • Date 表示特定的瞬间,精确到毫秒。

import java.util.Date;
​
public class Demo01 {
    public static void main(String[] args) {
        /**
         * 构造方法摘要 
                Date() 
                          分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)。 
                Date(int year, int month, int date) 
                          已过时。 从 JDK 1.1 开始,由 Calendar.set(year + 1900, month, date) 或 GregorianCalendar(year + 1900, month, date) 取代。 
                Date(int year, int month, int date, int hrs, int min) 
                          已过时。 从 JDK 1.1 开始,由 Calendar.set(year + 1900, month, date, hrs, min) 或 GregorianCalendar(year + 1900, month, date, hrs, min) 取代。 
         */
        
        Date date01 = new Date();
        System.out.println(date01);
        
        Date date02 = new Date(96, 10, 11);
        System.out.println(date02);
        
        System.out.println(date01.getYear());
        System.out.println(date01.getMonth());
        System.out.println(date01.getDate());
    }
}

7.2 Calendar

package com.shine.time;
​
import java.util.Calendar;
​
public class Demo02 {
    public static void main(String[] args) {
        // 创建日历对象
        Calendar rightNow = Calendar.getInstance();
        System.out.println(rightNow);
        System.out.println(rightNow.get(Calendar.YEAR));
        System.out.println(rightNow.get(Calendar.MONTH));
        System.out.println(rightNow.get(Calendar.DAY_OF_MONTH));
        System.out.println(rightNow.get(Calendar.HOUR));
        System.out.println(rightNow.get(Calendar.MINUTE));
        System.out.println(rightNow.get(Calendar.SECOND));
    }
}

7.3 日期格式化SimpleDateFormat

  • SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。

  • 它允许进行

    • 格式化(日期 -> 文本)

    • 解析(文本 -> 日期)和规范化。

package com.shine.time;
​
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
​
public class Demo04 {
    public static void main(String[] args) throws ParseException {
        // 2023年3月31日 16:18:22
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        
        // 日期-->文字
        String time = sdf.format(new Date());
        System.out.println(time);
        
        // 文字-->日期
        String strTime = "2023年03月31日 16:23:10";
        Date date = sdf.parse(strTime);
        System.out.println(date);
        
    }
}
  • 11
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值