Java常用类介绍

Java常用类介绍System 表示系统 系统级的很多属性和控制方法都放置在该类的内部 该类位于 java lang 包 System 中包含了 in out err 三个成员变量 分别表示标准输入流 标准输出流和标准错误输出流

大家好,欢迎来到IT知识分享网。

Java 常用类

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:

Java常用类介绍

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);

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/116256.html

(0)
上一篇 2025-11-30 08:26
下一篇 2025-11-30 08:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信