很多初學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
{
//無須創建內部類實例
}