iT邦幫忙

2023 iThome 鐵人賽

DAY 2
0

前情提要

以下為參雜CS61B上課內容 + 良葛格聖經 + 網路資源 的讀書筆記

🦖什麼是 JAVA ?

( 寫一份程式碼,就可以在多個平台使用 ) 跨平台、物件導向、強型別的程式語言

優點

  1. 跨平台、相容性高
  2. 可以做各式各樣的應用 : web、桌面應用程式、GUI 使用者圖形介面、網頁伺服器
  3. 市場需求高

缺點

  1. 執行速度慢 ( 相較 C++
  2. 需要經過編譯 complie ( 程式碼有錯就無法直 ) 、 Python 就是直譯式語言

詳細解釋

所有程式碼都是 .java 純文本文件,由 Javac ( Java compiler ) 編譯器編譯成 .class 文件
是包含 Java 虛擬機 ( Java Virtual Machine ) JVM 的機器語言
最後 java 啟動器使用 JVM 運行程式碼

Java 是靜態語言Static Typing ,變數帶有資料型態static type,這讓 Java 在開發時就會幫你糾正型別的正確與否。反之就是動態語言 《詳細良葛格部落格


(圖片來源)

// 編寫一支 print HelloWorld 的 Main.java 
$ javac Main.java
// 會跑出 Main.class
$ Java Main 
//HelloWorls ! 

雖然語言本身比較囉嗦、寫起來很長、學習曲線也比較高,但協作時會比較好維護。

  • 變數 variable 必須宣告 declared 類型 type
  • 陳述式 loop definition 在 { }、表達式 boolean expression 在 ( )
  • print 用 System.out.print 代替 System.out.println

Exercise 1.1.2. 小練習 FOR、WHILE 迴圈 良葛格

Java 被開發初衷

  1. 使用 物件導向 OOP
  2. 同一程式,跨平台執行
  3. 內建對電腦網路的支援
  4. 安全執行遠端程式碼
  5. 借鑑 C++ 長處,更易於使用

相關術語

  1. Java Language Specification ( 規範 Java 語法 )
  2. JVM Specification
  3. JDK ( Java Development Kit ) Java 開發組合包含 Java Virtual Machine 、Java API

🦖函數 Function 、Methods

一個函數會有輸入值 input、得到一個輸出值 output
Java 的 API 提供非常多 Function () 、可以提供或不提供 input

🦖package

很多 .java 的文件可以依據功能不同來做分類管理

🦖 Java Class

現實世界中的物件 object、instance 都有自己的狀態 attribute、行為 behavior

Java Class 是創建單個物件 Object、instance 的藍圖 blueprint

創建物件的過程被稱為實例化 instantiation ,可以透過 new 關鍵字把電腦記憶體分給新的物件

class 都是 reference data type (或 Non-primitive data type)

✨ Class 規則 ✨

  1. Class 名稱 和 文件名稱相同
  2. Class 首字英文字母大寫
  3. public static void main ( String [] args ) 會被執行

✨ this keyword ✨

在 IDEA 會自動標顏色跟你說這個 this 跟誰一起

public class Circle {
    private double radius;

    public Circle() {
        this(1.0);
    }

    public Circle(double radius) {
        this.radius = radius;
    }
    
    public double getArea() {
        return Math.PI * Math.pow(this.radius, 2);
    }

}

🦖 Java Class Constructor

Constructor 是用於初始化對象的特殊方法 ( 關鍵字 ),調用構造函數規則為 :

✨ Constructor 規則 ✨

  1. Constructor 必須與 Class 名相同
  2. Constructor 用於製作新的物件
  3. Constructor 沒有返回類型,不能寫 return type
  4. 所有 Class 都有默認的 Constructor ( 會有初始值 )
//Circle.java
import static java.lang.Math.*;

public class Circle {
    //encapsulation
    private double radius;
    //Construcuor methods have "method overlooading"
    public Circle() {
        radius = 1.0;
    }
    //Circle class's constructor
    public Circle(double newRadius) {
        radius = newRadius;
    }

    public double getArea() {
        return Math.PI * radius * radius;
    }
}

//Test.java
public class WisonTest {
    public static void main(String[] args) {
				//創建物件起手式
        Circle circle1 = new Circle();
				//預設會是 0.0
        Circle c2 = new Circle();

				 Circle c3 = new Circle();
        System.out.println(c3.getArea());

        //Execute scanner class' constructor
        Scanner s = new Scanner(System.in);
        int x = s.nextInt();
    }
};
  • public
  • private

Intellij IDEA 開始一個專案

new file 選擇 location 檔案名稱首字大寫
程式碼都放在 src 底下 選擇使用的 JDK
右鍵 run Main.java 會 complier 在底下
也會新增 out 資料夾存放 .class 檔案

快捷鍵

pusvm + tab
//----
public class Main {
    public static void main(String[] args) {

    }
}
sout + tab 
//----
System.out.println();ln();

🦖變數 & 賦值

變數 Variable (他就像是一個箱子) 賦值 assignment (把 value 放進去)

Java 的 等號 = 是 assignment 賦值的意思

//基本構造
public class Main {
    public static void main(String[] args) {
        int x = 5; //variable x data type => integer
        int y = 6;
        x = x + 1; // 很常見 有語法糖果
        x += 1; //語法糖 syntax suggar
        System.out.println(x);
    }
}

✨ Variable 規則 ✨

  1. 可以由 英文、數字、底線、$ 構成
  2. 不能用數字當開頭
  3. 變數名稱不能是關鍵字 reserved words

🦖常量 constants

不能改變的量,稱為常量 constants
在 Java 的 variable declaration (宣告) 中加入 final keyword

大家習慣在 constants 會全部大寫英文字母表示

public class Main {
    public static void main(String[] args) {
        final double PI = 3.14; //variable declaration
        PI = 5; // Error : Cannot assign a value to final variable 'PI'
    }
}

命名習慣

  1. ClassName : 使用駝峰命名,大寫當開頭 ( Main )
  2. varialbe : 使用駝峰命名,小寫當開頭 ( mainPage )
  3. CONSTANTS : 使用_隔開,全部打寫 ( MAX_VALUE )

上一篇
Day1 | 前言
下一篇
Day3|Java 基礎2
系列文
【自我挑戰】CS61B 學習筆記4
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言