Java知識點歸納總結

來源:互聯網
上載者:User

1. 基礎資料型別 (Elementary Data Type)

整形:

byte 1 個位元組

short 2 個位元組

int 4個位元組

long 8個位元組

字元:

char 2個位元組

浮點數:

float 4個位元組

double 8個位元組

布爾:

boolean 1個位元組

2.java 7 新增二進位整數

以0b或者0B開頭

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

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

正無窮大= 一個正數除以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 . Hello.java 會在目前的目錄下組建目錄樹

運行 java 包名字.類名字

8. Java多態中的對象的filed 不具有多態性,如 父類 對象 = new 子類(), 對象.field 是調用的父類的,即使子類中覆蓋了該欄位。

9. instanceof 運算子

格式: 引用變數名 instanceof 類名(或者介面) 他用於判斷前面的對象是否是後面對象的類,子類、實作類別的執行個體,是返回true,否者返回false

10. Java 中基礎資料型別 (Elementary Data Type)和對應封裝類之間的轉化

int a = 1;
Integer A = new Integer(a);
a = A.intValue();

其他的類型也是這樣的。

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 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
System.out.println(s1 == s2);
}
}

12.final修飾的成員變數初始化問題

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

執行個體Field:必須在非靜態初始塊中或聲明該FIeld時指定初始值或構造器中聲明

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

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

15.final 方法不可以重寫,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].getName().equals(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 && obj.getClass() == CacheImmutale.class)
{
CacheImmutale ci = (CacheImmutale)obj;
return name.equals(ci.getName());
}
return false;
}
public int hashCode()
{
return name.hashCode();
}
}

public class CacheImmuteTest
{
public static void main(String[] args)
{
CacheImmutale c1 = CacheImmutale.valueOf("Hello");
CacheImmutale c2 = CacheImmutale.valueOf("Hello");
System.out.println(c1 == c2);
}
}

用緩衝執行個體要看某個對象的使用頻率,若重複使用那就利大於弊,若不經常使用那弊就大於利

還有java提供的java.lang.Integer 建立數值在-128-127之間的數採用緩衝機制的

Integer in2 = Integer.valueOf(6);

Integer in3= Integer.valueOf(6);

in2 == in3 is true;

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

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

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

複製代碼 代碼如下:import java.util.*;

public class DiscernVariable
{
private String prop = "外部類的執行個體變數";
private class InClass
{
private String prop = "內部類的執行個體變數";
public void info()
{
String prop = "局部變數";
System.out.println("外部類的field值:" + DiscernVariable.this.prop);
System.out.println("內部類的field值:" + this.prop);
System.out.println("局部變數的值:" + prop);
}
}
public void test()
{
InClass in = new InClass();
in.info();
}
public static void main(String[] args)
{
new DiscernVariable().test();
}
}

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

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

訪問非靜態內部類:outclass.Inclass varname = new outclass().new InClass();
訪問靜態內部類: outclass.Inclass varname = new outclass.Inclass();複製代碼 代碼如下:import java.util.*;

class Out
{
class In
{
public In()
{
System.out.println("非靜態內部類構造器");
}
}
}

public class CreatInnerInstance
{
public static void main(String[] args)
{
Out.In in = new Out().new In();
/*
以上的代碼可分開寫為:
Out.In in;
Out out = new Out();
in = out.new In();
*/
}
}

class SubClass extends Out.In
{
//顯示定義SubClass的構造器
public SubClass(Out out)
{
//通過轉入的Out對象顯示調用In的構造器
out.super();
}
}

複製代碼 代碼如下:import java.util.*;

class StaticOut
{
static class StaticIn
{
public StaticIn()
{
System.out.println("靜態內部類構造器");
}
}
}

public class CreatStaticInnerInstance
{
public static void main(String[] args)
{
StaticOut.StaticIn in = new StaticOut.StaticIn();
/*
以上的代碼可分開寫為:
StaticOut.StaticIn in;
in = new StaticOut.StaticIn();
*/
}
}

class SubClass extends StaticOut.StaticIn
{
//無須建立內部類執行個體
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.