1. 程式人生 > 其它 >JavaSE基礎學習筆記:1.基本語法部分

JavaSE基礎學習筆記:1.基本語法部分

JavaSE基礎

JDK、JRE、JVM

JDK (Java Development Kit):是 Java 語言的軟體開發工具包(SDK)。

JRE(Java Runtime Environment,Java執行環境),包含JVM標準實現及Java核心類庫。

JVM是Java Virtual Machine(Java虛擬機器)的縮寫,JVM是一種用於計算裝置的規範,它是一個虛構出來的計算機,是通過在實際的計算機上模擬模擬各種計算機功能來實現的。


基本語法

註釋、識別符號、關鍵字(BAT)

書寫註釋是一個非常好的習慣,平時寫程式碼一定要注意規範

註釋

  • 單行註釋 //
    • 可以註釋一行文字
  • 多行註釋 /**/
    • 可以註釋一段文字
  • 文件註釋(JavaDoc)/** */
    • 大公司經常用

識別符號

識別符號規則如下

  • Java所有的組成部分都需要名字。類名、變數名以及方法名都被稱為識別符號。

  • 所有的識別符號都應該以字母美元符($)、或者下劃線開始

  • 首字母之後可以是字母,美元符,下劃線或數字的任何字元組合

  • 不能使用關鍵字作為變數名或方法名

  • 識別符號是大小寫敏感的

    合法識別符號舉例:age、$salary,_value、__1_value

    非法識別符號距離:123abc、-salary、#abc

關鍵字

Java中的關鍵字有如下表格中這麼多

具體細節檢視:

Java關鍵字及其作用詳解


資料型別

Java的資料型別分為兩大類

  • 基本資料型別
  • 引用資料型別

基本資料型別

Java語言提供了八種基本型別。六種數字型別(四個整數型,兩個浮點型),一種字元型別,還有一種布林型。

資料型別 範圍
byte 8位、有符號
short 16 位、有符號
int 32位、有符號
long 0L(64 位、有符號)
float 0.0f(單精度、32位)
double 0.0d(雙精度、64 位)
char 'u0000' ~ 'uffff'
boolean false
  • 最大最小值表示方式:封裝類.MIN(MAX)_VALUE
  • 面試真題:銀行業務少用浮點型別,常用BigDecimal 數學工具類
float f = 0.1f;
double d = 1/10;
system.out.printl(f == d);//false

float f1 = 2311231231231231231231f;
float f2 = f1 + 1;
system.out.printl(f1 == f2);//true	

引用資料型別

  • 物件、陣列、類、介面都是引用資料型別。
  • 所有引用型別的預設值都是null。

特殊的轉義字元

符號 字元含義
\n 換行 (0x0a)
\r 回車 (0x0d)
\f 換頁符(0x0c)
\b 退格 (0x08)
\0 空字元 (0x0)
\s 空格 (0x20)
\t 製表符
" 雙引號
' 單引號
\ 反斜槓
\ddd 八進位制字元 (ddd)
\uxxxx 16進位制Unicode字元 (xxxx)

自動型別轉換

整型、實型(常量)、字元型資料可以混合運算。運算中,不同型別的資料先轉化為同一型別,然後進行運算。

轉換從低階到高階。

低  ------------------------------------>  高

byte,short,char—> int —> long—> float —> double 
  • 強制轉換(高——低)

(型別)變數名

  • 自動轉換(低——高)
  1. 不能進行Boolean型別轉換
  2. 不能把物件型別轉換為不相干的型別
  3. 把高容量轉換到低容量時,強制轉換
  4. 轉換時可能存在記憶體溢位,或者精度損失!
//操作比較大的數的時候,注意溢位問題
        int money = 10_0000_0000;//JDK7新特性,數字之間可以用下劃線分割
        int year = 20;
        int total1 = money * year;//輸出一個負數,計算的時候溢位的
        long total2 = money * year;//先用原始的int型別計算完再轉為long型別,所以轉換之前已經出錯

        //正確做法是在計算前先把一個數的資料型別轉化為long類,再計算乘法
        long total3 = money * ((long) year);

常量、變數、作用域

常量

常量在程式執行時是不能被修改的。

在 Java 中使用 final 關鍵字來修飾常量,宣告方式和變數類似:

final double PI = 3.1415927;

變數

Java變數是程式中最基本的儲存單元,其要素包括變數名,變數型別和作用域

type varName [=value] [{,varName[value]}]
 //資料型別 變數名 = 值;可以使用逗號隔開來宣告多個同類型變數。

作用域

  • 類變數(修飾符static):static+資料型別+變數名

    • 可以不初始化
    • 可以在方法中直接呼叫
  • 例項變數

    • 從屬於物件,需要宣告不需要初始化
    • 在方法中呼叫前,需要先將類例項化(新建一個物件)
  • 區域性變數

    • 必須宣告和初始化值,只在方法內有效
public class Variable{
    static int allClicks=0;//類變數
    String str="hello world";//例項變數
    
    public void method(){
        int i =0;//區域性變數
    }
}

運算子

Java的運算子,分為四類:

算數運算子、關係運算符、邏輯運算子、位運算子。

  • 算數運算子(9):+ - * / % -(取反) ~ ++ --
  • 關係運算符(6):== != > >= < <=
  • 邏輯運算子(6):&& || ! ^ & |
  • 位運算子(7):& | ~ ^ >> << >>>

一、算數運算子

算數運算子運算元必須是數值型別

分為一元運算子二元運算子

因運算元是一個,故稱為一元運算子。

運算子 含義 例子
- 改變數值的符號,取反 -x(-1*x)
~ 逐位取反,屬於位運算子 ~x
++ 自加1 x++
-- 自減1 x--

數學中的加、減、乘、除等運算。因算術運算子是運算兩個操作符,故又稱為二元運算子

運算子 含義 例子
+ 加法運算 x+y
- 減法運算 x-y
* 乘法運算 x*y
/ 除法運算 x/y
% 取模運算(求餘運算) x%y

二、關係運算符

關係運算符用於比較兩個數值之間的大小,其運算結果為一個邏輯型別(boolean布林型別)的數值。

等於'=='不等於'!='大於'>'大於等於'>='小於'<'小於等於'<='

三、邏輯運算子

邏輯與'&&'邏輯或'||'邏輯非'!'邏輯異或'^'邏輯與'&'邏輯或'|'

兩種邏輯與(&&和&)的運算規則基本相同,兩種邏輯或(||和|)的運算規則也基本相同。
&和|運算是把邏輯表示式全部計算完,而&&和||運算具有短路計算功能。
對於&來說,如果左側條件為false,也會計算右側條件的值,而對於&&來說,如果左側的條件為false,則不計算右側的條件,這種現象被稱作短路現象。
所謂短路計算,是指系統從左至右進行邏輯表示式的計算,一旦出現計算結果已經確定的情況,則計算過程即被終止。
對於&&運算來說,只要運算子左端的值為false,則因無論運算子右端的值為true或為false,其最終結果都為false。
所以,系統一旦判斷出&&運算子左端的值為false,則系統將終止其後的計算過程;
對於 || 運算來說,只要運算子左端的值為true,則因無論運算子右端的值為true或為false,其最終結果都為true。
所以,系統一旦判斷出|| 運算子左端的值為true,則系統將終止其後的計算過程。 

注:異或相同為false,相反則為true。

在程式設計時使用&&和||運算子,不建議使用&和|運算子。

四、位運算子

位運算是以二進位制位為單位進行的運算,其運算元和運算結果都是整型值。

位與'&',位或'|',位非'~',位異或'^',右移'>>',左移'<<',0填充的右移'>>>'

位運算的位與'&',位或'|',位非'~',位異或'^'與邏輯運算的相應操作的真值表完全相同,其差別只是位運算操作的運算元和運算結果都是二進位制整數,而邏輯運算相應操作的運算元和運算結果都是邏輯值boolean型。

位運算效率高

  • &:與
  • |:或
  • ^:異或
  • ~:非,取反
  • <<:左移,相當於乘2
  • >>:右移,相當於除以2

面試題:2*8=16,怎樣運算最快

答:用位運算最快

0000 0001 1

0000 0010 2

0000 0100 4

0000 1000 8

0001 0000 16

所以把2左移3,就可以得到16

System.out.printlin(2<<3);//輸出16

五、賦值運算子與其他運算子的簡捷使用方式

  • 賦值運算子

可以與二元算術運算子、邏輯運算子和位運算子組合成簡捷運算子,從而可以簡化一些常用表示式的書寫

  • 條件運算子(三目運算子)

x ? y : z

如果x==true,則返回y,否則返回z

  • 物件運算子instanceof

物件運算子instanceof用來測試一個指定物件是否是指定類(或它的子類)的例項,若是則返回true,否則返回false。

 String s = new String("sa");
        if(s instanceof Object){
            System.out.println("String is object class");
        }