当前位置: 代码网 > it编程>编程语言>Java > Java基础类深度解析(最新整理)

Java基础类深度解析(最新整理)

2026年08月18日 Java 我要评论
在java开发中,熟练掌握jdk内置的基础类是高效编码的关键。本章将系统讲解java的核心基础类,包括object类、基本数据类型包装类、字符串处理、随机数生成以及日期时间操作等内容,并通过丰富的代码

在java开发中,熟练掌握jdk内置的基础类是高效编码的关键。本章将系统讲解java的核心基础类,包括object类、基本数据类型包装类、字符串处理、随机数生成以及日期时间操作等内容,并通过丰富的代码示例帮助大家快速上手。

使用java语言开发应用程序都需要使用java jdk。

jdk中除了包含java编译器、java文档工具、java监视工具外,还包括非常重要的内容,这就是java定义的程序类,也就是java根据应用的需要已经事先定义了的一组java程序类。据不完全统计,jdk中定义了大约8000多个程序类。在这一章对java的基础程序类进行介绍。在后续章节中,还会介绍java其他常用类。当然,熟悉java jdk中的程序类的最有效方法时看jdk文档,在浏览器中搜索“java 17 doc”即可。

一、java基本类

java.lang包是jdk最重要的核心包,其中包含了java语言运行所需的基本类,例如我们熟悉的stringmath等。

1.1 object类——万类之祖

object​ 类是java的根类,所有类都直接或间接继承自它。如果一个类在定义时没有显式指定父类,则默认继承 object

方法名

功能

boolean equals()

判断两个对象是否相等

string tostring()

将对象转换为可显示的字符串。默认输出:类名@内存地址

int hashcode()

返回对象的哈希码(一个int整数)

java代码演示:

package org.example;
public class main {
    public static void main(string[] args) {
        object obj1 = new object();
        system.out.println(obj1.hashcode());   // 1324119927
        system.out.println(obj1.tostring());   // java.lang.object@4eec7777
        object obj2 = new object();
        system.out.println(obj2.hashcode());   // 990368553
        system.out.println(obj1.equals(obj2)); // false
    }
}

1.2 基本数据类型的包装类

java为每种基本类型都提供了对应的包装类,便于在面向对象环境中进行操作。

  • intinteger
  • longlong
  • doubledouble
  • floatfloat
  • charcharacter
  • booleanboolean

java代码演示:

package org.example;
public class main {
    public static void main(string[] args) {
        integer i1 = integer.valueof("12345");
        integer i2 = 100; // 自动装箱
        system.out.println("i1=" + i1 + ", i2=" + i2);//i1=12345, i2=100
        system.out.println(integer.max(123, 234));     // 234
        system.out.println(integer.max_value);         // 2147483647
        system.out.println(integer.min_value);         // -2147483648
        system.out.println(integer.bytes);             // 4
    }
}

1.3 大数据类:biginteger与bigdecimal

当基本类型无法满足超大数值或高精度计算时,可以使用 biginteger(任意大整数)和 bigdecimal(任意精度实数)。

java代码演示

package org.example;
import java.math.bigdecimal;
import java.math.roundingmode;
public class main {
    public static void main(string[] args) {
        bigdecimal bd1 = new bigdecimal("2345631345674545656456.9734648348349539");
        bigdecimal bd2 = new bigdecimal("5674545656456.1233834834987689032539");
        bigdecimal sum = bd1.add(bd2);
        bigdecimal div = bd1.divide(bd2, 10, roundingmode.ceiling);
        system.out.println(sum); // 2345631351349091312913.0968483183337228032539
        system.out.println(div); // 413360203.2095452758
    }
}

1.4 system类

system 类封装了系统相关的资源,如标准输入输出、系统时间等。

java代码演示:

package org.example;
import java.util.scanner;
public class main {
    public static void main(string[] args) {
        system.out.println("hello world!");
        scanner sc = new scanner(system.in);
        system.out.print("输入一个名字: ");
        string name = sc.nextline();
        system.out.print("输入一个整数: ");
        int number = sc.nextint();
        system.out.println(number);
        system.out.println(name);
        // 返回1970年1月1日至今的毫秒数
        system.out.println(system.currenttimemillis());
        // 终止jvm,返回状态码100
        system.exit(100);
    }
}

输出结果:

1.5 math类

math 类提供了丰富的数学运算静态方法,如三角函数、平方根、绝对值等。

java代码演示:

package org.example;
public class main {
    public static void main(string[] args) {
        system.out.println(math.sin(20));                         // 0.9129452507276277
        system.out.println(math.cos(20));                         // 0.40808206181339196
        system.out.println(math.sin(20)*math.sin(20) + math.cos(20)*math.cos(20)); // 1.0
        system.out.println(math.sqrt(20));                        // 4.47213595499958
        system.out.println(math.abs(-20));                        // 20
    }
}

二、字符串类

2.1 string类——不可变字符串

string​ 对象一旦创建,其内容不可更改。常用创建方式:

java代码演示:

string s1 = "hello, world";          // 字面量方式
string s2 = new string("hello, world"); // 构造器方式

string常用方法

方法名

功能

int indexof(int ch) / indexof(string s)

返回字符或子串首次出现的索引(从0开始)

int lastindexof(int ch) / lastindexof(string s)

返回字符或子串最后一次出现的索引

int length()

返回字符串长度

boolean isempty()

判断是否为空串 ""

string tolowercase()

转小写

string[] split(string regex)

按正则表达式拆分字符串

string substring(int start, int end)

截取子串

string trim()

去除首尾空格

boolean equalsignorecase(string s)

忽略大小写比较

java代码演示:

package org.example;
public class main {
    public static void main(string[] args) {
        string s1 = "hello, world";
        string s2 = new string("hello, world");
        system.out.println(s1.equalsignorecase(s2)); // true
        system.out.println(s1.charat(1));            // e
        system.out.println(s1.substring(1, 5));      // ello
        system.out.println(s1);                      // hello, world
        system.out.println("------------------");
        string s3 = "one,two,three,four";
        string[] ss = s3.split(",");
        for (string s : ss) {
            system.out.println(s);
        }
        // one
        // two
        // three
        // four
    }
}

2.2 stringbuffer类——可变字符串

string 不同,stringbuffer​ 对象的内容可以动态修改,适合频繁拼接字符串的场景。

方法名

功能

append(string s) / append(int i)

追加字符串或数据

insert(int index, ...)

在指定位置插入

deletecharat(int index)

删除指定位置字符

delete(int start, int end)

删除子串

replace(int start, int end, string s)

替换子串

reverse()

反转字符串

tostring()

转为string对象

java代码演示:

package org.example;
public class main {
    public static void main(string[] args) {
        stringbuffer sb = new stringbuffer("hello, world");
        sb.append(".你好,中国");
        system.out.println(sb.tostring()); // hello, world.你好,中国
        sb.replace(1, 2, "iii");
        system.out.println(sb.tostring()); // hiiillo,world.你好,中国
    }
}

三、随机数生成类

3.1 random类——经典随机数生成器

random​ 类可以生成 intlongfloatdouble 以及 boolean 类型的随机数。

java代码演示:

package org.example;
import java.util.random;
public class main {
    public static void main(string[] args) {
        random random = new random(system.currenttimemillis());
        system.out.println(random.nextint(100));   // 0~99
        system.out.println(random.nextint());       // 0 ~ integer.max_value
        system.out.println(random.nextfloat(100));  // 0.0 ~ 100.0
        system.out.println(random.nextfloat());     // 0.0 ~ 1.0
        system.out.println(random.nextboolean());   // true/false
    }
}

3.2 randomgenerator接口——更优质的随机数

java 17+ 引入了 randomgenerator​ 接口,支持多种高性能随机算法,如 l128x1024mixrandoml64x128starstarrandomsplittablerandom 等。

java代码演示:

package org.example;
import java.util.random.randomgenerator;
public class main {
    public static void main(string[] args) {
        randomgenerator rg1 = randomgenerator.of("l128x1024mixrandom");
        system.out.println(rg1.nextint());           // 全范围整数
        system.out.println(rg1.nextint(20));         // 0~19
        system.out.println(rg1.nextint(40, 50));     // 40~49
        randomgenerator rg2 = randomgenerator.of("l64x128starstarrandom");
        system.out.println(rg2.nextfloat());         // 0.0~1.0
        system.out.println(rg2.nextfloat(20));       // 0.0~20.0
        system.out.println(rg2.nextfloat(40, 50));   // 40.0~50.0
        randomgenerator rg3 = randomgenerator.of("splittablerandom");
        system.out.println(rg3.nextdouble());        // 0.0~1.0
        system.out.println(rg3.nextdouble(20));      // 0.0~20.0
        system.out.println(rg3.nextdouble(40, 50));  // 40.0~50.0
        system.out.println(rg3.nextboolean());       // true/false
    }
}

四、日期时间类

4.1 date类——基础日期时间

date​ 类用于表示特定的瞬间,精确到毫秒。

方法名

功能

date()

构造当前日期时间对象

date(int year, int month, int day, int hour, int min, int sec)

构造指定日期时间(已过时)

boolean after(date when)

判断是否在指定时间之后

boolean before(date when)

判断是否在指定时间之前

long gettime()

返回自1970年1月1日以来的毫秒数

void settime(long ms)

设置时间

4.2 calendar类——灵活日历操作

calendar​ 是抽象类,通过静态方法 getinstance() 获取实例,提供更丰富的日期字段操作。

java代码演示:

calendar c = calendar.getinstance();
date d = c.gettime();

方法名

功能

date gettime()

返回对应的date对象

int get(int field)

获取指定字段值,如 calendar.year

boolean after(object when)

判断是否在指定时间之后

boolean before(object when)

判断是否在指定时间之前

long gettimeinmillis()

获取毫秒数

void settime(date d)

设置时间

4.3 simpledateformat类——日期格式化

simpledateformat​ 用于日期与字符串之间的相互转换。

模式字符

含义

yyyy

mm

dd

hh

24小时制小时

mm

ss

s

毫秒

java代码演示:

package org.example;
import java.text.simpledateformat;
import java.util.calendar;
import java.util.date;
public class main {
    public static void main(string[] args) throws exception {
        // 当前时间
        date d1 = new date();
        simpledateformat sdf = new simpledateformat("yyyy-mm-dd hh:mm:ss");
        system.out.println(d1);                // thu jan 12 09:58:50 cst 2023
        system.out.println(sdf.format(d1));    // 2023-01-12 09:58:50
        // 解析字符串为date
        date d2 = sdf.parse("2022-12-12 09:42:08");
        system.out.println(d2);                // mon dec 12 09:42:08 cst 2022
        system.out.println(sdf.format(d2));    // 2022-12-12 09:42:08
        // 使用calendar获取各字段
        calendar c = calendar.getinstance();
        c.settime(d2);
        system.out.println("年: " + c.get(calendar.year));          // 2022
        system.out.println("月: " + c.get(calendar.month));        // 11(月份从0开始)
        system.out.println("日: " + c.get(calendar.day_of_month)); // 12
    }
}

五、使用java基础类最佳实践

  • 善用jdk文档:官方文档是最权威的学习资料,搜索“java 17 doc”即可获取。
  • 优先使用新版api:如 randomgenerator 替代旧版 randomlocaldatetime 系列替代 date/calendar
  • 注意线程安全stringbuffer 是线程安全的,stringbuilder 性能更高但非线程安全。
  • 避免频繁创建string对象:使用 stringbuilderstringbuffer 进行大量字符串拼接。

六、案例实战:猜数游戏

6.1 任务描述

生成一个1~100之间的随机整数,用户最多猜3次,每次给出“猜大了”或“猜小了”提示,猜对则胜利。

6.2 代码实现

java代码演示:

package com.ttt.basic;
import java.util.scanner;
import java.util.random.randomgenerator;
public class guesser {
    private static final randomgenerator rg = randomgenerator.of("l128x1024mixrandom");
    private static final scanner sc = new scanner(system.in);
    private int secret;
    public guesser() {
        secret = rg.nextint(1, 101);
    }
    public boolean guess() {
        int count = 0;
        while (count < 3) {
            system.out.print("请猜数: ");
            int n = sc.nextint();
            if (n == secret) {
                return true;
            } else if (n > secret) {
                system.out.println("猜大了");
            } else {
                system.out.println("猜小了");
            }
            count++;
        }
        return false;
    }
    public static void main(string[] args) {
        guesser game = new guesser();
        if (game.guess()) {
            system.out.println("你赢了!");
        } else {
            system.out.println("你输了");
        }
    }
}

七、课后练习:计算闰年

编写程序,从键盘接收日期(格式:yyyy-mm-dd),判断该年份是否为闰年。

提示

  • 能被400整除,或能被4整除但不能被100整除的年份为闰年。

总结

本文系统介绍了java基础类库中的核心组件,包括:

  • object类:所有类的基类
  • 包装类:基本类型的对象化
  • 大数据类:高精度与大数值计算
  • 字符串类:不可变与可变字符串的选择
  • 随机数生成:从random到randomgenerator的演进
  • 日期时间处理:date、calendar、simpledateformat的使用

掌握这些基础类,将为后续深入学习java集合框架、io流、多线程等高级特性打下坚实基础。

到此这篇关于java基础类深度解析(最新整理)的文章就介绍到这了,更多相关java基础类内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com