java重點(diǎn)知識總結
java是一門(mén)軟件語(yǔ)言,學(xué)習軟件技術(shù)的同學(xué)們都要學(xué)會(huì )JAVA編程技術(shù)!以下是java重點(diǎn)知識總結,一起來(lái)看看吧!
java重點(diǎn)知識總結
1. 基本數據類(lèi)型
整形:
byte 1 個(gè)字節
short 2 個(gè)字節
int 4個(gè)字節
long 8個(gè)字節
字符:
char 2個(gè)字節
浮點(diǎn)數:
float 4個(gè)字節
double 8個(gè)字節
布爾:
boolean 1個(gè)字節
2.java 7 新增二進(jìn)制整數
以0b或者0B開(kāi)頭
3.java中字符時(shí)16位的Unicode編碼方式,格式是'uXXXX',其中xxxx代表一個(gè)十六進(jìn)制整數
4.java中規定了正無(wú)窮大、負無(wú)窮大和零
正無(wú)窮大= 一個(gè)正數除以0
負無(wú)窮大= 一個(gè)負數除以零
0.0 除以0.0 或者 對一個(gè)負數開(kāi)方 得到一個(gè)非數
5. 在java中布爾類(lèi)型只能是true和false
6. 在java中沒(méi)有多維數組
看似像C語(yǔ)言中的多維數組不是真正的數組,比如 a[3][4] , a[0] a[1] a[2] 是真實(shí)存在的,裝的是地址,和c語(yǔ)言中動(dòng)態(tài)分配為的數組一樣
int [][] b = new int[3][4]
7. Java中帶包的編譯方法
javac -d . Hello.java 會(huì )在當前目錄下生成目錄樹(shù)
運行 java 包名字.類(lèi)名字
8. Java多態(tài)中的對象的filed 不具有多態(tài)性,如 父類(lèi) 對象 = new 子類(lèi)(), 對象.field 是調用的父類(lèi)的,即使子類(lèi)中覆蓋了該字段。
9. instanceof 運算符
格式: 引用變量名 instanceof 類(lèi)名(或者接口) 他用于判斷前面的對象是否是后面對象的類(lèi),子類(lèi)、實(shí)現類(lèi)的實(shí)例,是返回true,否者返回false
10. Java 中基本數據類(lèi)型和對應封裝類(lèi)之間的轉化
int a = 1;
Integer A = new Integer(a);
a = A.intValue();
其他的類(lèi)型也是這樣的。
11.單例(singleton)類(lèi) 例子
復制代碼 代碼如下:
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修飾的成員變量初始化問(wèn)題
類(lèi)Field: 必須在靜態(tài)初始塊中或聲明該FIeld時(shí)指定初始值
實(shí)例Field:必須在非靜態(tài)初始塊中或聲明該FIeld時(shí)指定初始值或構造器中聲明
13.Final 變量必須顯式初始化,系統不會(huì )對final變量進(jìn)行隱式初始化
14.java會(huì )使用常量池來(lái)管理曾經(jīng)用過(guò)的字符串直接常量,例如:String a = "java"; ,系統把常量字符串“java”存在常量池,當再次執行 String b = "java"; a == b 是true
15.final 方法不可以重寫(xiě),final類(lèi)不能被繼承
如果用private 方法 和 final private 是一樣的`
若果是用final修飾的方法在子類(lèi)中出現,那是子類(lèi)新定義的,與父類(lèi)沒(méi)有關(guān)系
16.不可變類(lèi):創(chuàng )建后該類(lèi)的Field是不可改變的。java提供了8個(gè)基本變量的包裝類(lèi)和string都是不可改變類(lèi)。
17.緩存實(shí)例的不可改變類(lèi)
復制代碼 代碼如下:
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);
}
}
用緩存實(shí)例要看某個(gè)對象的使用頻率,若重復使用那就利大于弊,若不經(jīng)常使用那弊就大于利
還有java提供的java.lang.Integer 創(chuàng )建數值在-128-127之間的數采用緩存機制的
Integer in2 = Integer.valueOf(6);
Integer in3= Integer.valueOf(6);
in2 == in3 is true;
18. static 和 abstract 不能同時(shí)修飾一個(gè)方法,沒(méi)有類(lèi)抽象方法
19.一個(gè)類(lèi)可以又一個(gè)父類(lèi),實(shí)現多個(gè)接口,接口中Filed是public 、static、final的,方法是public abstract的
20.非靜態(tài)內部類(lèi)的方法訪(fǎng)問(wèn)某個(gè)變量,搜索順序為:先內部類(lèi)中方法內-> 內部類(lèi) -> 外部類(lèi)中如果都找不到則出現編譯錯誤
復制代碼 代碼如下:
import java.util.*;
public class DiscernVariable
{
private String prop = "外部類(lèi)的實(shí)例變量";
private class InClass
{
private String prop = "內部類(lèi)的實(shí)例變量";
public void info()
{
String prop = "局部變量";
System.out.println("外部類(lèi)的field值:" + DiscernVariable.this.prop);
System.out.println("內部類(lèi)的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.非靜態(tài)內部類(lèi)不能有靜態(tài)方法、靜態(tài)Field、靜態(tài)初始化塊
22.在外部類(lèi)之外訪(fǎng)問(wèn)內部類(lèi)
訪(fǎng)問(wèn)非靜態(tài)內部類(lèi):outclass.Inclass varname = new outclass().new InClass();
訪(fǎng)問(wèn)靜態(tài)內部類(lèi): outclass.Inclass varname = new outclass.Inclass();
復制代碼 代碼如下:
import java.util.*;
class Out
{
class In
{
public In()
{
System.out.println("非靜態(tài)內部類(lèi)構造器");
}
}
}
public class CreatInnerInstance
{
public static void main(String[] args)
{
Out.In in = new Out().new In();
/*
以上的代碼可分開(kāi)寫(xiě)為:
Out.In in;
Out out = new Out();
in = out.new In();
*/
}
}
class SubClass extends Out.In
{
//顯示定義SubClass的構造器
public SubClass(Out out)
{
//通過(guò)轉入的Out對象顯示調用In的構造器
out.super();
}
}
復制代碼 代碼如下:
import java.util.*;
class StaticOut
{
static class StaticIn
{
public StaticIn()
{
System.out.println("靜態(tài)內部類(lèi)構造器");
}
}
}
public class CreatStaticInnerInstance
{
public static void main(String[] args)
{
StaticOut.StaticIn in = new StaticOut.StaticIn();
/*
以上的代碼可分開(kāi)寫(xiě)為:
StaticOut.StaticIn in;
in = new StaticOut.StaticIn();
*/
}
}
class SubClass extends StaticOut.StaticIn
{
//無(wú)須創(chuàng )建內部類(lèi)實(shí)例
}
【java重點(diǎn)知識總結】相關(guān)文章:
java面試知識點(diǎn)總結02-17
java集合知識點(diǎn)總結02-17
java框架知識點(diǎn)總結02-17
java基礎知識點(diǎn)總結02-17
初中政治重點(diǎn)知識總結精選03-22
《離騷》重點(diǎn)知識11-29
高一政治重點(diǎn)知識總結03-29