详解 System 与 Runtime

java 程序在不同的操作系统上运行的时候,可能需要获取平台相关属性,或者调用相关命令来完成特定功能. java提供了System 和 Runtime 供我们使用。

System 类

System 类提供了一些有用的类方法和字段.System 提供了标准的输入,输出和错误输出流;对外部定义的属性和环境变量的访问;加载文件和库方法,还有快速复制数组的一部分使用方法.

  • getEnv() 可获得 java 程序运行平台环境变量
    public static void printEnv(){
    Map<String , String> envs =System.getenv();
    for(String envKeys : envs.keySet()){
    System.out.println("环境变量 Key:"+envKeys+" :"+"环境变量 value"+envs.get(envKeys));
    }
    }

  • getProperties() 可获得当前运行平台的一些属性,例如: 系统版本 ,java 版本 ,默认字符编码等信息

    public static void printProp(){
     Properties prop =System.getProperties();
    
     for(String key : prop.stringPropertyNames()){
         System.out.println("平台属性 Key:"+key+" :"+"平台属性 value"+ prop.getProperty(key));
     }
    }
    
  • currentTimeMillis() 和 nanoTime() 的区别?

上面两个返回的都是一个 long 类型整数,实际上返回的都是当前时间与 UTC 1970 年1月1日午夜的时间差,前者是以毫秒为单位,后者是以纳秒为单位.

  • System 类中 identityHashCode(Obejct obj) 方法,这个方法能够输出一个对象的 hashCode,通常一个类的hashCode()方法返回的是该对象在内存中的地址,也有很多类重写了 hashCode 方法,所以通过obj.hashCode()方法得到的不一定是内存中的地址. identityHashCode(obj)方法返回的就是 obj 对象在内存中的地址,因此只要两个对象调用identityHashCode()方法返回的值一样,那么这两个对象一定是同一个对象,两个对象的 hashCode()方法返回的值一样,这两个对象不一定是同一个对象.

    public static void identityHashCode(){
      String str1 = new String("System");
      String str2 = new String("System");
      
      String str3 = "System";     
      String str4 = "System";
      //两个值 hashCode不同
      System.out.println("str1 和 str2"+System.identityHashCode(str1) +"    "+System.identityHashCode(str2));
      //两个值 hashCode值相同
      System.out.println("str3 和 str4"+System.identityHashCode(str3) +"    "+System.identityHashCode(str4));  
      //两个对象不相等
      System.out.println("str1 == str2 ?"+(str1 == str2));
      //两个对象相等
      System.out.println("str3 == str4 ?"+(str3 == str4));
    }
    
  • String str1 = "123" 和 String str2 = new String("123");

str1被创建以后,对象会放到一个常量池中,当再次创建 "123"变量的时候,会优先去常量池中查找,如果常量池中存在该字符串序列,那么将不会存在新的字符串对象.如果不存在,那么将创建一个新的字符串对象,并放到字符串常量池中. 而 str2 创建的对象存放在堆中,没次使用 new 创建字符串的时候,都会创建一个新的字符串对象.

Runtime 类

每一个 java 程序都有一个 Runtime 类的实例.例如:每一个 android 程序都是在一个单独的虚拟机中执行的,每个虚拟机都是操作系统的一个独立进程.能够是应用程序与运行时环境相连接,我们只能通过 getRuntime 方法获取当前的运行时,应用程序不能够创建自己的 Runtime 实例,Runtime 提供主要有两大功能:

  1. 通过 Runtime 我们可以获得运行时环境Java虚拟机的一些 运行时信息
    System.out.println("可用处理器数目:"+runtime.availableProcessors());
    System.out.println("java 虚拟机的内存总量::"+runtime.totalMemory());
    System.out.println("当前空闲的内存:"+runtime.freeMemory());

  2. Runtime还可以单独启动一个进程来运行操作系统的命令
    //Process process = runtime.exec("ls -al"); //两种方式执行命令
    Process process = runtime.exec(new String[]{"ls","-al"});
    //命令执行结果我们可以通过接收一个输入流来接收
    InputStream inputStream = process.getInputStream();
    byte[] b = new byte[1024];
    inputStream.read(b);
    System.out.println("命令执行结果:"+new String(b));

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容

  • java笔记第一天 == 和 equals ==比较的比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量...
    jmychou阅读 1,483评论 0 3
  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔...
    叶总韩阅读 5,125评论 0 41
  • 原文http://topic.csdn.net/u/20081123/12/f70f1632-24be-4caa-...
    小5筒阅读 488评论 0 0
  • 百里清漓展异姿,凌波拾碧意神驰。 峰叠翡翠凝重彩,竹曳琉璃别样奇。 水短舟长难作浪,江宽汊窄易沾肌。 谁人解我流连...
    周延龙阅读 888评论 1 10
  • 无论是谁,都选择不了命运,但是,我们活着肩上都有一份责任,必须去承担。 生活不会都如意,人生不是都顺心。 那些,争...
    思旧辰阅读 202评论 0 0