百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

Java常用类介绍

toyiye 2024-05-19 19:35 17 浏览 0 评论

Java 常用类

System

System表示系统,系统级的很多属性和控制方法都放置在该类的内部,该类位于java.lang包。

由于该类的构造方法被private修饰的,所以无法创建对象,也就是无法实例化该类。其内部的成员方法和成员变量都是被static修饰的,所以可以通过类名直接调用。

System中包含了inouterr三个成员变量,分别表示标准输入流、标准输出流和标准错误输出流。

示例:通过键盘录入年龄

Scanner scanner = new Scanner(System.in);

boolean flag = true;
while(flag) {
    try {
        System.out.println("请输入您的年龄:");

        String line = scanner.nextLine();

        final int num = Integer.parseInt(line);

        if(num > 0 && num < 120) {
            System.out.println("您的年龄为:" + num);
            flag = false;
        } else {
            System.err.println("您输入的年龄不符合常规!!!");
        }

    } catch (Exception e) {
        System.err.println("您输入的数据类型错误:" + e.getMessage());
    }
}

scanner.close();

System常用API:

arraycopy数组拷贝:

int[] arrs = {1, 2, 3, 4, 5, 6};

System.out.println(Arrays.toString(arrs));  // logs: [1, 2, 3, 4, 5, 6]

int[] tmps = new int[4];
System.arraycopy(arrs, 2, tmps, 0, 4);

System.out.println(Arrays.toString(tmps));  // logs: [3, 4, 5, 6]

currentTimeMillis获取当前时间的毫秒值:

long startTimeMillis = System.currentTimeMillis();

// 打印九九乘法表
for(int i=1; i<=9; i++) {
    for(int j = 1; j<=i; j++) {
        System.out.printf("%d * %d = %d \t\t", j, i, i*j);
    }
    System.out.println();
}

long stopTimeMillis = System.currentTimeMillis();

// 打印九九乘法表所耗费的毫秒值
System.out.println((stopTimeMillis - startTimeMillis) + "ms");

getProperty获取系统属性:

// 获取系统属性配置对象
Properties properties = System.getProperties();
properties.list(System.out);    // 打印所有的系统属性

// 获取指定的系统属性
String osName = System.getProperty("os.name");      // 系统名
String userName = System.getProperty("user.name");  // 用户名

System.out.println(osName); 
System.out.println(userName);

CharSequence

CharSequence是一个接口,表示char值的一个可读序列,此接口对许多不同种类的char序列提供统一的自读访问。

CharSequenceString都能用于定义字符串,但CharSequence的值是可读可写序列,而String的值是只读序列。

示例:

// 定义字符串
CharSequence cs = "ijunfu";

System.out.println(cs.length());            // logs: 6
System.out.println(cs.charAt(2));           // logs: u

// 声明一个CharSequence类型的字符串缓冲区
CharSequence sb = new StringBuffer("ijunfu");
System.out.println(sb);                         // logs: ijunfu

sb = ((StringBuffer)sb).append(".Wei");
System.out.println(sb);                         // logs: ijunfu.Wei

Runtime

Runtime类封装了运行时环境。每个Java应用程序都有一个Runtime类实例,使应用程序能够与其运行环境相连。

Runtime类通过totalMemory()freeMemory()方法可以知道对象的堆内存有多大、还剩多少。

示例:

Runtime runtime = Runtime.getRuntime();

int availableProcessors = runtime.availableProcessors();
System.out.printf("处理器数:%d\n", availableProcessors);

long totalMemory = runtime.totalMemory();
long freeMemory = runtime.freeMemory();

System.out.printf("总内存: %d byte\n", totalMemory);
System.out.printf("剩余内存:%d byte\n", freeMemory);

Cleaner

Cleaner类负责清理对象,替代finialize()方法,是在JDK 9+才提供的一个对象清理操作。

jdk 9之前:

class Member {

    public Member() {
        System.out.println("【构造】你出生时满园芳香,群蝶飞舞。");
    }

    @Override
    protected void finalize() throws Throwable {
        System.out.println("【消亡】躺在病床上,看着日渐消瘦的身躯");
        super.finalize();
    }
}
Member member = new Member();
member = null;

System.gc();    // 清理

jdk 9之后:

class Member implements Runnable {

    public Member() {
        System.out.println("【构造】你出生时满园芳香,群蝶飞舞。");
    }

    @Override
    public void run() {
        System.out.println("【回收】你死亡后,被扔到荒郊,甚是悲凉!");
    }
}
class MemberCleaning implements AutoCloseable {

    // 创建一个清除对象
    private final static Cleaner cleaner = Cleaner.create();

    private Member member;  // 被清理的对象

    private Cleaner.Cleanable cleanable;

    public MemberCleaning() {
        this.member = new Member();
        this.cleanable = cleaner.register(this, this.member);
    }

    @Override
    public void close() throws Exception {
        this.cleanable.clean();
    }
}
try(MemberCleaning mc = new MemberCleaning()) {
    // TODO
} catch (Exception e) {
    e.printStackTrace();
}

Cloneable

和现实生活中的克隆一样,克隆就是复制一个一模一样的对象出来。

clone()方法是来自Object类。一个对象要实现克隆,需要实现Cloneable接口,只有实现这个接口后,才能实现克隆操作。

克隆分为深度克隆浅度克隆

深度克隆:复制对象本身的同时,也复制对象包含的引用指向的对象,即修改被克隆对象的任何属性都不会影响到克隆出来的对象。

示例:

// 成绩
class Score implements Cloneable {
    private int chinese;    // 语文
    private int math;       // 数学
    private int english;    // 英语

    public Score() {}

    public Score(int chinese, int math, int english) {
        this.chinese = chinese;
        this.math = math;
        this.english = english;
    }

    @Override
    protected Score clone() throws CloneNotSupportedException {
        return (Score) super.clone();
    }

    //... 省略getter、setter 和 toString
}

// 学生
class Student implements Cloneable {
    private String name;
    private Score score;

    public Student() {}

    public Student(String name) {
        this.name = name;
    }

    @Override
    protected Student clone() throws CloneNotSupportedException {
        Student student = (Student) super.clone();
        Score score = student.getScore().clone();
        student.setScore(score);
        return  student;
    }

     //... 省略getter、setter 和 toString
}
// 源对象
Student student = new Student("张三");
Score score = new Score(98, 100, 92);
student.setScore(score);

System.out.println(student);

// 克隆对象
Student std = student.clone();
Score s = std.getScore();
s.setEnglish(96);
s.setMath(90);

// 源对象未被改变
System.out.println(student);
System.out.println(std);

浅度克隆:复制对象时仅复制对象本身,包括基本属性,但该对象的属性引用其他对象时,该引用对象不会被复制,即拷贝出来的对象与被拷贝出来的对象中的属性引用的对象是同一个。修改上述Student中的clone()方法和测试代码如下:

// 学生
class Student implements Cloneable {
    private String name;
    private Score score;

    public Student() {}

    public Student(String name) {
        this.name = name;
    }

    @Override
    protected Student clone() throws CloneNotSupportedException {
        return  (Student) super.clone();
    }

     //... 省略getter、setter 和 toString
}
// 源对象
Student student = new Student("张三");
Score score = new Score(98, 100, 92);
student.setScore(score);

System.out.println(student);

// 克隆对象
Student std = student.clone();
std.setName("李四");
Score s = std.getScore();
s.setEnglish(96);
s.setMath(90);

// 源对象未被改变
System.out.println(student);
System.out.println(std);

从结果来看原Student和克隆的Student中的Score对象是一样的。即浅度克隆仅克隆了自身属性,但未克隆引用对象。

Math

Math类中包含基本的数字操作,如指数、对数、平方根和三角函数等。

Math类中包含EPI两个静态常量,以及进行科学计算的类方法,可以直接通过类名调用。

示例:求圆的面积

int r = 4;  // 半径
double area = Math.PI * Math.pow(r, 2);
System.out.println(area);

Random

Random类用于产生随机数。

Random.nextInt(int bound):随机数生成[0, bound)之间的整数。注意:是左开右闭区间,可能取到0,不能取到bound的值。

示例:产生[1, 10]之间的数字

Random random = new Random();

Set<Integer> set = new HashSet<>();

for(int i=0; i<100; i++) {
    set.add(random.nextInt(10) + 1);
}

System.out.println(set);

BigDecimal

BigDecimal是一个不变的、任意精度的有符号的十进制数对象。

BigDecimal(double)是把一个double类型的十进制数构造成为一个BigDecimal实例。

BigDecimal(String)是把一个以String表示的十进制构造为一个BigDecimal实例, 推荐使用此方式

示例:求两个数的和

BigDecimal num = new BigDecimal("2");
num = num.add(new BigDecimal("3")); // 返回一个新的BigDecimal对象

System.out.println(num.toBigInteger()); // logs: 5

日期

DateCalendar都是关于日期的类,都在java.util包中。

Date对象用来表示时间和日期,用得最多的是获取系统当前日期和时间,精确到毫秒。

Calendar是抽象类,无法实例化。

JDK 8新增 java.time用于日期、时间处理。

Date示例:

Date date = new Date();
System.out.println("今天日期是:" + date);

// 获取当前日期的毫秒值,距离1970.1.1 0的毫秒
long time = date.getTime();
System.out.println(time);

Calendar示例:

Calendar calendar = Calendar.getInstance();

//获取时间
int year = calendar.get(Calendar.YEAR);     // 年份
int month = calendar.get(Calendar.MONTH)+1;   // 月份,从0开始
int day = calendar.get(Calendar.DATE);         // 天, 1~31

System.out.printf("%d-%d-%d\n", year, month, day);  // 日期格式: yyyy-MM-dd

// 指定具体时间
calendar.set(Calendar.DATE, 5);
day = calendar.get(Calendar.DATE);         //5, 天, 1~31

System.out.printf("%d-%d-%d\n", year, month, day);  // 日期格式: yyyy-MM-dd

// amount 整数,日期加amount,可为正或负
calendar.add(Calendar.DATE, 1);
day = calendar.get(Calendar.DATE);         //6, 天, 1~31

System.out.printf("%d-%d-%d\n", year, month, day);  // 日期格式: yyyy-MM-dd

Clock用来获取指定时区的日期时间。

Clock示例:

Clock clock = Clock.systemUTC();// 世界统一时间

System.out.println(clock.instant());    // 当前时间
System.out.println(clock.millis());     // 当前时间毫秒值
System.out.println(System.currentTimeMillis()); // 当前时间毫秒值

Duration:

Duration示例:

int time = 59 * 59 * 12;

Duration duration = Duration.ofSeconds(time);

System.out.println(time + "秒相当于" + duration.toMinutes() + "分");
System.out.println(time + "秒相当于" + duration.toHours() + "时");
System.out.println(time + "秒相当于" + duration.toDays() + "天");

Instant:

示例:

Instant now = Instant.now();
System.out.println("当前时间:" + now);

Instant instant = now.plusSeconds(60 * 60); // 加一小时
System.out.println("修改时间:" +instant);

LocalDate:

示例:

LocalDate localDate = LocalDate.now();  // 日期格式: yyyy-MM-dd
System.out.println(localDate);

LocalDate plusYears = localDate.plusYears(1);  // 加一年
System.out.println(plusYears);

UUID

Universally Unique Identifier简写为UUID,即通用唯一识别码。

UUID产生的目的是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定,每个人都可以创建不与其他人冲突的UUID

示例:

String str = UUID.randomUUID().toString();
System.out.println(str);    // logs: 83e87632-fc2e-44f8-aab4-9cebce024a95

String id = str.replaceAll("-", "");    // logs: 83e87632fc2e44f8aab49cebce024a95
System.out.println(id);



相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码