1. 程式人生 > >大數據開發之路---Java基礎(一)

大數據開發之路---Java基礎(一)

arr 參數 bubuko abr 適用於 oid har turn 小寫

因為最近工作用到java,所以了解一些java的知識,當然這篇文章也是適用於有語言基礎的,因為是用於快速熟悉java的一些語法規範,並沒有整理細節的內容,零基礎的不適合看這篇文章

Hello world

老規矩先來hello world代碼:

package study_java.ex01;

public class HelloWorld {
    public static void main(String[] args){
        System.out.println("hello world");
    }
}

註釋

// 表示單行註釋
/* */ 表示多行註釋

Java語言的關鍵字

Java關鍵字的特點:
組成關鍵字的字母全是小寫
常碰到的關鍵字有:

技術分享圖片

技術分享圖片

標識符要求(變量)

  • 不能數字開頭
  • 不可以使用關鍵字
  • 嚴格區分大小寫

Java中的名稱規範:

  • 包含多詞組組成時,都小寫
  • 類名接口名,多個單詞組成時,使用大駝峰方式
  • 變量名和函數名:多個單詞組成時,小駝峰法
  • 常量名:所有的字母都大寫,多單詞時每個單詞用下劃線連接

常量

不能改變的數值

整數常量
小數常量
布爾型常量
字符串常量
null常量

變量

數據類型 變量名 = 初始化值

變量的作用範圍,就是它所在的{}內部

技術分享圖片

自動類型轉換也叫隱式類型轉換
強制類型轉換也叫顯式類型轉換

package study_java.ex01;

public class TypeConvert {
    public static void main(String[] args){
        byte b = 100;
        int i = b;   // 這裏就是進行了隱式轉換

        byte b2 = (byte)i;   // 這裏是顯式轉換
        System.out.println(b2);
    }
}

表達式的數據類型自動提升:
byte short char 提升到int

    byte b3 = 3;
    int x = 4;
    x = x + b3;     // b3會自動提升為int類型進行運算
    System.out.println(x);

運算符

算術運算符

技術分享圖片

賦值運算

= += -= *= /= %=

比較運算符

技術分享圖片

邏輯運算符

技術分享圖片

位運算符

技術分享圖片

技術分享圖片

關於三元運算
實例代碼:

package study_java.ex01;

public class IfDemo {
    public static void main(String[] args){
        int age = 100;
        if(age <= 50){
            System.out.println("小");
        }
        else{
            System.out.println("大");
        }

        // 更改為三元運算
        String str = age <= 50 ? "小":"大";
        System.out.println(str);

    }
}

流程控制

判斷結構

技術分享圖片

選擇結構

技術分享圖片

switch語句特點:
switch 語句只有四種類型的表達式:byte short int char

case 之間與default沒有順序,先執行第一個case,沒有匹配的case執行default
結束switch語句有兩種情況:遇到break, 執行到switch語句結束

如果匹配的case或者default沒有對應的break,那麽程序會繼續向下執行,直到遇到break或者switch結束

代碼例子:

package study_java.ex01;

public class SwitchDemo {
    public static void main(String[] args){
        char x = 1;
        switch(x){
            case 1:
                System.out.println("x=1");
                break;
            case 2:
                System.out.println("x=2");
                break;
            case 3:
                System.out.println("x=3");
                break;
            default:
                System.out.println("x=?");
                break;

        }
    }
}

循環結構

技術分享圖片

while循環

代碼例子:

package study_java.ex01;

public class WhileDemo {
    public static void main(String[] args){
        int i = 0;
        while (i <= 10) {
            System.out.println(i);
            i++;
        }
    }
}

代碼例子2:

package study_java.ex01;

public class WhileDemo2 {
    public static void main(String[] args){
        int i = 1;
        int sum =0;
        while (i <= 100){
            sum += i;
            i += 1;

        }
        System.out.println(sum);
    }
}

do while 循環

代碼例子:

package study_java.ex01;

public class DoWhileDemo {
    public static void main(String[] args){
        int i = 1;
        do {
            System.out.println(i);
        }while (i > 10);
    }
}

for循環

技術分享圖片

代碼例子:

package study_java.ex01;

public class ForDemo {
    public static void main(String[] args){
        for(int i = 0;i<10;i++){
            System.out.println(i);
        }
    }
}

打印一個九九乘法表:

package study_java.ex01;

public class ForDemo3 {
    public static void main(String[] args){
        for(int i = 1;i < 10;i++){
            for (int j = 1;j <= i;j++){
                System.out.print(j + "*" + i + "=" + i*j + "\t");
            }
            System.out.println();
        }

        System.out.println();

        for (int i = 9; i>0;i--){
            for (int j = 1;j<=i;j++ ){
                System.out.print(j + "*" + i + "=" + i*j + "\t");
            }
            System.out.println();
        }
    }
}

打印一個實心和空心的三角形

package study_java.ex01;

public class ForDemo4 {
    public static void main(String[] args){

        for(int i=1;i <= 5;i++){
            for(int j = 1; j<=9;j++){
                if (j <= 5-i){
                    System.out.print(" ");
                }
                else if (9-j < 5-i){
                    System.out.print(" ");
                }
                else {
                    System.out.print("*");
                }
            }
            System.out.println();
        }

        System.out.println();

        for(int i = 1;i<= 5;i++){
            for(int j = 1;j<=9;j++){
                if (i == 5){
                    System.out.print("*");
                }
                else if (j == 5-i+1){
                    System.out.print("*");
                }
                else if ( 9-j == 5-i){
                    System.out.print("*");
                }
                else {
                    System.out.print(" ");
                }
            }
            System.out.println();
        }
    }
}

函數

函數就是定義在類中的具有特定功能的一段獨立小程序
函數也稱為方法

修飾符 返回值類型 函數名稱(參數類型 參數名稱,...) {
執行語句;
return 返回值;
}

函數特點:

封裝功能
重用
調用時才會被執行
對於函數沒有具體的返回值的情況,返回值類型用關鍵字void表示,那麽該函數中的return語句如果在最後一行可以省略不寫

註意:
函數中只能定義調用函數,不可以在函數內部定義函數
定義函數時,函數的結果應該返回給調用者,交給調用者處理

一個簡單的函數例子:

package study_java.ex01;

public class FunctionDemo1 {

    public static void main(String[] args){
        int res = add(10,20);
        System.out.println(res);
    }

    public static int add(int a, int b){
        return a + b;
    }
}

函數遞歸:

通過階乘的兩種寫法來理解,其實就是自己調用自己:

public static int fabric(int n) {
    int res = 1;
    for (int i=1;i<=n;i++){
        res *= i;
    }
    return res;
}

public static int fabric2(int n) {
    if (n == 1) {
        return 1;
    }
    else {
        return n * fabric2(n-1);
    }

}

函數重載

在同一個類中,允許存在一個以上的同名函數,只要它們的參數個數或者參數類型不同即可

重載的特點:
與返回值類型無關,只看參數列表
例子代碼:

package study_java.ex01;

public class FunctionDemo2 {
    public static void main(String[] args){
        add(10,3,2);
    }
    // add
    public static int add(int a, int b){
        return a+b;
    }

    // 重載add
    public static int add(int a, int b, int c){
        return a + b + c;
    }
    // 重載add
    public static float add(int a, float b) {
        return a + b;
    }

    // 重載add
    public static float add(float a, int b) {
        return a + b;
    }

}

函數的可變參數:

public static int multiply(int... xyz){
    int sum = 0;
    for (int i =0;i <xyz.length;i++){
        System.out.println(i);
        sum += i;
    }
    System.out.println(sum);
    return sum;
}

數組

同一種類型數據的集合,其實就是一個容器
可以自動給數組中的元素從0開始編號,方便操作這些元素

元素類型[] 數組名 = new 元素類型[元素個數或者數組長度]
例子 int [] arr = new int[5]
或者:

元素類型[] 數組名 = new 元素類型[元素,元素,....]
int [] arr = new [1,2,3,4]

數組這裏的一些練習題,通過一些排序來熟悉:
冒泡排序,以及選擇排序

package study_java.ex01;

public class BubbleDemo1 {
    public static void main(String[] args) {
        int[] arr = {1,4,90,22,12,20,99};
        select(arr);
        for (int i =0;i<arr.length;i++){
            System.out.println(arr[i]);
        }
    }

    public static void bubble(int[] arr){
        int tmp = 0;
        for (int i= 0; i< arr.length -1;i++){
            for (int j=0;j<arr.length -1 - i;j++){
                tmp = arr[j];
                if (arr[j] > arr[j+1]){
                    arr[j] = arr[j+1];
                    arr[j+1] = tmp;
                }
            }
        }
    }

    public static void bubble2(int[] arr){
        int tmp =0;
        for (int i = 0; i < arr.length-1;i++){
            for (int j=0;j<arr.length-1-i;j++){
                tmp = arr[j];
                if (arr[j] < arr[j+1]){
                    arr[j] = arr[j+1];
                    arr[j+1] = tmp;
                }
            }
        }
    }

    public static void select(int[] arr){
        int tmp = 0;
        for(int i = 0;i < arr.length-1;i++){
            int min_loc = i;
            for (int j=i+1;j<arr.length;j++){
                if (arr[j] < arr[min_loc]){
                    min_loc = j;
                }
            }
            tmp = arr[i];
            arr[i] = arr[min_loc];
            arr[min_loc] = tmp;
        }
    }
}

大數據開發之路---Java基礎(一)