《Java編程思想》讀後總結(二)

Java裏的數據類型

Java裏的對象是引用,就像C的指針。對引用的賦值實際就是對指針的賦值,對象自己並無被賦值。java

對象的存儲數組

  1. 寄存器-程序沒法感知寄存器的存在。經過CPU對寄存器操做。
  2. 堆棧-存放對象引用
  3. 堆-存放對象
  4. 常量存儲-存不變常量
  5. 非RAM存儲-存持久化數據

基本數據類型:markdown

基本類型 大小 最小值 最大值 包裝器類型
boolean - - - Boolean
char 16bit Unicode 0 Unicode 2e16-1 Character
byte 8bit -128 +127 Byte
short 16bit -2e15 +2e15-1 Short
int 32bit -2e31 +2e31-1 Integer
long 64bit -2e63 +2e63-1 Long
float 32bit Float
double 64 Double
void - - - Void

類由字段和方法構成ide

static關鍵字

對於類的字段,經過new對象的方式爲這個字段分配存儲空間,這樣才能對字段及方法進行訪問。用static對類的字段和方法進行修飾後,這樣的字段和方法稱爲靜態字段和靜態方法。靜態字段和靜態方法與類的對象不存在綁定關係,便可以在沒有建立對象的狀況下,經過類直接訪問靜態字段和靜態方法。這是因爲靜態對象和靜態方法在編譯期就爲它們建立了存儲空間。函數

編寫一個Java程序

編譯器:ideal工具

一些規則

java程序文件的後綴爲.javathis

每一個.java文件名最多包含一個public類,也能夠沒有public類idea

當指定某個類爲public時,該類的類名必須與文件名相同spa

關於import

寫代碼時,須要用到其餘類庫,最經常使用的就是java自帶的類庫。使用import來引用類庫。一個import的例子:指針

import my.example.java.Test

import的行爲是,在classpath中指定的路徑裏查找my/example/java/Test.class文件,並加載

package

多個java代碼能夠經過package關鍵字申明成一個工具包

初始化與清理

構造器

經過new來建立類的對象。每當調用new來建立對象時,java會調用構造器對象進行初始化。初始化完畢,意味着這個對象已經準備好對外提供服務了。

若是一個類沒有顯式提供構造器,則編譯器會爲該類自動生成一個默認構造器。

構造器採用與類名相同的名稱。

class Rock {
    Rock() { //This is the constructor
        System.out.println("This is the constructor");
    }
}
複製代碼

重載

Java支持構造器和方法的重載(不是重寫override)

區分重載

方法的簽名:方法名+參數列表

經過方法的簽名來區分重載,因此返回類型不做爲區分重載的因素。

this關鍵字

對當前對象的引用

有了this關鍵字能夠實如今構造器中調用其餘重載構造器,如:

class Rock {
    public int id;
    Rock(int id) {
        this.id = id;
    }
    Rock() {
        this(1);
    }
}
複製代碼

初始化

對類變量的初始化有兩種方法:

  • 在申明時直接初始化
  • 顯式初始化
  • 在構造器內進行初始化

初始化順序:

經過new建立對象時,對象的初始化順序:

  1. 對申明的變量進行變量的默認值的初始化:變量的申明能夠散落在類的定義的不一樣位置,但初始化時,會按申明的前後順序,完成初始化而後調用構造函數進行初始化;
  2. 調用構造器:若是變量未在申明時就完成初始化,則能夠經過構造器完成初始化;
  3. 靜態數據的初始化優先於非靜態數據;

初始化例子

public class Rock {

    public int id = 1; //initialization when define 
    public String name;
    public static String greeting1;
    public static String greeting2;
    public static int age = 1000;
    static{
        greeting1 = "Hello"; //explicitly initialization
    }

    Rock(String name) {
        this.name = name; // initialization in constructor
        greeting2 = "Hi";
    }

    public String location1 = "Shanghai";

    public String getName(){
        return name;
    }

    public String location2 = "China";

    public String getLocation(){
        return location1 + " - " + location2;
    }

    public void greeting(){
        System.out.println(this.greeting);
    }

    public static void main(String[] args){
        Rock r = new Rock("Robin");
        System.out.println("Name: " + r.getName());
        System.out.println("Location: " + r.getLocation());
        r.greeting();
    }
}
複製代碼

數組初始化

可變參數列表
相關文章
相關標籤/搜索