Java學習中被忽略的知識點與技巧(1)

JVM:java virtual machine
JRE:java runtime environment = JVM + java系統類庫,運行java程序
JDK:java development kit = JRE + 編譯/運行等命令工具

運行java的最小環境:JRE
開發java的最小環境:JDK

環境變量:    JAVA_HOME: Path for jdk
    CLASS_PATH: Path to search for Class, '.' default
    PATH: Path for /jdk/bin

Development Steps:
    new Java project
    new Java package
    new Java class

當且僅當運算數中有long時,運算結果纔是long
long dis1 = 1000000000*100000000L;    //no overflow, 100000000000000000
long dis2 = 1000000000*100000000;    //overflow, 1569325056

運算從前向後進行,所以最好是第一個數字是Long
long dis1 = 100000000*10000000000*10000000L;    //overflow,-15304949760000000 
long dis2 = 100000000L*100000000000*10000000;    //no overflow,1864712049423024128

System.time.currentTimeMillis: Milliseconds from start of 1970

Default type of decimal is double. For float constant a 'f' or 'F' is required.

浮點數會產生舍入誤差,因爲二進制表示有誤差。完全不能接收誤差的,使用BigDecimal

數據從小到大自動轉換,從大到小強制轉換

邏輯運算是短路的

加法運算符是從前向後的,所以
    System.out.println(11+22+"");    //輸出33
    System.out.println(""+11+22);    //輸出1122
變量作用域:到下面一個大括號。
相同作用域中不能有重名變量

switch語句:
    優點:簡介快速
    缺點:只能判斷整數相等

while和do-while:是否至少執行一次

返回每月天數的函數
switch(month) {
        case 1: case 3: case 5: case 7: case 8: case 10: case 12:
            return 31;
        case 2:
            return 28;
        default:
            return 30;    
        }

Math.random(); 0-1之間的隨機數

數組arr = {1,2,3};只能用於初始化

數組訪問:arr.length

數組的複製:System.arraycopy(src, srcPos, dest, destPos, length);
    b = Arrays.copyOf(original, newLength),多出來的length補默認值0

數組擴容:使用Arrays.copyOf方法進行擴容

方法的簽名:方法名+參數類型
方法重載的意義:降低用戶的使用負擔,對於用戶而言更加優雅

補充:
同一個文件中能夠包含多個類,並列關係
public修飾的類只能有一個,且必須與文件名相同

構造方法特點:
    給成員變量賦值
    構造方法必須與類名相同
    沒有返回類型
    默認提供,如果自己提供了,則沒有默認的無參構造方法

this:只能用在類的非靜態方法中,指當前對象
this的用法:    
    this.variable:訪問成員變量
    this.function:一般不用

如果構造函數出入的形參名字和成員變量一樣,那麼必須用this調用成員變量
技巧:可以使用this()調用本類的構造函數,實現不同構造函數

內存管理:JVM進行
堆:對象和成員變量
棧:局部變量
方法區:.class字節碼文件(包括方法)

基本類型的等號是直接賦值
對象名的等號是複製引用,指向同一個文件,並非在拷貝對象,只是在拷貝引用

空指針異常:
Student[] s = new Student[5];
System.out.println(s[0]);
定義了一個Student類的數組,每個都指向null        

也可以給引用類型的數組按下列語法賦值:
    Student[] student = new Student[]{
        new Student(name, age, address),    
        new Student(name, age, address),
        new Student(name, age, address),    
        }

Java中,一個類只具有一個父類,不能繼承多個父類。即不支持多繼承

繼承具有傳遞性

java規定:構造子類之前,必須先構造父類
    如果子類中沒有調用父類的構造方法,則默認super調用父類的無參構造方法
    否則如果手動調用了super,則不默認調用

super的用法:
    super.成員變量名
    super.方法名
    super()調用父類的構造方法

幫助理解的例子:studnet繼承person,則在student中賦值:
    this.studentid = 1120172954
    super.name = "William"
(但是,其實用this.studentid也可以修改該屬性)

發佈了86 篇原創文章 · 獲贊 59 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章