1. 程式人生 > 實用技巧 >學習java的第一週

學習java的第一週

前言

這是開始學習java的第一週,開始我也不知道去哪裡找資源學習比較好,後來我問我哥要了一個學習java的網址,按照上面的教程,建立好了環境並且安裝一個編輯器後,才開始正式學習。
(編譯器在執行的時候出了很多錯誤,我在此期間花了很多時間去詢問我哥和百度來解決這些問題)
寫的均為與c同的地方,相同的沒有做筆記

網址

程式基礎

變數和資料型別

基本資料型別

  • 整數型別:byte,short,int,long
  • 浮點數型別:float,double
  • 字元型別:char
  • 布林型別:boolean(值只有turefalse)

var關鍵字

定義的時候,可以用var代替基本資料型別的名字,編譯器會根據賦值語句自動推斷出變數的型別。

學習的第一個java程式

在java中,總有這樣的程式碼

public class Hello {
    public static void main(String[] args) {
      ....
    }
}
  • 其中class是定義一個類,public表示它是公開的,Hello是自己定義的類的名稱(習慣開頭字母為大寫) ,main中有一個引數,引數型別是String[],引數名是args,public static是一個公開的靜態方法。
  • 在定義變數時,可以採取C的定義方式,如int i=0; char a = '*';,也可以直接var i=0;var a='*';編譯器會根據賦值語句自動推斷出變數的型別。

資料型別中的計算

整形

和C中相同

浮點型

  • 倆浮點數比較是否相等的時候不能直接比較,因為會存在誤差,因此比較的方法是判斷兩個浮點數之差的絕對值是否小於一個很小的數;
  • 當資料溢位的時候不會報錯但會返回幾個特殊值:NaN表示Not a Number,Infinity表示無窮大,Infinity表示負無窮大

連線字串

public class Main {
    public static void main(String[] args) {
        String s1 = "Hello";
        String s2 = "world";
        String s = s1 + " " + s2 + "!";
        System.out.println(s);
    }
}
  • 可以使用+連線任意字串和其他資料型別,這樣極大地方便了字串的處理,這個結果輸出的是Hello world!
  • 如果用+連線字串和其他資料型別,會將其他資料型別先自動轉型為字串,再連線
  • 如果想要表示多行字串可以用"""..."""表示

陣列型別

int[] ns = new int[5];

  • 陣列定義的方式,定義一個數組型別的變數,使用陣列型別“型別[]”,陣列變數初始化必須使用new int[5]表示建立一個可容納5個int元素的陣列。
  • 可以用陣列變數.length獲取陣列大小;
  • 可以利用指向,來改變陣列陣列中某個元素的值

流程控制

輸入與輸出

輸出

  • 使用System.out.println()來向螢幕輸出一些內容。
    println是print line的縮寫,表示輸出並換行。所以,如果輸出後不想換行,可以用print():
    注:這些輸出方式都會格式化輸出,表示的資料不一定適合人來閱讀,可以將println改為printf

輸入

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in); // 建立Scanner物件
        System.out.print("Input your name: "); // 列印提示
        String name = scanner.nextLine(); // 讀取一行輸入並獲取字串
        System.out.print("Input your age: "); // 列印提示
        int age = scanner.nextInt(); // 讀取一行輸入並獲取整數
        System.out.printf("Hi, %s, you are %d\n", name, age); // 格式化輸出
    }
}
  • 需要import語句匯入java.util.Scanner,建立Scanner物件並傳入System.in
  • 當中的nextLine用於接收字串,nextInt用於接收整形資料,除此之外還有nextBollen,nextShort,nextLong,nextFloat,nextDouble,分別對應不同的資料型別。

if判斷

  • 大致都與c中的一樣,看到一個不同的地方
  • equals函式用來比較值是否相同,==用於比較地址是否相同。

堆和棧的區別

  • 物件是存放在堆裡面的,變數是存放在棧裡面的
  • 堆裡面的一般都是地址的
  • 棧裡面的一般都是取值的

switch多重選擇

public class Main {
    public static void main(String[] args) {
        String fruit = "apple";
        switch (fruit) {
        case "apple" -> System.out.println("Selected apple");
        case "pear" -> System.out.println("Selected pear");
        case "mango" -> {
            System.out.println("Selected mango");
            System.out.println("Good choice!");
        }
        default -> System.out.println("No fruit selected");
        }
    }
}
  • 新語法使用->,如果有多條語句,需要用{}括起來。不要寫break語句.
  • 如果需要複雜的語句,我們也可以寫很多語句,放到{...}裡,然後,用yield返回一個值作為switch語句的返回值: