java基礎語法

java概述

1991 年Sun公司開發的面向對象的編程語言, 如今廣泛應用在電腦,打印機,手機等各種設備上。

三種技術構架

    JAVAEE:Java Platform Enterprise Edition,開發企業環境下的應用程序,主要針對web程序開發;
    JAVASE:Java Platform Standard Edition,完成桌面應用程序的開發,是其它兩者的基礎;
    JAVAME:Java Platform Micro Edition,開發電子消費產品和嵌入式設備,如手機中的程序;


兩個軟件包
1、JDK:Java Development Kit,java的開發和運行環境,java的開發工具和JRE。
2、JRE:Java Runtime Environment,java程序的運行環境,java運行的所需的類庫+JVM(java虛擬機)。

關鍵字:

    java中賦予了特殊含義的單詞。

標識符:

    自定義的名詞,比如類名,變量名,函數名,可包含 0-9、a-z、$、_ ;
    原則:
      1、數字不可以開頭。
      2、不可以使用關鍵字。
      3、對大小寫敏感
      4、不限長度

    規範:(駝峯式大小寫)
      類、接口名:通常使用名詞,且每個單詞的首字母要大寫
      方法名:通常使用動詞,首字母小寫,其後用大寫字母分隔每個單詞
      常量名:全部大寫,單詞之間用下劃線分隔
      變量名:通常使用名詞,首字母小寫,其後大寫字母分隔每個單詞,避免使用$符號。

常量:

    是在程序中的不會變化的數據。

變量:

    其實就是內存中的一個存儲空間,用於存儲常量數據。
    變量聲明(開闢內存空間)的三要素:
      數據類型:變量的類型,決定變量空間的大小
      名稱:變量名 ,方便計算機找到這個變量
      值: 存儲的數據,即初始化值

    變量的作用域:
      作用域從變量定義的位置開始,到該變量所在的那對大括號結束;

    生命週期:
      變量從定義的位置開始就在內存中存在;
      變量到達它所在的作用域的時候就在內存中消失;

運算符

1、算術運算符。

    +、 -、* 、/、% :加減乘除、除後取餘數
    +:連接符,用於連接字符串
    ++,一 一:自增、自減,能夠自增或自減的必須是變量
      c=a+b++和d=a+ ++b的區別:c=a+b, b=b+1; b=b+1, d=a+b

2、賦值運算符。
= 、 +=、-=、*=、/=、%=

3、比較運算符。

    “>”大於、“<”小於、“>=”大於等於、“<=”小於等於、“==”等於、“!=”不等於
    這些運算符基本上同數學中的比較運算符是一致的。
    特點:該運算符的特點是:運算完的結果,要麼是true,要麼是false。

4、邏輯運算符。& | ^ ! && ||

    邏輯運算符除了 ! 外都是用於連接兩個boolean類型表達式。
    &: 只有兩邊都爲true結果是true。否則就是false。
    |:只要兩邊都爲false結果是false,否則就是true
    ^:異或:和或有點不一樣。
      兩邊結果一樣,就爲false。 兩邊結果不一樣,就爲true.

    & 和 &&區別: & :無論左邊結果是什麼,右邊都參與運算。
      &&:短路與,如果左邊爲false,那麼右邊不參數與運算。

    | 和|| 區別:|:兩邊都運算。
      ||:短路或,如果左邊爲true,那麼右邊不參與運算。

5、位運算符:用於操作二進制位的運算符。
    &  |  ^ 
    <<  >>   >>>(無符號右移)
    ^的特點:a^b^a = b

6、運算符的優先級:

這裏寫圖片描述

數據類型

這裏寫圖片描述
這裏寫圖片描述
需要注意的是:

    邏輯型boolean只能是true 或false,不能以數值代替。
    字符型char:Unicode編碼,佔2個字節,可用16進製表示。
    整數型默認是int類型,如果是short或long型,值後面要加標識:如12345L。long型最好用大寫L,避免小寫l與1混淆。
    整型數據有三種書寫格式:
      十進制:正常書寫:12
      八進制:以0開頭,如012
      十六進制:以0x開頭,如0x12

    浮點型默認是double而不是float,若要聲明爲float類型,需在後面加f或F。
    在數學中0到1有無數個浮點數;而計算機是離散的,所以表示的時候有誤差,計算機用精度(小數點後幾位來表示正確),比較浮點數時a==0.1是不合適的,應該a-0.1==0;如果a是0.1,則即使有誤差 a-0.1==0因爲a和0.1都被表示爲一個有誤差的計算機二進制

    自動類型轉換:從低級別到高級別,系統自動轉的;
    強制類型轉換:把一個高級別的數賦給一個別該數的級別低的變量;

語句

1、選擇:If語句、switch語句

語句的選擇:

    1、當判斷固定個數的值的時候,可以使用if,也可以使用switch。
    但是建議使用switch,效率相對較高。
    2、當判斷數據範圍,獲取判斷運算結果boolean類型時,需要使用if。
    3、當某些語句需要執行很多次時,就用循環結構。

switch語句工作原理:用小括號中的變量的值依次和case後面的值進行對比,和哪個case後面的值相同了
就執行哪個case後面的語句,如果沒有相同的則執行default後面的語句;

switch(變量)
{
     case 值:要執行的語句;break;
     …
     default:要執行的語句;
}

細節:

    1):break是可以省略的,如果省略了就一直執行到遇到break爲止;
    2):switch 後面的小括號中的變量應該是byte,char,short,int四種類型中的一種;
    3):default可以寫在switch結構中的任意位置;如果將default語句放在了第一行,則不管expression與case中的value是否匹配,程序會從default開始執行直到第一個break出現。

2、循環:do while語句、 while語句 、for 語句

while和for可以進行互換。
區別在於:如果需要定義變量控制循環次數。建議使用for。因爲for循環完畢,變量在內存中釋放。

3、語句中的關鍵字
break:作用於switch ,和循環語句,用於跳出,或者稱爲結束。
break語句單獨存在時,下面不要定義其他語句,因爲執行不到,編譯會失敗。當循環嵌套時,break只跳出當前所在循環。要跳出嵌套中的外部循環,只要給循環起名字即可,這個名字稱之爲標號。

continue:只作用於循環結構,繼續循環用的。
作用:結束本次循環,繼續下次循環。該語句單獨存在時,下面不可以定義語句,執行不到。

多重循環中跳出到外循環:

ok:for(int i=0;i<10;++i)
  {  
    for(int j=0;j<10;++j)
    {  
       System.out.println("i="+i+"j="+j);  
       if(j==5) 
       break ok;  
    }  
}  

函數

爲了提高代碼的複用性,可以將其定義成一個單獨的功能,就是java中的函數,也稱爲方法。

1、java中的函數的定義格式:

    修飾符 返回值類型 函數名(參數類型 形式參數1,參數類型 形式參數1,…)
    {
    執行語句;
    return 返回值;
    }
    當函數沒有具體的返回值時,返回的返回值類型用void關鍵字表示。
    如果函數的返回值類型是void時,return語句可以省略不寫的,系統會幫你自動加上。
    return的作用:結束函數。結束功能。

2、如何定義一個函數?

    函數其實就是一個功能,定義函數就是實現功能,通過兩個明確來完成:
    1)、明確該功能的運算完的結果,其實是在明確這個函數的返回值類型。
    2)、在實現該功能的過程中是否有未知內容參與了運算,其實就是在明確這個函數的參數列表(參數類型&參數個數)。

3、函數的作用:

    1)、用於定義功能。
    2)、用於封裝代碼提高代碼的複用性。
    注意:函數中只能調用函數,不能定義函數,也就是函數不能嵌套,比如,不能在主函數中再定義另外的函數。

4、主函數:

    1)、保證該類的獨立運行。
    2)、因爲它是程序的入口。
    3)、因爲它在被jvm調用。

5、函數的值傳遞:

    如果參數是基本類型,函數不能改變實際參數的值;如果參數是引用數據類型(某對象),那麼傳入的實際值是該對象的引用,也就是對象哈希值(地址)。方法中的操作會影響實際參數。

6、重載:

    在一個類中,如果出現了兩個或者兩個以上的同名函數,只要它們的參數的個數,或者參數的類型不同,即可稱之爲該函數重載了。與返回值類型無關。

數組

用於存儲同一類型數據的一個容器。好處:可以對該容器中的數據進行編號,從0開始。數組用於封裝數據,就是一個具體的實體。
數組的聲明:
1)、元素類型[] 變量名 = new 元素類型[元素的個數];
2)、元素類型[] 變量名 = {元素1,元素2…};
元素類型[] 變量名 = new 元素類型[]{元素1,元素2…};

內存區域劃分

java分了4片內存。
1、棧區(stacksegment)—由編譯器自動分配釋放,存放函數的參數值,局部變量的值等,具體方法執行結束之後,系統自動釋放JVM內存資源

2、堆區(heapsegment)—一般由程序員分配釋放,存放由new創建的對象和數組,jvm不定時查看這個對象,如果沒有引用指向這個對象就回收

3、靜態區(datasegment)—存放全局變量,靜態變量和字符串常量,不釋放

4、代碼區(codesegment)—存放程序中方法的二進制代碼,而且是多個對象共享一個代碼空間區域

發佈了38 篇原創文章 · 獲贊 38 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章