Java基礎篇

學點東西真不容易發表於2020-11-15

java基礎

Java的特性優勢

  • 簡單性
  • 物件導向
  • 可移植性
  • 高效能
  • 分散式
  • 動態性 【反射機制】
  • 多執行緒
  • 安全性 【異常機制】
  • 健壯性

java三大版本

  • write once 、run anywhere
  • javaSE:標準版 【桌面程式、控制檯開發....】
  • javaME:嵌入式開發【手機,小家電....】 用的人很少了
  • javaEE:E企業級開發【web端,伺服器開發.....】

JDK JRE JVM

JVM ---》 JRE ---》 JVM

java程式執行機制

  • 編譯型: 把程式全部翻譯成計算機可以執行的語言 compile 編譯器

  • 解釋性: 邊執行邊解釋

  • 程式執行機制:

    • 源程式(.java)---》 java編譯器---》位元組碼(.class) ---》

      類裝載器---》位元組碼檢驗器---》直譯器----》作業系統平臺

識別符號

  • java識別符號大小寫敏感;
  • java識別符號只能以字母 $ _ 開頭

資料型別

  • 強型別語言

    要求變數的使用要嚴格符合規定,所有變數都必須先定義後才能使用

  • 弱型別語言

浮點數

float f = 0.1f;
double d = 1/10;
System.out.println(f==d);//fasle

float d1 = 23232323231f;
float d2 = d1+1;
System.out.println(d1==d2);//true
  • float 有限 離散 舍入誤差 大約 接近但不等於
  • double
  • 最好完全避免使用浮點數進行比較
  • BigDecimal 類 數學用具類 大資料類 【用這個】

字元

char c1 ='a';
char c2 = '中';
System.out.println(c1);// a
System.out.println((int)c1);// 97  強制型別轉換
//所有的字元本質還是數字
//編碼 Unicode 有表:(97 = a  65 =A) 2位元組  0 - 65526
// U0000 UFFFF
char c3 = '\u0061'
System.out.println(c3);// a

//轉義字元
// \t 製表符
// \n 換行符
System.out.println("Hello\tworld");
System.out.println("Hello\nworld");

//看一個e.g.
String sa = new String("hello world");
String sb = new String("hello world");
System.out.println(sa==sb);//false

String sc = "hello world";
String sd = "hello world";
System.out.println(sc==sd);//true

型別轉換

  • 由於Java是強型別語言,所以要進行有些運算的時候,需要用到型別轉換

    低 ---------------------到----------------------高

    byte , short , char ---> int ---->long ---->float ---->double

  • 強制型別轉換 高 賦值 到 低 [會有記憶體溢位 和 精度 問題]

  • 自定型別轉換 低 賦值 到 高

int i = 128;
byte  b = (int) i;//記憶體溢位  -128

double d = i;

//操作比較大的輸的時候。注意溢位問題
int money = 10_0000_0000;//JDK7 新特性 數字之間可以用下劃線分割
int years = 20;
int total = money * years; // -147483648,計算的時候溢位了
long total2 = money * years;//預設是int 轉換之前還是int 就有問題了
 
long  total3 = money * ((long)years);//先把一個數轉化為long  √

變數

變數作用域

  • 類變數 必須有static
  • 例項變數
  • 區域性變數

常量

  • 用final來定義 一般名大寫

運算子

  • 算術運算子 : + - * / % ++ --
		int e = 3;
        int f = e++; //執行這行程式碼,先給f賦值,在自增
        System.out.println(e);//4
        int g = ++e;//執行這行程式碼,先自增,後給g賦值
        int h = e++;//先賦值,在自增
        System.out.println(e);//6
        System.out.println(f);//3
        System.out.println(g);//5
        System.out.println(h);//5

		// 字串連線符   +    
		int a = 10;
		int b = 20;
        System.out.println(""+a+b);//1020
        System.out.println(a+b+"");//30
  • 賦值運算子 : =
  • 關係運算子 : > < >= <= == != instanceof
  • 邏輯運算子 : && || ! 與或非

[注:] &&: 有0 返回 || : 有 1 返回 --------- 短路機制

  • 位運算子 : & | ^ ~ >> << >>>(瞭解)
 System.out.println(2<<4);//<<左移乘2  >>右移除2
  • 條件運算子 : ? :
  • 擴充套件賦值運算子: += -= *= /=

JavaDos

    /**
     * @author shuang 作者
     * @version 1.0  版本號
     * @since 1.8  指明需要最早使用的JDK版本
     * @param in  引數名
     * @return 返回值情況
     * @throws   異常丟擲情況
     */
    public String test(String in){
        return in;
    }
>javadoc  -encoding utf-8 -charset  utf-8 Doc.java
1、在cmd中執行上面命令會生成線上文件 點選index.html 可檢視
2、也可以用IDEA生成javaDoc文件

Java流程控制

Scanner物件

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("第一次輸入資料:");//hei baby
        // nextLine輸出回車之前的資料  以回車分割
        String str = scanner.nextLine();
        System.out.println(str);//hei baby   
        System.out.println("第二次輸入資料:");//hello  world
        // next輸出空格之前的資料  以空格分割
        str = scanner.next();
        System.out.println(str);//hello
        scanner.close();
    }

示例:

    public static void main(String[] args) {
        //輸入多個數字 求總和 平均值 每輸入一個數字回車,通過非法數字來結束輸入輸出執行結果
        Scanner scanner   = new Scanner(System.in);
        double sum = 0;
        int m = 0;
        System.out.println("請輸出資料:");
        while (scanner.hasNextDouble()){
            double x =  scanner.nextDouble();
            m++;
            sum+=x;
            System.out.println("輸入了第【"+m+"】個資料 當前總和為:"+sum);
        }
        System.out.println(m+"個數總和:"+sum);
        System.out.println(m+"個數平均值:"+(sum/m));
        scanner.close();
    }

結果:

請輸出資料:
36
輸入了第【1】個資料 當前總和為:36.0
42
輸入了第【2】個資料 當前總和為:78.0
7.6
輸入了第【3】個資料 當前總和為:85.6
a
3個數總和:85.6
3個數平均值:28.53333333333333

順序結構

  • def:語句與語句之間是按從上到下的順序進行的,它是由若干依次執行的處理步驟組成的,它是任何一個演算法都離不開的一種基本演算法結構

選擇結構

  • if單選擇結構
if(布林表示式){
    // 布林表示式為true
}
  • if雙選擇結構
if(布林表示式){
    // 布林表示式為true
}else{
    // 布林表示式為false
}
  • if多選擇結構
if(布林表示式1){
    // 布林表示式1為true
}else if(布林表示式2){
    // 布林表示式2為true
}else if(布林表示式3){
    // 布林表示式3為true
}else if(布林表示式4){
    // 布林表示式4為true
}else{
    // 以上布林表示式都不為true 執行程式碼
}

示例:

public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("請輸入成績:");
        int score = scanner.nextInt();
        if (score == 100){
            System.out.println("恭喜~~滿分~~");
        }else if (score >= 90 && score < 100){
            System.out.println("A級");
        }else if (score >= 80 && score < 90){
            System.out.println("B級");
        }else if (score >= 70 && score < 80){
            System.out.println("C級");
        }else if (score >= 60 && score < 70){
            System.out.println("D級");
        }else if (score >= 0 && score < 60){
            System.out.println("不及格");
        }else {
            System.out.println("成績不合法!!!");
        }
        scanner.close();
    }

結果:

請輸入成績:
100
恭喜~~滿分~~
  • switch多選擇結構
switch(expression){
    case value:
        //語句
        break;//可選
    case value:
        //語句
        break;//可選
    case value:
        //語句
        break;//可選
    default://可選
        //語句
}
//注: case標籤 必須為 字串常量或字面量 
//瞭解一下反編譯    java ---- 位元組碼  ---- 反編譯(IDEA) --- java

反編譯(IDEA)示例

檢視工程結構 projectStructure --- project ---project compiler output

可以找到.class檔案 --- 右鍵任意檔案 --- show in explorer(開啟目錄) ---

把.class檔案拷貝到此目錄下 --- IDEA把位元組碼反編譯為java

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

package struct;

public class Demo03 {
    public Demo03() {
    }

    public static void main(String[] args) {
        char grade = 108;
        switch(grade) {
        case 65:
            System.out.println("優秀");
            break;
        case 66:
            System.out.println("良好");
            break;
        case 67:
            System.out.println("及格");
            break;
        case 68:
            System.out.println("很差");
            break;
        case 69:
            System.out.println("掛科");
            break;
        default:
            System.out.println("未知等級!");
        }
    }
}

迴圈結構

  • while迴圈
while(布林表示式){
    //布林表示式true
}
//注:大多數情況會讓迴圈停止下來,需要讓表示式失效方式來結束迴圈;

示例:

    public static void main(String[] args) {
        // 1-100 求和
        int i = 0;
        int sum = 0;
        while (i<100){
            i++;
            sum = sum + i;
        }
        System.out.println(sum);//5050
    }
  • do while 迴圈

do whlile 和 while 相似,不同的是 do while 迴圈至少執行一次

do{
    //程式碼語句
}while(布林表示式)

IDEA快捷鍵

  • ctrl + D 複製當前行到下一行

相關文章