第79節:Java中一些要點

達叔小生發表於2019-01-29

標題圖

第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 點贊

相關文章