JAVA基礎(一)--- 基礎語法篇

很久沒有寫博客了,,大四狗真的好忙,大學也快畢業啦,疫情期間,在家裏忙着弄畢設,之後會定時更新博客😁 武漢加油!!!中國加油!!!java

1、JAVA概述

一、概述

Java於1990年末由Sun公司的詹姆斯高斯林團隊開發,原名Oak;1995年改名爲JAVA;後於2009年被Oracle公司收購。Java的三個方向:JAVASE;JAVAEE;JAVAME。數組

二、Java語言的特色

面向對象,跨平臺等。網絡

三、跨平臺,Java爲何能夠跨平臺?

跨平臺指的是跨操做系統,常見的操做系統有Windows,Linux,MacOS等操做系統。Java號稱一次編譯,處處執行,那麼Java語言是如何實現跨平臺的呢?緣由就在於Java引入了JVM機制,JVM(Java Virtual Machine )即Java虛擬機。JVM是Java跨平臺的核心,Java程序通過編譯後生成字節碼文件,而後字節碼文件會加載到JVM上運行將字節碼文件翻譯爲操做系統能夠理解的指令,JVM機制很好的屏蔽了底層操做系統的差別性,這樣就實現了Java的跨平臺。值得注意的是,Java是跨平臺的,可是JVM不是跨平臺的,不一樣的操做系統有不一樣的JVM,JVM是一個機制,不一樣的公司會研發本身的JVM,如IBM等大型公司都有本身的JVM,目前市面上最多見的仍是Sun公司的HotSpot版本。函數

java跨平臺示意圖

2、基礎知識

一、關鍵字

Java內置了已經定義好的關鍵字this

用於定義數據類型的關鍵字
class interface byte short int long
float double char boolean void enum
用於定義數據類型值的關鍵字
true false null
用於定義流程控制的關鍵字
if else switch case default while
do for break continue return
用於定義訪問權限修飾符的關鍵字
private protected public
用於定義類、函數、變量修飾符的關鍵字
abstract final static synchronized
用於定義類與類之間關係的關鍵字
extends implements
用於定義創建實例、判斷實例的關鍵字
new this super instanceof
用於異常處理的關鍵字
try catch finally throw throws
用於包的關鍵字
package import
其餘修飾符關鍵字
native strictfp transient volatile assert

二、計算機中數據的表現形式

  • 二進制編碼

  • 碼錶spa

    編碼 描述 佔用字節
    Latin-1 也叫ASCII或ISO8859-1 只有英文、數字、常見符號 歷史上出現最先的碼錶 一個字符佔用一個字節
    GB2312 兼容Latin-1 在Latin-1的基礎上增長了經常使用漢字 由中國國家標準定義 一個字符佔用兩個字節
    GBK 兼容GB2312,增長了更多的漢字 由中國國家標準定義 一個字符佔用兩個字節
    unicode編碼 是一種映射規則,將全世界全部的字符都對應到一個數字上 只是爲每一個符號指定了一個編碼,並無指定如何映射成二進制
    Utf-16/utf-32 兼容latin1 是unicode編碼的實現,佔用2/4個字節 將unicode定義的符號對應的數字轉爲定長二進制來表明該符號 java語言的底層使用utf-16來表明字符
    Utf-8 兼容latin1 是unicode編碼的實現,是一種變長的編碼形式,用1至4個字節來表示符號,經常使用符號用1個字節表示,次經常使用符號用2個字節,很是用符號用3個字節表示,極特殊符號用4個字節表示。 其中漢字在utf-8碼錶中佔3個字節。 將unicode定義的符號對應的數字轉爲變長二進制來表明該符號,節省空間,一般在將數據寫出磁盤 經過網絡發送等操做時優先使用utf-8

三、引用 常量 變量 直接量

  • 引用:經過引用來表示數據的值
  • 常量:引用不會發生改變的量
  • 變量:在程序中引用指向的值能夠發生變化量
  • 直接量(字面值):在程序中能夠直接使用就稱之爲直接量(字面量)

3、數據類型

一、基本數據類型

Java提供了八種基本數據類型,分別爲:操作系統

類型 所佔字節 默認值 取值範圍(有效位) 備註
byte(字節型) 1 0 -2^7 ~ 2^7-1(-128 ~ 127)
short(短整型) 2 0 -2^15 ~ 2^15-1
int(整型) 4 0 -2^31 ~ 2^31-1 全部整數類型的默認值都是int類型
long(長整型) 8 0 -2^63 ~ 2^63-1 聲明時需在數據後面加一個字母l或L做爲標記
float(單精度浮點型) 4 0.0 7~8位 聲明時須要在數據後面加一個字母f或F做爲標記
double(雙精度浮點型) 8 0.0 16~17位 浮點型默認值都是double類型
char(字符型) 2 \u0000
boolean(布爾類型) 1 false

二、引用數據類型

除了基本數據類型,其餘類型都是引用數據類型,如String,類等。翻譯

三、類型轉換

  • 自動類型轉換(隱式轉換)code

    數值類型轉換:byte --> short --> int --> long --> float --> double

    字符類型轉換:char --> int --> long --> float --> double

    public class TypeChange {
        public static void main(String[] args) {
            byte b1 = 18;
    
            // 自動類型轉換
            // 數值類型轉換
            short s1 = b1;
            System.out.println(s1); // 18
    
            int i1 = b1;
            System.out.println(i1); // 18
    
            long l1 = b1;
            System.out.println(l1); // 18
    
            float f1 = b1;
            System.out.println(f1); // 18.0
    
            double d1 = b1;
            System.out.println(d1); // 18.0
    
            // 字符類型轉換
            char c1 = 'a';
    
            int i2 = c1;
            System.out.println(i2); // 97
    
            long l2 = c1;
            System.out.println(l2); // 97
    
            float f2 = c1;
            System.out.println(f2); // 97.0
    
            double d2 = c1;
            System.out.println(d2); // 97.0
        }
    }
  • 強制類型轉換(顯示轉換)

    格式: 數據類型 變量名 = (數據類型)數據;

    若是是浮點類型強轉爲整型,會直接捨棄小數部分;

    強轉以後,值可能會形成精度丟失。

    // 強制類型轉換
            int i1 = 120;
            byte b1 = (byte) i1;
            System.out.println(b1); // 120
    
            double d1 = 12.25;
            int i2 = (int) d1;
            System.out.println(i2); // 12
    
            int i3 = 128;
            byte b2 = (byte) i3;
            System.out.println(b2); // -128

    類型轉換圖:

    數據類型轉換

    爲何int類型的128轉爲byte類型時,會變成-128?緣由以下:

    強轉精度丟失問題

4、運算符

一、算術運算符

運算結果向精度高的方向靠齊

  • 求和:+
  • 求差:-
  • 求積:*
  • 求商:/
  • 取餘:%
  • 自增、自減:++、--

二、賦值運算符

符號左邊爲變量,而且要先初始化後才能執行運算

三、關係運算符

只針對boolean類型的值做運算,結果也是boolean類型

  • & :與運算,同真則爲真

  • |:或運算,有真則爲真

  • !:非運算,對結果進行取反

  • ^:異或運算,不一樣爲真,相同爲假

  • &&:短路與運算,結果與&運算相同,區別在於,當&&左邊表達式爲false時,右邊表達式不須要再進行計算

  • ||:短路或運算,結果與|運算相同,區別在於,當||左邊表達式爲true時,右邊表達式不須要再進行計算

四、位運算

基於二進制運算

  • &
  • |
  • ~ :取反
  • ^
  • <<:左移,左移使數據增大
  • >>:右移,右移使數據減少
  • >>>:無符號右移

五、三目運算符

表達式 ? 表達式1 :表達式2

知足表達式嗎?知足執行表達式1,不知足執行表達式2

5、流程控制語句

一、選擇結構

  • if語句

  • switch語句

    switch(表達式){
    case 值1:
    	語句體1;
    	break;
    case 值2:
    	語句體2;
    	break;
    case 值3:
    	語句體3;
    	break;
    ....
    default:
    	語句體n+1;
    	break;
    }

    switch語句表達式支持byte、short、int、char,從jdk1.5開始支持枚舉類型,從jdk1.7開始自持String類型;case值是常量且不能重複;java中支持省略break,出現case穿透效果;java支持省略default;switch語句結束的標誌:碰見break結束;執行倒代碼最後一行。

    switch語句

二、循環結構

  • for循環

    for(初始值;判斷條件;控制條件){
        循環體;
    }
  • while循環

    初始值
    while(判斷條件){
    	循環體;
    	控制條件;
    }
  • dowhile循環

    初始值;
    do{
    	循環體;
    	控制條件;
    }while(判斷條件);

循環結構

  • ​ 跳轉控制語句

    break:在switch語句中用於結束語句,能夠在循環中使用用於結束循環

    continue:在循環使用過程中用於跳過當次循環

6、數組

一、概念

能夠存儲多個相同數據類型元素的容器

二、定義格式

  • 格式一:數據類型[] 數組名 = new 數據類型[數組長度(即數組中元素的個數)]

    int[] arr = new int[3]; // 定義一個長度爲3的整型數組
    arr[0]; // 數組中的第一個元素
    arr[1]; // 數組中的第二個元素
    arr[2]; // 數組中的第三個元素
    System.out.println(arr); // [I@5e8c92f4

    數組名存放的就是數組在java內存空間中的地址值,能夠惟一肯定數組,當數組定義完成以後,java會默認給數組中的元素進行編號,編號(一般稱之爲下標)從0開始。經過數組名和下標能夠惟一肯定數組中的元素。

    直接輸出數組名arr時,獲得的結果爲:[I@5e8c92f4

    數組內存地址值

  • 格式二:數據類型[] 數組名 = new 數據類型[]{元素值1,元素值2,元素值3......}

  • 格式三:數據類型[] 數組名 = {元素值1,元素值2,元素值3......}

三、數組在Java中的內存圖

Java內存分爲:

  • 棧:能夠存儲變量等信息,存儲在棧中的信息使用完畢就會當即清除
  • 堆:存儲對象,若是堆裏的對象再也不使用,會被GC進行回收。堆內存會堆存儲的內容進行賦予系統默認的初始值:(byte、short、int)--> 0; char --> '\u0000'; long --> 0L; float --> 0.0F; double --> 0.0; boolean --> false; 引用數據類型 --> null;
  • 方法區
  • 本地方法棧
  • 寄存器

當咱們在建立一個新的數組時,在Java內存中變換狀況爲:

int[] arr = new int[3];
arr[0] = 10;
System.out.println(arr); // [I@5e8c92f4
System.out.println(arr[0]); // 10
System.out.println(arr); // 0

數組內存圖

相關文章
相關標籤/搜索