System类

java.lang.System类代表当前Java程序的运行平台。

|-可以做输入输出,垃圾回收;(此处不讲)

|-可以获取时间;

|-可以获取环境变量;

|-可以获取系统信息;

|-可以获取对象的原始HashCode。(比如String类就改写了hashCode方法,不能唯一地标识一个对象)

获取时间

public class System1时间 {
public static void main(String[] args) {
System.out.println("--currentTimeMillis():UTC(世界标准时间) 1970.1.1开始到现在的时间差");
System.out.println("毫秒:" + System.currentTimeMillis());
System.out.println("nanoTime()只能用于测量已过的时间");
System.out.println("纳秒:" + System.nanoTime());
}
}

System.currentTimeMillis()可以用户计算一段代码运行所消耗的时间。

System.nanoTime()精确度太高,硬件环境不一定能精确到纳秒,因此这个方法并不常用。


获取环境变量

import java.util.Map;
public class System2环境变量 {
public static void main(String[] args) {
String _环境变量名 = "JAVA_HOME";
System.out.println(_环境变量名 + " = " + System.getenv(_环境变量名));
System.out.println("-----环境变量(全部)-----");
Map<String, String> env = System.getenv();
for (String name : env.keySet()) {
System.out.println(name + " = " + env.get(name));
}
}
}

获取系统信息

import java.util.Properties;
public class System3getProperty {
public static void main(String[] args) {
System.out.println(System.getProperty("os.name"));
System.out.println(System.getProperty("user.dir"));// 用户工作路径
System.out.println("-----System Property(ALL)-----");
Properties props = System.getProperties();
for (Object k : props.keySet()) {
String v = props.getProperty(k.toString());
System.out.println(k);
System.out.println(k + " = " + v);
}
}
}

获取对象的原始HashCode

(比如String类就改写了hashCode方法,不能唯一地标识一个对象)

public class System4IdentityHashCode {
public static void main(String[] args) {
System.out.println("---identityHashCode():不同对象,此结果必不同---");
System.out.println("---因为hashCode()可能被重写(比如String类),无法准确确定对象---");
// s1和s2是两个不同对象
String s1 = new String("Hello");
String s2 = new String("Hello");
// String重写了hashCode()方法——改为“根据字符序列计算hashCode值”,
// 因为s1和s2的字符序列相同,所以它们的hashCode()相同
// (和equals无关,equals不是根据hashCode判断,但是也是根据字符序列比较,殊途同归)
System.out.println("new String 1.hashCode() = " + s1.hashCode());
System.out.println("new String 2.hashCode() = " + s2.hashCode());
// s1和s2是不同的字符串对象,所以它们的identityHashCode值不同
System.out.println("new String 1.identityHashCode() = " + System.identityHashCode(s1));
System.out.println("new String 2.identityHashCode() = " + System.identityHashCode(s2));
String s3 = "Java";
String s4 = "Java";
// s3和s4是相同的字符串对象,所以它们的identityHashCode值相同
System.out.println("String 3.identityHashCode() = " + System.identityHashCode(s3));
System.out.println("String 4.identityHashCode() = " + System.identityHashCode(s4));
}
}

运行结果(每次运行的结果可能不同)

---identityHashCode():不同对象,此结果必不同---
---因为hashCode()可能被重写(比如String类),无法准确确定对象---
new String 1.hashCode() = 69609650
new String 2.hashCode() = 69609650
new String 1.identityHashCode() = 366712642
new String 2.identityHashCode() = 1829164700
String 3.identityHashCode() = 2018699554
String 4.identityHashCode() = 2018699554

Java基础教程——System类的更多相关文章

  1. java基础21 System类和Runtime类

    一.System系统类 1.1.System系统类 主要用于获取系统信息 1.2.System类的常用方法 arraycopy(Object src, int srcPos, Object dest, ...

  2. java基础之System类

    System类概述System 类包含一些有用的类字段和方法.它不能被实例化. 成员方法 public static void gc()运行垃圾回收器 public static void exit( ...

  3. Java基础教程(10)--类

    一.声明类   你已经见过了以如下方式定义的类: class MyClass { // field, constructor, and method declarations }   上面是声明类的最 ...

  4. Java基础教程——File类、Paths类、Files类

    File类 File类在java.io包中.io代表input和output,输入和输出. 代表与平台无关的文件和目录. 可以新建.删除.重命名,但不能访问文件内容. File类里的常量: impor ...

  5. Java基础教程——BigDecimal类

    BigDecimal类 float.double类型的数字在计算的时候,容易发生精度丢失. 使用java.math.BigDecimal类可以解决此类问题. 前面讲过Math类,现在的BigDecim ...

  6. Java基础教程——Date类和Calendar类

    Date类和Calendar类都是关于日期的类,都在java.util包中,使用时需要import. Date java.util.Date类的对象用来表示时间和日期,用得最多的是获取系统当前日期和时 ...

  7. Java基础教程——Scanner类

    Scanner属于java.util包. java.util包是Java内置的一个工具包,其中包含一系列常用的工具类,如处理日期.日历.集合类: 如果要使用到该包中的类,必须显式引入包名:import ...

  8. Java基础教程——RunTime类

    RunTime类 java.lang.RunTime类代表Java程序的运行时环境. 可以进行垃圾回收(gc()),可以进行系统资源清理(runFinalization()): 可以加载文件(load ...

  9. Java基础教程——Object类

    Object类 Object类是Java所有类类型的父类(或者说祖先类更合适) <Thinking in Java(Java编程思想)>的第一章名字就叫"everything i ...

随机推荐

  1. java关键字之abstract

    Java 允许类,借口或成员方法具有抽象属性. abstract  修饰的类叫做抽象类,该类不能被实例化. abstract  修饰的方法叫抽象方法,抽象方法只有声明部分,没有具体的方法体. 接口总是 ...

  2. Djano之数据库--ORM

    一.建立数据库模型类 1.在model里创建模型类.(继承models.Model) 1 class Order(models.Model): 2 TYPE_CHOICE = ( 3 (0, u&qu ...

  3. Java 运行时动态生成class

    转载 http://www.liaoxuefeng.com/article/0014617596492474eea2227bf04477e83e6d094683e0536000 Java是一门静态语言 ...

  4. SpringApplication.run(xxx.class, args)背后的东东——整体脉络

    从spring到springmvc,再到springboot.springcloud,应用程序api开发调用方面都已经非常熟悉,但对spring背后的扩展机制:为何一个简单的main方法可以实现这么强 ...

  5. 转载:解密Redis持久化

    本文内容来源于Redis作者博文,Redis作者说,他看到的所有针对Redis的讨论中,对Redis持久化的误解是最大的,于是他写了一篇长文来对Redis的持久化进行了系统性的论述.文章非常长,也很值 ...

  6. php 实现签名验签

    本人php菜鸟,主要使用php实现简单的签名验签功能 以下php代码使用的密钥格式为pem格式,其他证书格式可以使用openssl进行转换(未安装请实现安装): 以下是.p12文件导出pem格式公私钥 ...

  7. day85:luffy:购物车根据有效期不同切换价格&购物车删除操作&价格结算&订单页面前戏

    目录 1.购物车有效期切换 2.根据有效期不同切换价格 3.购物车删除操作 4.价格结算 5.订单页面-初始化 1.购物车有效期切换 1.关于有效期表结构的设计 1.course/models.py ...

  8. Docker系列03—Docker 存储卷

    一.存储卷介绍 1.1 背景 Docker 的 AFUS 分层文件系统 docker镜像由多个只读层叠加而成,启动容器时,docker会加载只读镜像层并在镜像栈顶部加一个读写层: 如果运行的容器修改了 ...

  9. 学习.NET 挑战赛

    今天访问dot.net 网站看到了一个学习.NET 挑战赛,发现已经赛程过半了,这是一个为那些想更多地了解 C# 和 .NET 的人举办的一个完全免费的课程活动,这些模块必须在 11 月底前完成.参加 ...

  10. Flask补充内容

    关键字: 一,过滤器 二,增删改查 一,过滤器 1,概念:过滤器的本质就是函数.有时候我们不仅仅只是需要输出变量的值,我们还需要修改变量的显示,甚至格式化.运算等等,而在模板中是不能直接调用 Pyth ...