大數據開發之路---Java基礎(一)
因為最近工作用到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基礎(一)