天天看點

java之路,基礎知識3

反碼:正數的反碼和原碼相同,負數的反碼是原碼取反,但符号位不變。

補碼:整數的補碼和原碼一樣,負數的補碼是反碼加1

移位運算:

數            x          x>2              x>>>2

17      00010001    00 01000100      00000100 01     00000100 01

-17     11101111    11 10111100      11111011 11     00111011 11

面向過程和面向對象的差別:

    過程化程式設計先确定算法,再确定資料結構

    面向過程設計先建立資料結構,再确定算法

類:把相似的對象歸成一類,類就是一個模闆,它定義了一個通用于特定種類的所有對象的狀态和方法

      類是建立對象的模闆,對象是類的執行個體

class Point

{

 int x,y;

 void output()

 {

  System.out.println(x);

  System.out.println(y);  

 }

 public static void main(String[] args)

  Point pt = new Point();

  pt.x = 10;

  pt.y = 20;

  pt.output(); 

}

對象的初始化需要new關鍵字

構造函數:為類的對象定義初始化狀态,不能直接調用構造方法,必須通過new關鍵字來調用。java的類都有構造方法,沒有寫的,編譯器會提供一個預設的預設構造方法。

預設構造方法中各種資料的預設值:數值型 0, boolean  false,  char  '\0',   對象   null

當類中定義了一個構造函數,無論是有參數的還是無參數的,系統都不提供構造函數。

 Point()

 x=5;

 y=5;

 Point(int a, int b)

 x=a;

 y=b;

函數重載:名稱相同,但是參數的個數,或者參數的形式不同,這樣就構成了函數的重載。系統會根據調用時傳遞的參數類型來确定調用哪個函數。

 Point(int a, int b)

Point()

this(1,1);   //this 前面不能有東西,必須是第一句話

 void output(int x, int y)                //參數x與成員變量同名沖突 ,導緻沒有指派成功

    x = x;          //應該使用this.x = x;

   y = y;           //應該使用this.y = y;

  pt.output(3,3); 

  Point pt1 = new Point();

  pt.x = 6;

  pt1.x = 7;

  System.out.println(pt.x);             //        6

  System.out.println(pt1.x);           //        7

this變量代表對象本身,當類中有兩個同名變量,一個屬于類(全局變量),一個屬于方法(局部變量),使用this變量來區分。

this變量可以簡化構造函數的調用,無參構造函數調用有參構造函數

類的方法在記憶體中隻有一份拷貝,但是類的變量在每個對象中都有一份拷貝

static 方法,類的方法,屬于類,而不是屬于某一個對象。 調用的時候直接用類名調用,在類加載時就配置設定了空間。

static 變量,類的變量,屬于類。static方法隻能通路static變量,而非靜态的方法既可以調用靜态變量,又可以調用非靜态變量

常量定義 fianl  double  PI =  3.1415926;  常量在定義時必須初始化,或者在構造函數中初始化。

類的繼承: extends 關鍵字,被繼承的叫做基類或者父類, 繼承的叫做子類。java不允許多繼承

class Animal

int height;

void eat();{}

void breath(){System.out.println("animal');}

class Fish extends Animal

  super.breath();

  void breath(){System.out.println("fish);}

子類的方法覆寫了父類的方法,如果要通路父類的方法,那麼就調用super方法通路父類中被隐藏的方法。每一個子類在初始化的時候都隐含的調用super(),這就是調用了父類中一個不帶參數的構造方法,如果父類中沒有相應的方法,那麼就會出錯。構造方法不可以重載

instanceof  判斷一個對象是否是類的執行個體 

class Inter

  public static void main(String[]  args)

Animal  an = new Animal();

  if(an  instanceof  Animal ){}