牛客網刷題錯題記錄
阿新 • • 發佈:2018-12-12
目錄
Java
1.靜態內部類
靜態內部類可以訪問外圍類的靜態資料,包括私有資料,但不能訪問非靜態資料;
非靜態內部類可以直接訪問外圍類的資料,包括私有資料
package test; public class test {//外部類 int a = 1; static int b = 9; private String str = "test"; private static int c = 33; class innerClass {//非靜態內部類 void method(){//可直接訪問外部類資料,包括靜態資料,私有資料 System.out.println(a); System.out.println(b); System.out.println(str); System.out.println(c); } } static class staticInnerClass {//靜態內部類 void method(){ System.out.println(a);//default訪問不了 System.out.println(b);//可以訪問靜態資料 System.out.println(c);//也可以訪問私有的靜態資料 System.out.println(str);//但是非靜態的訪問不了 } } }
2.關於String,StringBuilder以及StringBuffer
- 對String物件的任何改變都不影響到原物件,相關的任何change操作都會生成新的物件
- java中的字串儲存在字串常量區,不會改變,發生改變是會新建立一個物件
- StringBuffer是執行緒安全的
- StringBuilder是執行緒不安全的
- 可以修改StringBuffer和StringBuilder的內容
- StringBuilder和StringBuffer底層都是以字元陣列存放的,可以修改內容
3.java語言特性
- java致力於檢查程式在編譯和執行時的錯誤
- java能執行虛擬機器實現跨平臺
- java自己操作記憶體減少了記憶體出錯的可能性
- java還實現了真陣列,避免了覆蓋資料的可能性
- ps:記憶體連續就是真陣列,記憶體不連續就是假陣列
4.非抽象類實現介面的問題
- 非抽象類實現介面後,必須實現介面中的所有抽象方法,除了abstract外,方法頭不一定一致
- 方法名相同,引數型別相同
- 子類返回型別小於等於父類方法返回型別
- 子類丟擲異常小於等於父類方法丟擲異常
- 子類訪問許可權大於等於父類方法訪問許可權
5.互斥鎖
- synchronized關鍵字是同步程式碼塊關鍵字,對物件加互斥鎖
6. Socket 通訊程式設計
- 服務端通過new ServerSocket()建立
- 伺服器端通過TCP連線物件呼叫accept()方法建立通訊的Socket物件
- 客戶端通過new Socket()方法建立通訊的Socket物件
Socket套接字
就是源Ip地址,目標IP地址,源埠號和目標埠號的組合
伺服器端:ServerSocket提供的例項
ServerSocket server= new ServerSocket(埠號)
客戶端:Socket提供的例項
Socket soc=new Socket(ip地址,埠號)
7.類的初始化順序
- 初始化父類中的靜態成員變數和靜態程式碼塊
- 初始化子類中的靜態成員變數和靜態程式碼塊
- 初始化父類中的普通成員變數和程式碼塊,在執行父類中的構造方法
- 初始化子類中的普通成員變數和程式碼塊,在執行子類中的構造方法
8.變數的儲存區
class A {
private String a = "aa";//類的成員變數
public boolean methodB() {
String b = "bb";//區域性變數
final String c = "cc";//區域性變數
return false;
}
}
- 類中的成員變數,存放在堆區
- 堆區:只存放類物件,執行緒共享;
- 方法中的區域性變數,存放在棧區
- 棧區:存放方法區域性變數,基本型別變數區、執行環境上下文、操作指令區,執行緒不共享;
- 方法區:又叫靜態儲存區,存放class檔案和靜態資料,執行緒共享;
9.jvm執行緒共享問題
- 程式計數器是一個比較小的記憶體區域,用於指示當前執行緒所執行的位元組碼執行 到了第幾行,是執行緒隔離的
- 原則上講,所有的物件都是在堆區上分配記憶體,是執行緒之間共享的
- Java方法執行記憶體模型,用於儲存區域性變數,運算元棧,動態連結,方法出口等資訊,是執行緒隔離的
- 方法區:
- 1.又叫靜態區,跟堆一樣,被所有的執行緒共享。方法區包含所有的class和static變數。
- 2.方法區中包含的都是在整個程式中永遠唯一的元素,如class,static變數。
10.