Java知識點總結

才智咖 人氣:1.42W

很多初學Java的新人不知道哪些java基礎知識必須掌握,下面本站小編為大家精心整理的Java知識點總結,方便大家學習!

Java知識點總結

1. 基本資料型別

整形:

byte 1 個位元組

short 2 個位元組

int 4個位元組

long 8個位元組

字元:

char 2個位元組

浮點數:

float 4個位元組

double 8個位元組

布林:

boolean 1個位元組

7 新增二進位制整數

以0b或者0B開頭

中字元時16位的Unicode編碼方式,格式是'uXXXX',其中xxxx代表一個十六進位制整數

中規定了正無窮大、負無窮大和零

正無窮大= 一個正數除以0

負無窮大= 一個負數除以零

0.0 除以0.0 或者 對一個負數開方 得到一個非數

5. 在java中布林型別只能是true和false

6. 在java中沒有多維陣列

看似像C語言中的多維陣列不是真正的陣列,比如 a[3][4] , a[0] a[1] a[2] 是真實存在的,裝的是地址,和c語言中動態分配為的陣列一樣

int [][] b = new int[3][4]

7. Java中帶包的編譯方法

javac -d . 會在當前目錄下生成目錄樹

執行 java 包名字.類名字

8. Java多型中的物件的filed 不具有多型性,如 父類 物件 = new 子類(), 物件d 是呼叫的父類的,即使子類中覆蓋了該欄位。

9. instanceof 運算子

格式: 引用變數名 instanceof 類名(或者介面) 他用於判斷前面的物件是否是後面物件的類,子類、實現類的例項,是返回true,否者返回false

10. Java 中基本資料型別和對應封裝類之間的轉化

int a = 1;

Integer A = new Integer(a);

a = alue();

其他的型別也是這樣的。

11.單例(singleton)類 例子

複製程式碼 程式碼如下:

class Singleton

{

private static Singleton instance;

private Singleton(){}

public static Singleton getInstance()

{

if(instance == null)

{

instance = new Singleton();

}

return instance;

}

public static void main(String[] args)

{

Singleton s1 = nstance();

Singleton s2 = nstance();

tln(s1 == s2);

}

}

l修飾的成員變數初始化問題

類Field: 必須在靜態初始塊中或宣告該FIeld時指定初始值

例項Field:必須在非靜態初始塊中或宣告該FIeld時指定初始值或構造器中宣告

l 變數必須顯式初始化,系統不會對final變數進行隱式初始化

會使用常量池來管理曾經用過的字串直接常量,例如:String a = "java"; ,系統把常量字串“java”存在常量池,當再次執行 String b = "java"; a == b 是true

l 方法不可以重寫,final類不能被繼承

如果用private 方法 和 final private 是一樣的

若果是用final修飾的方法在子類中出現,那是子類新定義的,與父類沒有關係

16.不可變類:建立後該類的Field是不可改變的。java提供了8個基本變數的包裝類和string都是不可改變類。

17.快取例項的不可改變類

複製程式碼 程式碼如下:

class CacheImmutale

{

private static int MAX_SIZE = 10;

private static CacheImmutale[] cache = new CacheImmutale[MAX_SIZE];

private static int pos = 0;

private final String name;

private CacheImmutale(String name)

{

this. name = name;

}

public String getName()

{

return name;

}

public static CacheImmutale valueOf(String name)

{

for(int i = 0; i < MAX_SIZE; ++i)

{

if(cache[i] != null && cache[i]ame()ls(name))

return cache[i];

}

if(pos == MAX_SIZE)

{

cache[0] = new CacheImmutale(name);

pos = 1;

}

else

{

cache[pos++] = new CacheImmutale(name);

}

return cache[pos -1];

}

public boolean equals(Object obj)

{

if(this == obj)

return true;

if(obj != null && lass() == s)

{

CacheImmutale ci = (CacheImmutale)obj;

return ls(ame());

}

return false;

}

public int hashCode()

{

return Code();

}

}

public class CacheImmuteTest

{

public static void main(String[] args)

{

CacheImmutale c1 = eOf("Hello");

CacheImmutale c2 = eOf("Hello");

tln(c1 == c2);

}

}

用快取例項要看某個物件的使用頻率,若重複使用那就利大於弊,若不經常使用那弊就大於利

還有java提供的ger 建立數值在-128-127之間的數採用快取機制的

Integer in2 = eOf(6);

Integer in3= eOf(6);

in2 == in3 is true;

18. static 和 abstract 不能同時修飾一個方法,沒有類抽象方法

19.一個類可以又一個父類,實現多個介面,介面中Filed是public 、static、final的,方法是public abstract的

20.非靜態內部類的`方法訪問某個變數,搜尋順序為:先內部類中方法內-> 內部類 -> 外部類中如果都找不到則出現編譯錯誤

複製程式碼 程式碼如下:

import .*;

public class DiscernVariable

{

private String prop = "外部類的例項變數";

private class InClass

{

private String prop = "內部類的例項變數";

public void info()

{

String prop = "區域性變數";

tln("外部類的field值:" + );

tln("內部類的field值:" + );

tln("區域性變數的值:" + prop);

}

}

public void test()

{

InClass in = new InClass();

();

}

public static void main(String[] args)

{

new DiscernVariable()();

}

}

21.非靜態內部類不能有靜態方法、靜態Field、靜態初始化塊

22.在外部類之外訪問內部類

訪問非靜態內部類:ass varname = new outclass() InClass();

訪問靜態內部類: ass varname = new ass();

複製程式碼 程式碼如下:

import .*;

class Out

{

class In

{

public In()

{

tln("非靜態內部類構造器");

}

}

}

public class CreatInnerInstance

{

public static void main(String[] args)

{

in = new Out() In();

/*

以上的程式碼可分開寫為:

in;

Out out = new Out();

in = In();

*/

}

}

class SubClass extends

{

//顯示定義SubClass的構造器

public SubClass(Out out)

{

//通過轉入的Out物件顯示呼叫In的構造器

r();

}

}

複製程式碼 程式碼如下:

import .*;

class StaticOut

{

static class StaticIn

{

public StaticIn()

{

tln("靜態內部類構造器");

}

}

}

public class CreatStaticInnerInstance

{

public static void main(String[] args)

{

icIn in = new icIn();

/*

以上的程式碼可分開寫為:

icIn in;

in = new icIn();

*/

}

}

class SubClass extends icIn

{

//無須建立內部類例項

}

TAGS:知識點 Java