1. 程式人生 > >Java基礎知識總結(一)--基本語法知識

Java基礎知識總結(一)--基本語法知識

一.識別符號

(1)定義:就是給類,介面,方法,變數等起名字的字元序列
(2)組成規則:英文大小寫字母,數字,_和$
(3)注意事項:不能以數字開頭,不能是java中的關鍵字,區分大小寫
(4)常見命名規則:
a.包名:全部小寫。
b.類名/介面名:每個單詞首字母大寫
c.變數/方法名:第一個單詞小寫,後面每個單詞大寫
d.常量:每個字母都大寫,單詞間以下劃線連線

二:資料型別

1.分類

(1)基本資料型別

a.整數           佔用位元組數
    byte        1   
    short       2
    int     4
    long        8
b.浮點數
    float       4
    double      8
c.字元
    char        2
d.布林
    boolean     1

(2)引用資料型別 a.類 b.介面 c.陣列
2.資料型別的轉換
(1)預設轉換

a.從小到大
b.byte,short,char--int--long--float--double
c.byte,short,char之間不相互轉化,直接轉換成int型別參與運算

(2)強制轉換

a.從大到小
b.可能會有精度損失,不建議使用
c.格式:目標資料型別 變數名=(目標資料型別)被轉換的資料

(3)boolean型別不參與轉換
(4)面試題:

a.
  System.out.println("hello"+'a'+1);  //helloa1
  System.out.println('a'+1+"hello");  //98hello
  System.out.println("5+5="+5+5);  //5+5=55
  System.out.println(5+5+"=5+5");  //10=5+5
  System.out.println('a'); //a
  System.out.println('a' + 1);  //98
b.
  byte b1 = 3;
  byte b2 = 4;
  byte b3 = b1 + b2;
  byte b4 = 3 + 4;
  //byte型別在參與運算時會自動轉化為int,第三條語句會報錯
c.
  byte b=(byte) 300;
  byte一共有八位,當超出八位後,會溢位,所以結果為44;
  byte b=(byte) 130;//-126
  計算時可以用b-256即可得出結果

三.運算子

(1)算術運算子

a.包括:+,-,*,/,%,++,--
b.++和--的用法
    1.放在運算元前面,先自增或者自減,再參與操作
        int a = 10;
        int b = ++a;
        //a=11,b=11;
    2.放在運算元的後面:先參與操作,再自增或者自減
        int a = 10;
        int b = a++;
        //a=11,b=10;
c.面試題
    int a=10;
    a=a++;
    System.out.println(a);   //結果為10
        //後置++,會產生一個臨時的量,這個量的值相當於x的一個副本,然後將x的值自增1,將副本的值返回  

(2)賦值運算子

a.包括: =,+=,-=,*=,/=,%=等
b.面試題
  short   s+=2;  //等價於  s=(short)(s+2);   這種賦值運算子隱含了強制型別的轉換功能
      short   s=s+2;  //會報錯   (變數參與運算時,會自己轉換為int型別)
c.

(3)邏輯運算子

a.包括:&,|,^,!,&&,||
b.注意:
    &&:結果和&是一樣的,只不過有短路效果。左邊是false,右邊不執行。
    ||:結果和|是一樣的,只不過有短路效果。左邊是true,右邊不執行。
    ^:相同則false,不同則true。

(4)比較運算子

a.包括:==,!=,>,>=,<,<=
b.結果為boolean型別
  注意不要把==寫成=

(5)位運算子

a.^的特殊用法
        一個數據針對另一個數據位異或兩次,該數不變
b.面試題
    交換a,b 的值
    a=a^b;
    b=a^b;
    a=a^b;
c.請用最有效率的方式計算出2乘以8的結果
    2<<3

(6)三元運算子

a:格式
    比較表示式?表示式1:表示式2;
b:執行流程:
    首先計算比較表示式的值,看是true還是false。
    如果是true,表示式1就是結果。
    如果是false,表示式2就是結果。

四.流程控制語句

(1)順序結構
從上往下,依次執行
(2)選擇結構

    1:格式1
        if(比較表示式) {
            語句體;
        }
    2:格式2
    if(比較表示式) {
            語句體1;
        }else {
            語句體2;
        }
    3:格式3
    if(比較表示式1) {
            語句體1;
        }else if(比較表示式2){
            語句體2;
        }
        ...
        else {
            語句體n+1;
        }
b.switch語句

    1.格式:
    switch(表示式) {
        case 值1:
            語句體1;
            break;
        case 值2:
            語句體2;
            break;
        ...
        default:
            語句體n+1;
            break;
    }
    2.說明:
        表示式:可以是byte,short,int,char
            JDK5以後可以是列舉
            JDK7以後可以是字串
        break:表示程式到這裡中斷,跳出switch語句
        default可以省略,也可以放在任意位置

(3)迴圈結構

a.for迴圈
    for(初始化語句;判斷條件語句;控制條件語句){
            迴圈體語句;
        }
b.while迴圈
    初始化語句;
    while(判斷條件語句){
        迴圈體語句;
        控制條件語句;
    }
c.for和while的區別
    a:使用上的區別
        for語句的那個控制條件變數,在迴圈結束後不能在使用了。
        而while的可以繼續使用。
    b:理解上的區別
        for適合於一個範圍的判斷
        while適合次數不明確的
d.do....while迴圈
    初始化語句;
        do {
            迴圈體語句;
            控制條件語句;
        }while(判斷條件語句);
e.三種迴圈的區別
    a:do...while迴圈至少執行一次迴圈體
    b:for和while必須先判斷條件是否是true,然後後才能決定是否執行迴圈體

(4)控制跳轉語句

a.break:中斷的意思
    1:用在迴圈和switch語句中,離開此應用場景無意義。
    2:作用
        跳出單層迴圈
        跳出多層迴圈,需要標籤語句的配合
b.continue:繼續
    1:用在迴圈中,離開此應用場景無意義。
    2:作用
        a:跳出單層迴圈的一次,可以繼續下一次
c.return:返回
    1:用於結束方法
    2:一旦遇到return,程式就不會在繼續往後執行。

五:方法

a.方法:就是完成特定功能的程式碼塊。
b.格式:
    修飾符 返回值型別 方法名(引數型別 引數名1,引數型別 引數名2...) {
        方法體語句;
        return 返回值;
    }
c.方法過載
    在同一個類中,方法名相同,引數列表不同。與返回值無關。
    引數列表不同指:
        引數的個數不同。
        引數的對應的資料型別不同。

六.陣列

(1)陣列:儲存同一種資料型別的多個元素的容器
(2)定義方式:
a.int[] arr=new int[5];
b.int[] arr=new int[]{1,3,4,5};
c.int[][] arr=new int[5][];
(3)陣列常見操作

a.遍歷
    public static void printArray(int[] arr) {
        for(int x=0; x<arr.length; x++) {
            System.out.println(arr[x]);
        }
    }
b.求最大值(最小值)
    public static int getMax(int[] arr) {
        int max = arr[0];

        for(int x=1; x<arr.length; x++) {
            if(arr[x] > max) {
                max = arr[x];
            }
        }

        return max;
    }
c.查詢
    public static int getIndex(int[] arr,int value) {
        for(int x=0; x<arr.length; x++) {
            if(arr[x] == value) {
                return x;
            }
        }

        return -1;
    }

(4)氣泡排序

氣泡排序:依次比較相鄰的資料,將小資料放在前,大資料放在後,一趟比較後將最大的數放到最後一個位置
public static void bubbleSort(int[] arr){
    for(int i=0;i<arr.length-1;i++){
        for(int j=0;j<arr.length-1-i;j++){
            if(arr[j]>arr[j+1]){
                int temp=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=temp;
            }
        }
    }
}

(5)選擇排序

選擇排序:將第一個資料和後面的資料依次比較,將小資料放在前,大資料放在後,一趟比較後將最小的資料放在第一個位置
public static void selectSort(int[] arr){
    for(int i=0;i<arr.length;i++){
        for(int j=i+1;j<arr.length;j++){
            if(arr[i]>arr[j]){
                int temp=arr[i];
                arr[i]=arr[j];
                arr[j]=temp;
            }
        }
    }
}