Java 基础之常用类

目录

一、类的作用

二、包装类

三、System 类

四、Scanner 类

五、String 类

六、StringBuilder/StringBuffer 类

七、Math 类

八、Random 类

九、Date 类

十、Calendar 类

十一、枚举


一、类的作用

        Java中的类是一种重要的构造,它允许你将数据和方法组合在一起,以便更好地组织、复用和扩展代码,从而构建出功能强大且易于维护的程序。例如:封装数据和行为、封装数据和行为、抽象和继承、多态性、模块化和组织、设计模式的实现、面向对象编程等。

        以下是类的声明语法:

[访问修饰符] class 类名 [extends 父类名] [implements 接口名列表] {

    // 类的成员变量(字段)

    // 类的构造方法

    // 类的方法

}

二、包装类

        Java中的包装类(Wrapper Classes)是一组用于将基本数据类型(如int、double、char等)封装为对象的类。这些包装类提供了一些额外的方法和功能,使得基本数据类型可以像对象一样进行操作。常用的包装类如下:Integer、Double、Float、Character、Boolean、Byte、Short、Long。        

    public static void main(String[] args) {

        Boolean b01 = false; // 自动装箱
        Boolean b02 = new Boolean("0"); // 使用构造方法初始化
        Boolean b03 = Boolean.parseBoolean("0");// 使用 parseXXX 方法
        Boolean b04 = Boolean.valueOf("0"); // 使用 valueOf 方法
        //大多数类型都可以使用以上方法初始化
        Byte by01 = 0;
        Short s01 = 0;
        Integer i01 = 0;
        Integer i02 = Integer.parseInt("0");
        Long l01 = 0l;
        Float f01 = 0f;
        Float f02 = Float.valueOf(0);
        Double d01 = Double.valueOf(0);
        Character c01 = 'x';

        //大多数类型都可以使用以下方法转换
        boolean b10 = b01; // 自动拆箱
        boolean b11 = b01.booleanValue(); // 使用 xxxValue 方法
        String b12 = b01.toString(); // 使用 toString 方法
    }

三、System 类

         提供了一些与系统操作和属性相关的静态方法和属性。如:标准输入、输出和错误流,获取系统属性,退出程序,垃圾回收,获取当前时间,数组拷贝等。

 (1)static PrintStream out: 标准输出流,用于将文本内容输出到控制台。

(2)static InputStream in: 标准输入流,用于从控制台读取用户输入。

(3)static PrintStream err: 标准错误输出流,用于输出错误信息到控制台。

(4)static void exit(int status): 终止当前正在运行的 Java 虚拟机。status 参数表示程序的退出状态。

(5)static long currentTimeMillis(): 返回当前时间的毫秒数,用于计算时间间隔等。

(6)static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length): 将数组 src 中的一部分元素复制到数组 dest 中的指定位置。

(7)static String getProperty(String key): 获取指定键的系统属性值。

(8)static String getProperty(String key, String defaultValue): 获取指定键的系统属性值,如果没有找到则返回默认值。

(9)static void setProperty(String key, String value): 设置指定键的系统属性值。

(10)static String getenv(String name): 获取指定名称的环境变量值。

(11)static Map<String, String> getenv(): 获取所有环境变量的名称和值组成的映射。

    public static void main(String[] args) {

        long time = System.currentTimeMillis();
        System.out.println("时间的毫秒数:"+time);

        System.out.println("文件编码格式:"+System.getProperty("file.encoding"));
    }

四、Scanner 类

        Scanner 类提供了多个构造方法,可以从不同的输入源(例如文件、字符串、流等)创建一个 Scanner 对象。用于简化从不同输入源(如键盘、文件等)读取数据的过程。

(1)Pattern delimiter(): 获取当前使用的分隔符模式。

(2)Scanner useDelimiter(Pattern pattern): 设置用于分隔标记的模式。

(3)Scanner useDelimiter(String pattern): 设置用于分隔标记的模式(使用正则表达式字符串)。

(4)Pattern skipPattern(): 获取当前用于跳过输入的模式。

(5)Locale locale(): 获取当前的 Locale 对象。

(6)Scanner useLocale(Locale locale): 设置用于解析数字和日期的 Locale。

(7)int radix(): 获取当前的进制基数(用于解析整数)。

(8)Scanner useRadix(int radix): 设置用于解析整数的进制基数。

(9)MatchResult match(): 获取最近匹配操作的结果。

(10)boolean hasNext(): 检查是否有下一个标记(默认以空白字符作为分隔符)。

(11)String next(): 获取并返回下一个标记。

(12)其他 hasNextX() 和 nextX() 方法: 提供了获取特定类型数据的方法,如 hasNextInt() 和 nextInt()。

(13)String nextLine(): 获取并返回下一行的内容。

(14)void close(): 关闭 Scanner 对象。

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        String text = scanner.next();
        System.out.println("您输入的内容是:"+text);

    }

五、String 类

         用于处理字符串数据。它位于 java.lang 包下,因此在任何 Java 程序中都可以直接使用,不需要显式导入。主要作用如:存储文本数据、字符串操作、不可变性、字符串连接、格式化字符串、字符串分割、提取子字符串、字符串比较、转换大小写、正则表达式匹配。

 (1)String():构造一个空字符串对象。

(2)String(char[] value):使用字符数组构造一个字符串对象。

(3)String(String original):构造一个与给定字符串相等的字符串对象。

(4)length():返回字符串的长度。

(5)charAt(int index):返回字符串指定索引位置的字符。

(6)indexOf():查找指定字符或字符串在字符串中第一次出现的索引。

(7)lastIndexOf():查找指定字符或字符串在字符串中最后一次出现的索引。

(8)startsWith():检查字符串是否以指定前缀开始。

(9)endsWith():检查字符串是否以指定后缀结束。

(10)substring():提取子字符串。

(11)replace():用新字符替换字符串中的旧字符。

(12)split():使用正则表达式拆分字符串为子字符串数组。

(13)equals():比较字符串内容是否相等。==”是比较地址是否相同。

(14)equalsIgnoreCase():忽略大小写地比较字符串是否相等。

(15)isEmpty():检查字符串是否为空。

(16)toLowerCase():将字符串转换为小写。

(17)toUpperCase():将字符串转换为大写。

(18)trim():移除字符串两端的空格。

public static void main(String[] args) {

        // 这里会复用字符串,他创建在字符串池中
        String text1 = "测试内容";
        String text2 = "测试内容";

        // 这里不会复用字符串,他创建在堆中
        String text3 = new String("测试内容");
        String text4 = new String("测试内容");

        System.out.println(text1.equals(text2) + " - " + (text1 == text2));
        System.out.println(text3.equals(text4) + " - " + (text3 == text4));


    }

六、StringBuilder/StringBuffer 类

       StringBuffer 与 StringBuilder 类的使用方法大致相同,都是用于处理可变的字符序列,特别是在需要频繁修改字符串内容的情况下。它们允许你在字符串中添加、删除、修改字符,而不需要创建新的字符串对象,从而提高了性能和内存效率。这两个类的作用类似,但在多线程环境下有一些不同之处。区别是StringBuffer是线程安全的,而StringBuilder是单线程的,所以StringBuilder 性能相对高一点。

 (1)StringBuilder(): 构造一个空的字符串构建器。

(2)StringBuilder(int capacity): 构造一个具有指定初始容量的字符串构建器。

(3)StringBuilder(CharSequence seq): 使用指定的字符序列构造一个字符串构建器。

(4)append(boolean b): 将布尔值追加到构建器。

(5)append(char c): 将字符追加到构建器。

(6)append(int i): 将整数追加到构建器。

(7)append(long l): 将长整数追加到构建器。

(8)append(float f): 将浮点数追加到构建器。

(9)ppend(double d): 将双精度浮点数追加到构建器。

(10)append(CharSequence s): 将字符序列追加到构建器。

(11)append(Object obj): 将对象的字符串表示形式追加到构建器。

(12)append(char[] str): 将字符数组的内容追加到构建器。

(13)append(char[] str, int offset, int len): 将字符数组的部分内容追加到构建器。

(14)delete(int start, int end): 删除构建器中指定范围的字符。

(15)deleteCharAt(int index): 删除构建器中指定索引处的字符。

(16)replace(int start, int end, String str): 用指定字符串替换构建器中指定范围的字符。

(17)insert(int offset, boolean b): 在指定位置插入布尔值。

(18)insert(int offset, char c): 在指定位置插入字符。

(19)insert(int offset, int i): 在指定位置插入整数。

(20)insert(int offset, long l): 在指定位置插入长整数。

(21)nsert(int offset, float f): 在指定位置插入浮点数。

(22)insert(int offset, double d): 在指定位置插入双精度浮点数。

(23)insert(int offset, CharSequence s): 在指定位置插入字符序列。

(24)nsert(int offset, Object obj): 在指定位置插入对象的字符串表示形式。

(25)everse(): 反转构建器中的字符序列。

(26)length(): 返回构建器中字符序列的长度。

(27)setLength(int newLength): 设置构建器中字符序列的新长度。

(28)capacity(): 返回构建器的当前容量。

(29)ensureCapacity(int minimumCapacity): 确保构建器的容量至少为指定值。

(30)trimToSize(): 将构建器的容量调整为字符序列的长度。

(31)charAt(int index): 返回指定索引处的字符。

(32)indexOf(String str): 返回指定字符串在构建器中首次出现的索引。

(33)lastIndexOf(String str): 返回指定字符串在构建器中最后一次出现的索引。

(34)substring(int start): 返回从指定索引开始到末尾的子字符串。

(34)substring(int start, int end): 返回从指定索引开始到指定索引结束的子字符串。

(36)toString(): 返回构建器的字符序列作为字符串。

    public static void main(String[] args) {

        StringBuffer text1 = new StringBuffer();
        text1.append("Hello");
        text1.append(123);
        System.out.println(text1.toString());


        StringBuilder text2 = new StringBuilder();
        text2.append("Hello");
        text2.append(123);
        System.out.println(text2.toString());

    }

七、Math 类

        提供了一系列用于执行数学运算的静态方法。这些方法涵盖了各种常见的数学操作,从基本的数学运算到三角函数、指数、对数等高级数学运算。 

 

 (1)abs():返回一个数的绝对值。

(2)max():返回两个数中的较大值。

(3)min():返回两个数中的较小值。

(4)sqrt():返回一个数的平方根。

(5)cbrt():返回一个数的立方根。

(6)pow():返回一个数的指定次幂。

(7)exp():返回自然对数的底数 e 的指定次幂。

(8)log():返回一个数的自然对数(以 e 为底)。

(9)log10():返回一个数的以 10 为底的对数。

(10)三角函数:sin()、cos()、tan()、asin()、acos()、atan() 用于计算三角函数值。

(11)atan2():返回 y/x 的反正切值,可以用于计算角度。

   public static void main(String[] args) {

        System.out.println("请输入一个数:");

        Scanner input = new Scanner(System.in);

        int val = input.nextInt();

        double newVal = Math.pow(2,val);
        // Math.random();

        System.out.println("2^"+ val + "  = " + newVal);
    }

八、Random 类

         用于生成随机数。它提供了一些方法,可以生成不同类型的随机数,从而用于模拟随机事件、密码生成、游戏等场景。

 (1)Random():使用系统时间作为种子创建随机数生成器。

(2)Random(long seed):使用指定的种子创建随机数生成器。

(3)setSeed(long seed):设置随机数生成器的种子。

(4)nextBoolean():生成一个随机的布尔值。

(5)nextInt():生成一个随机的整数。

(6)nextInt(int bound):生成一个指定范围内的随机整数。

(7)nextLong():生成一个随机的长整数。

(8)nextFloat():生成一个随机的浮点数(范围在 0.0 到 1.0 之间)。

(9)extDouble():生成一个随机的双精度浮点数(范围在 0.0 到 1.0 之间)。

(10)nextGaussian():生成一个符合正态分布的随机双精度浮点数。

public static void main(String[] args) {

        Random random = new Random();
        int val = random.nextInt(100);

        int seed = 12134;
        Random random1 = new Random(seed);
        Random random2 = new Random(seed);

        System.out.println( " random = " + val + ", 相同的种子结果对比:"+random1.nextInt()+"/"+random2.nextInt());
    }

九、Date 类

        主要作用是表示特定的日期和时间。可以使用 Date 对象来表示一个时间点,包括年、月、日、时、分、秒等信息。然而,Date 类的设计存在一些问题,导致它在多线程环境下不安全,并且对于日期和时间的计算和格式化操作相对繁琐。

        由于 Date 类的局限性,Java 引入了新的日期和时间 API(java.time 包),它提供了更丰富、更灵活、更符合国际化标准的日期和时间处理能力。新的日期和时间 API 在 Java 8 中引入,包括 LocalDate、LocalTime、LocalDateTime、ZonedDateTime 等类,它们提供了更好的性能、更直观的用法以及更多的功能。

 (1)Date(long date): 构造一个指定毫秒数表示的日期和时间的 Date 对象。

(2)boolean after(Date when): 检查当前日期是否在指定日期之后。

(3)boolean before(Date when): 检查当前日期是否在指定日期之前。

(4)Object clone(): 创建并返回此对象的一个副本。

(5)int compareTo(Date anotherDate): 比较两个日期,返回值为负数、零或正数,表示此日期小于、等于或大于另一个日期。

(6)boolean equals(Object obj): 检查两个日期是否相等。

(7)static Date from(Instant instant): 将 Instant 转换为 Date 对象。

(8)long getTime(): 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数。

(9)void setTime(long time): 设置日期的毫秒表示。

(10)Instant toInstant(): 将 Date 转换为 Instant 对象。

(11)LocalDate toLocalDate(): 将 Date 转换为 LocalDate 对象。

(12)LocalDateTime toLocalDateTime(): 将 Date 转换为 LocalDateTime 对象。

(13)ZonedDateTime toZonedDateTime(): 将 Date 转换为 ZonedDateTime 对象。

(14)String toString(): 返回日期的字符串表示形式。

    public static void main(String[] args) {

        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String dateText = sdf.format(date);

        System.out.println(dateText);
    }

十、Calendar 类

         用于处理日期和时间。它提供了一种方式来操作和计算日期和时间,包括获取年、月、日、时、分、秒等信息,进行日期和时间的加减操作,以及格式化日期和时间等功能。

 

 (1)static Calendar getInstance(): 返回一个默认时区的 Calendar 实例。

(2)static Calendar getInstance(TimeZone zone): 返回指定时区的 Calendar 实例。

(3)void set(int field, int value): 设置指定字段的值,例如年、月、日等。

(4)int get(int field): 获取指定字段的值,例如年、月、日等。

(5)Date getTime(): 获取当前 Calendar 实例表示的日期和时间。

(6)void setTime(Date date): 设置 Calendar 实例的日期和时间。

(7)void add(int field, int amount): 根据指定的字段和增量进行日期和时间的加法计算。

(8)void roll(int field, boolean up): 根据指定的字段和方向(升序或降序)进行轻量级的日期和时间增量计算。

(9)void clear(): 清除 Calendar 实例的所有字段值。

(10)void clear(int field): 清除指定字段的值。

(11)boolean before(Object when): 检查当前日期是否在指定日期之前。

(12)boolean after(Object when): 检查当前日期是否在指定日期之后。

(13)boolean equals(Object obj): 检查两个 Calendar 实例是否相等。

    public static void main(String[] args) {

        Calendar calendar = Calendar.getInstance();
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH)+1;//从0开始
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        int week = calendar.get(Calendar.DAY_OF_WEEK)-1;//星期天是1

        System.out.println(week);
    }

十一、枚举

enum EnumName {

    VALUE1,

    VALUE2,

    // ...

    VALUEN

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

QIFU

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

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

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

打赏作者

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

抵扣说明:

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

余额充值