第79節:Java中一些要點
前言
一些知識點忘了沒,可以通過一個點引出什麼內容呢?做出自己的思維導圖,看看自己到了哪一步了呢
內容
如果有人問jre,jdk,jvm是什麼,你怎麼回答呢?
jre的英文是java runtime environment ,包含有java虛擬機器,庫函式,java執行應用程式和applet的要的檔案.java 執行環境功能主要有載入程式碼,校驗程式碼,執行程式碼.jre是java執行時環境,有jvm和其他一些java核心api,只要有jre就可以執行java程式.jre含jvm,執行java程式需要jre
jdk的英文是java development kit包含jre,編譯器和調式器等.jdk是jre的超集.要進行開發java程式需要安裝jdk.
jvm是一種規範,是一個虛擬的用於執行位元組碼的計算機.jvm是負責java位元組碼解釋執行的,jvm實現了跨平臺,可移植的功能.
一次編譯,隨處執行
源程式(.java檔案)->java編譯器->位元組碼(.class檔案)
jre,java執行環境,類裝載器,位元組碼校驗器,直譯器.
什麼是變數?
變數是用來操作儲存空間中的資料的,是代指儲存空間,位置一定,儲存空間中的資料型別不確定,就有了資料型別,放置的值也不確定.型別可以是基本型別,也可以是引用型別.
變數:區域性變數(方法或語句塊內部定義的變數),例項變數(方法外部,類的內部定義的變數),靜態變數(使用static).
那麼講了java的變數,那麼講究資料型別,在java中,資料型別分為兩大類,一為基本資料型別,二位引用資料型別.
資料型別的定義了8種基本資料型別,我們可以分為3類來了解,一種為邏輯型別,一種的文字型別,一種是數值型別:
邏輯型別記住是boolean就行,文字型別記住是char型別就行,而數值型別記住順序一下子就可以記住,byte,short,int,long,foloat,double,從小到大的順序.
型別型別分基本資料型別和引用資料型別
基本資料型別分,數值型,字元型,布林型.
數值型分,整數型別和浮點型別.那麼整數型別有byte,short,int,long,浮點型別有float,double.
float為單精度型別,double為雙精度型別.
字元型的有char. 布林型的有boolean.
boolean型別有兩個值為true和false.用來判斷邏輯條件的,一般用於程式流程控制.
字元型,單引號用來表示字元型別的常量,`a`為一個字元.char型別可以在unicode編碼表中的 字元.char可以用來整數運算.
引用資料型別分,類class,介面interface,陣列
注意:引用型別指的就是物件的地址
型別 | 佔用儲存空間 | 表數範圍 |
---|---|---|
byte |
1位元組 | -128到127 |
short |
2位元組 | -215到214 |
int |
4位元組 | 略 |
long |
8位元組 | 略 |
float |
4位元組 | 略 |
double |
8位元組 | 略 |
進位制數
十進位制整數,八進位制整數(以 0 開頭),十六進位制數(以0x 或 0X 開頭).
字符集
iso8859-1->big5,gb2312,unicode gb2312->gbk
方法:定義類和物件的動態行為特徵的抽象
運算子
算術運算子: +,-,*,/,%,++,--
關係運算子: >,<,>=,<=,==,!= instanceof
邏輯運算子: &&,||,!
位運算子: &,|,^,~ , >>,<<,>>>
物件導向和麵向過程
程式導向的思維模式是比較簡單的線性思維.
物件導向的思維模式適合處理複雜的問題.
構造器用於構造類的例項.
構造器的作用就是初始化一些資料.
static
用static宣告的成員變數為靜態成員變數,用static宣告的方法為靜態方法.
記憶體
棧:區域性變數放在棧中,棧是一種連續的記憶體空間,由系統分配.
堆:通過new的物件都在,是不連續的記憶體空間,速度慢.
方法區:用來存放程式中不變和唯一的內容,方法區也是堆,用於存放類的程式碼資訊,static變數,和常量池.
// 常量池
public class Student {
String name;
int age;
public void study(){
System.out.println("學習");
}
public void sayHello(String sname){
System.out.println("大帥哥");
}
}
public class Test{
public static void main(String[] args){
// 類載入器Class Loader
// 堆中建立一個student物件
Student s1 = new Student();
// 建立字串常量,放入常量池中
s1.name = "大帥哥";
// 通過s1找到student物件
s1.study();
}
}
小結
棧自動分配連續的記憶體空間,後進先出,放入的都是區域性變數,堆是不連續的記憶體空間,不像棧按照子彈夾一樣,方法區也是堆,裡面存放的都是類的程式碼資訊,static 變數和常量池.
抽象方法
抽象方法用abstract修飾,沒有方法體,需要用子類來重寫
記住:抽象類不能進行例項化,抽象類可以有屬性,方法和構造方法,但構造方法不能用new例項,需要用來被子類呼叫的.抽象類是用來被繼承的,抽象方法必須由子類實現.
定義介面:
格式:
public或預設 interface 介面名 extends (介面可以多)
{
public static final 常量
public abstract 方法
}
內部類
一個類放在另一個類的內部定義為內部類.
內部類用來幹嘛的?
提供更好的封裝,讓外部類直接進行訪問,內部類可以訪問外部類的私有屬性.而外部類不能訪問內部類的內部屬性.
內部類分:匿名內部類,成員內部類,非靜態內部類
非靜態內部類可以使用外部類的成員,而外部類不能訪問非靜態內部類的成員
靜態成員不能訪問非靜態成員
new InnerClass()
Outer.inner name = OuterObject.new Inner()
this.變數名
外部類名.this.變數名
訪問修飾符:
private在同一個類中
default在同一個類中,在同一個包中
protected在同一個類中,在同一個包中,在子類中
public 公共都可以
多型
指不同類的物件對同一件事情進行不同的效果反應
abstract class Student{
public abstract void study();
}
// 1
class Student1 extends Student {
@Override
public void study(){
System.out.println("學習1");
}
}
class Student2 extends Student {
@Override
public void study(){
System.out.println("學習2");
}
}
多型的特點:
繼承,有方法的重寫,父類引用指向子類物件引用
基本資料型別的包裝類
基本資料型別 | 包裝類 |
---|---|
byte | Byte |
short | Short |
char | Character |
int | Integer |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
StringBuilder 與 StringBuffer 區別
StringBuilder 可變字串,執行緒不太安全,效率高
StringBuffer 可變字串,執行緒安全,效率低
String 不可變字串,final修飾了string類,所以不能被繼承,修飾了char value[],所以字串的值不可以改變,記住final沒有修飾string的引用,就會存在記憶體空間的浪費.
string
String name = "大哥";
io流
io流的分類為輸入流和輸出流
按資料分
位元組流是按照二進位制,字元流是按照文字檔案.
位元組流:
輸入流 InputStream
read(byte[] b)
read(byte[] b, int off, int len)
FileInputStream()
InputStream FileInputStream
輸出流:OutputStream
write(byte[] b)
write(byte[] b, int off, int len)
FileOutputStream
OutputStream FileOutputStream
字元流
輸入流 Reader
read(char[] c)
read(char[] c, int off, int len)
FileReader()
Reader FileReader
輸出流 Writer
write(char[] c)
write(char[] c, int off, int len)
FileWriter()
Writer FileWriter
處理流
緩衝流
位元組緩衝流
BufferedInputStream
BufferedOutputStream
字元緩衝流
BufferedReader
BufferedWriter
輸入流:InputStream
輸出流:OutputStream
位元組流搞定一切
BufferedInputStream -> FileInputStream -> File
BufferedOutputStream -> FileOutputStream -> File
通過解碼
InputStreamReader
OutputStreamWriter
通過解碼變字元流,只能處理純文字
BufferedReader -> FileReader -> File
BufferedWriter -> FileWriter -> File
Reader Writer
執行緒
Thread
sleep()
yield()
stop()
start()
interrpet()
...
結言
一些你需要重新複習的一些基礎內容,寫出自己的思維導圖看看哦!
達叔小生:往後餘生,唯獨有你
You and me, we are family !
90後帥氣小夥,良好的開發習慣;獨立思考的能力;主動並且善於溝通
簡書部落格: 達叔小生
https://www.jianshu.com/u/c785ece603d1
結語
- 下面我將繼續對 其他知識 深入講解 ,有興趣可以繼續關注
- 小禮物走一走 or 點贊