1. 程式人生 > >Java—System類入門學習

Java—System類入門學習

第三階段 JAVA常見物件的學習

System類

System類包含一些有用的欄位和方法,他不能被例項化

//用於垃圾回收
public static void gc()

//終止正在執行的java虛擬機器。引數用作狀態碼,根據慣例,非0表示異常終止
public static void exit(int status)

//System.out.println(System.currentTimeMillis());
//返回從1970年1月1日到現在時間的毫秒數(協調時間)
public static currentTimeMills()

public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
//src - 源陣列。 
//srcPos - 源陣列中的起始位置。 
//dest - 目標陣列。 
//destPos - 目的地資料中的起始位置。 
//length - 要複製的陣列元素的數量。 

arraycopy方法的使用案例

int[] arr = {11, 22, 33, 44, 55};
int[] arr2 = {6, 7, 8, ,9 ,10};
System.arraycopy(arr, 1, arr2, 2, 2);
System.out.println(Arrays.toString(arr));
System.out.println(Arrays.toString(arr2));

//執行結果
[11, 22, 33, 44, 55]
[6, 7, 22, 33, 10]

currentTimeMills()使用案例

package cn.bwh_02_currenTimeMillis;

public class SystemDemo {
    public static void main(String[] args) {
        //統計這段程式執行時間
        long start = System.currentTimeMillis();
        for (int x = 0; x < 10000; x++){
            System.out.println("Hello" + x);
        }
        long end = System.currentTimeMillis();
        System.out.println("共耗時" + (end - start) + "毫秒");
    }
}

//執行結果
Hello9997
Hello9998
Hello9999
共耗時79毫秒

System.gc() 可用於垃圾回收.當使用System.gc() 回收某個物件所佔用的記憶體之前,通過要求程式呼叫適當的方法來清理資源,在沒有明確指定資源清理的情況下,Java提高了預設機制來清理該物件的資源,就是呼叫object類的finalize()方法,finalize()方法的作用是釋放一個物件佔用的記憶體空間時會被JVM呼叫.而子類重寫該方法, 就可以清理物件佔用的資源,該方法沒有鏈式呼叫, 所以必須手動實現。

從程式結果上可以發現執行system.gc() 前系統會自動呼叫finalize() 方法清除物件佔有的資源。通過super.finalize()可以實現從下到上的方法呼叫,即先釋放自己的資源,再釋放父類的資源。

但是不要在程式中頻繁的呼叫垃圾回收,因為每一次執行垃圾回收jvm都會強制啟動垃圾回收器執行,就會耗費更多的系統資源會與正常的Java程式執行爭搶資源,只有在執行大量的物件的釋放才呼叫垃圾回收最好。

package cn.bwh_01_gc;

public class Student {
    private String name;
    private int age;

    public Student() {
    }

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

    @Override
    protected void finalize() throws Throwable {
        System.out.println("當前物件被回收了" + this);
        super.finalize();
    }
}
package cn.bwh_01_gc;

public class GcDemo {
    public static void main(String[] args) {
        Student s = new Student("admin", 20);
        System.out.println(s);

        //讓s不再指定堆記憶體,成為了垃圾
        s = null;
        System.gc();
    }
}

//執行結果
cn.bwh_01_gc.Student@1b6d3586
當前物件被回收了cn.bwh_01_gc.Student@1b6d3586

結尾:

如果內容中有什麼不足,或者錯誤的地方,歡迎大家給我留言提出意見, 蟹蟹大家 !^_^

如果能幫到你的話,那就來關注我吧!(系列文章均會在公眾號第一時間更新)

在這裡的我們素不相識,卻都在為了自己的夢而努力 ❤

一個堅持推送原創Java技術的公眾號:理想二旬不止

相關推薦

JavaSystem入門學習

第三階段 JAVA常見物件的學習 System類 System類包含一些有用的欄位和方法,他不能被例項化 //用於垃圾回收 pub

java System學習筆記

lis per += start spa getprop ext static puts java 中 System 類 最常見到 System.out.println(); System類 定義為 public final class System extends Obj

Java System

system類 per span mil array static ack 程序運行時間 pac 1 package demo04; 2 3 //因為構造方法被private修飾,System類不能創建對象,但是可以通過類名訪問其靜態方法 4 public cl

Java小白入門學習筆記demo1輸出helloworld

out hello string 語句 返回 學習筆記 print [] system public class Hello{//公共 類 類名   public static void main(String[] args){ // 公共 靜態

Java String學習

1.equals()方法 重寫了父類的equals()方法,父類(Object)的equals()方法的比較和"=="一樣,都是比較的地址;重寫後,在比較地址的基礎上面加了一個條件(字串的長度和字串的內容一致),只要滿足這兩個條件其中一個,即相等。重寫的equals()方法如下圖:  

java基礎學習(四.2)異常處理的陷阱

前言 java的異常類Exception繼承自非正常情況類Throwable,異常類下又分為兩大類:checked異常和runtime異常, 其中發生checked異常的類如果不做處理程式會發生編譯錯誤,導致程式中斷編譯 而runtime異常的類只有在執行階段才會發生,如果不做處理,

java基礎學習(二.3)List子介面的實現

List子介面的實現類:ArrayList/Vector/LinkedList List集合:元素有序。可重複的集合,List集合預設按元素的新增順序設定元素的索引,通過索引來訪問物件 List集合原始碼? public interface List<E> extends

java基礎學習(二.2)Set子介面的實現

Set子介面的實現類:HashSet/LinkedHashSet/TreeSet/EnumSet/SortedSet Set子介面和Collection父介面原始碼對比? 1Collection父介面原始碼   public interface Collection&l

JAVA集合框架學習彙總

學習連結: 集合類框架教程:http://www.runoob.com/java/java-collections.html 集合類框架面試題:https://www.jianshu.com/p/8b0a09f70b9c 集合類框架的優點: 通過使用集合框架的核心類可以減少

[java] System深度解析

概述 大部分寫的第一個java功能,應該都是如下這行程式碼: System.out.println("hello world"); 這裡即用到了System類,本篇文章就將分析System類的實現原理。在java裡面System類是一個final修飾的類,意味著它的方法和屬性都不能

java基礎學習(七.3)控制執行緒

前言 執行緒的五個狀態新建/就緒/執行/阻塞/死亡 為了很好的控制執行緒的狀態(新建態,就緒態--執行態控制不了),我們來看一下執行緒物件的幾個方法,也就是Thread的幾個方法 控制執行緒的狀態 1使執行緒處於新建態 執行緒子類 a=new 執行緒子類();  

java基礎學習(七.2)執行緒的生命週期

前言 利用java的類/介面建立好使用者執行緒後,我們呼叫執行緒物件的啟動方法,讓執行緒啟動 執行緒的生命週期:新建new 就緒runnable 執行running 阻塞blocked 死亡die 執行緒會在幾種狀態之間改變 新建new 執行緒類通過繼承Thread實現Run

java基礎學習(六.6)物件序列化

前言 物件序列化:允許把記憶體中的物件轉換成平臺無關的二進位制流,從而把這種二進位制流持久的儲存自磁碟上,通過網路將這種二進位制流傳輸到網路的另一個節點,其他程式一旦獲得了這種二進位制流,都可以將這種二進位制流恢復成原來的java物件 物件的序列化是指將一個java物件寫入io流中,

java基礎學習(六.5)輸入輸出流體系

前言 輸入輸出流的4個抽象基類InputStream/OutputStream  Reader/Writer 4個訪問檔案的節點流:FileInputStream/FileReader  FileOutputStream/FileWriter 處理流的用法:

java基礎學習(六.3)位元組流 字元流(輸入輸出)

前言: 位元組流和字元流的操作方式幾乎相同,區別只是操作的資料單元不同而已 位元組流操作的資料單元是位元組8位,字元流操作的資料單元是字元16位 輸入流 字元輸入流/位元組輸入流原始碼(輸入流的抽象基類) InputStream public abstract class

java基礎學習(六.2)輸入輸出 I/O流

前言 java的IO通過java.io包下的類和介面來支援,包括輸入輸出兩種流,每種流又分為位元組流和字元流, 輸入輸出流:位元組流和字元流 位元組流:以位元組為單位處理輸入輸出 字元流:以字元來處理輸入輸出 java7對原有io進行升級,提供了一系列全新的API放在NIO中

java基礎學習Annotation

前言: jdk5開始,java提供了註解的支援 Annotation:是程式碼裡的特殊標記,這些標記可以在編譯/類載入/執行時被讀取,並執行相應的處理 而基本的註釋程式只在編譯的時處理 Annotation可以修飾什麼? 可以修飾包/類/構造器/方法/成員變數/引數/區域性變

java System解析

System類是一個由final修飾的類,所以無法被繼承,只有一個私有的構造器,所以也無法例項化。 System類所有的屬性和方法都是公有 static修飾的,可以由類名直接呼叫 屬性:          InputStream in; &n

Java System概述/方法

System: 1. 不需要建立物件,都是靜態的方法 2.out 對應的標準輸出流,此流已開啟,並準備好接受輸出資料。 通常,此流對應於顯示輸出或由主機環境或使用者指定的另一個輸出目標。 3. in 標準”輸入流。 該流已經開啟,準備提供輸入資料。 通

Java零基礎入門學習2:變數與變數型別

大家好,歡迎回到我們的Java零基礎課程,今天我們要講的是變數與變數型別。 我們先來回憶一下我們小學時候學的未知數與方程。裡面的XYZ很是煩人。你有沒有想過在做不出題是,想把XYZ變為自己想要的數,那不是很好? 當然,在數學試卷上這麼做,大大的“X”就會出現在卷面上。不過,這可是資訊科,不是數學,在我