iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 8
0
自我挑戰組

資訊工程大補帖系列 第 8

資工補帖-Day 8-物件導向

正文

整個課堂的前面比較像是 JAVA 的教學
整個物件導向的精華就是這三個名詞:封裝、繼承、多型

  • 關於變數的問題

    • 區域變數
      • 在函式中宣告,執行完這個函式之後,才會在結束函式後 free 掉
    • 靜態變數
      • 執行完這個函式,這個變數會一直存在到程式關閉
  • JVM

    • 一種能執行 Java byte-code 的 虛擬機
  • J2SE

    • 標準版的Java平台是一個Java2的開發平台,為用戶提供一個程序開發環境。
  • JAVA 如何編譯?

    • 先編譯成byte-code再直譯成machine code
  • 使用JAVA的優點

    • Write once,Run everywhere
    • **simple
    • Garbage Collection
    • Security
    • Unicode
    • Networking
    • Exception Handling(例外處理)
  • intermediate language

    • 在編譯器將原始碼編譯為目的碼的過程中,會先將原始碼轉換為一個或多個的中間表述,以方便編譯器進行最佳化,而中間表述素就是intermediate language
  • 何謂byte-code

    • byte-code就是底層電腦系統才看的懂code
  • Java 執行是直接編譯程式碼後執行

    • 會先把我們寫好的code由Java compiler編譯成byte-code,再透過JVM直譯成machine code執行
  • interpret(直譯)

  • interpreter(直譯器)

  • byte-code的優點

    • Write once, Run everywhere
  • 請講述 .java .class的過程

    • 先用compiler把.java編譯成byte-code存到.class然後再把.class直譯成machine code
  • class

    • 是一個模型,定義了一些資料,如變數,又定義了操作資料的函數(method)
  • Object

    • 就是照著class這個模型做出來的完成品
  • method

    • 一個object能做的action就是method
  • class(類別)跟object(物件)的差別

    • 一個是模型(class) 一個是照著模型做出來的成品(object)
  • 請寫出main主函式

    • public static void main(String[ ] args)
  • System.out.println何者為method、何者為object

    • System.out是object
    • println是method
  • java 註解的方法

//三種
//(註解內容)

/*(註解內容)*/

/**(註解內容)
 * (註解內容)
 * (註解內容)
 * (註解內容)
 * /

  • 寫一個JAVA的範例,並指出程式進入點。
public class Hellow{
    public static void main(string[] args){
    Systems.out.println("Hello World!");
    
    }
}
//進入點是main

  • 如何宣告變數

    • int var;
  • 輸出字串時,如何使兩個字串相接(concatenation)

    • 用 "+" 連接
    • System.out.println("RRR" + "wwww"):
  • ===有什麼差別

    • 一個是關係運算子,等於的意思 -> ==
    • 一個是用來賦予變數一個指定的值 ->=
  • identifiers(識別字)

    • 請寫出命名規則
      • 英文字,大小寫區分
      • 第一個字元必須是英文或是底線"_"
      • 0-9但不可以當開頭
      • 空白字元及特殊符號,如#、$、@等,不能使用
      • 不可以使用keyword(關鍵字或稱保留字)
  • 物件是利用什麼方式來呼叫方法?(p.16)

    • Send messages
  • Variable變數

    • 宣告變數的意義:
      • 在記憶體裡宣告一個位置來儲存資料
    • 如何宣告
      [Modifier] type identifiers[=value];
      
      • Modifier修飾字
        • 有哪些關鍵字
          • public
          • protected
          • default
          • private
          • final static
      • type
        • 有兩種型別,分別為那些
          • 基本型
            • boolean
            • byte
            • short
            • char
            • int
            • long
            • float
            • double
          • 物件參考型
            -需要用new才能建立起來的,除了string跟Array以外
      • value
        • 與type(型別)相符
      • 結尾必須加上分號
  • case-sensitive

    • JAVA 是區分大小寫的程式語言
  • Loop(迴圈)

- While Loop
    while(boolean expression){
             statement;
             [update_value];
         }
- for Loop
    for(initialize; boolean expressio; [update_value]){
    statement;
    }
- do While Loop
    do {
        statement;
        [update_value];
    }while(boolean expression)
    /*initialize(初始化 在迴圈中執行的變數 只會執行一次)
     * boolean expression(經運算後結果為true或false的表示式)
     * update_value(更新值) 負責對變數做出適當的更新
     * statement 當boolean expression執行結果為True時會執行的程式碼
     * /
  • keyword(Reserved)

    • public
    • class
    • void
    • static
    • enum
    • assert
    • try
    • byte
    • 等等...
  • Predefined identifiers(避免重新定義識別字)

  • Variables declare(宣告)

  • floating-point number(浮點數)

  • primitive types(原始型別)

    • 原始型別的實際範圍,取決於所使用的特定程式語言。例如,在C語言中,字串是一個複合型別
    • 典型的原始型別包含:
      • 字元
      • 整數
      • 浮點數
      • 等等...
  • 運算子的優先順訊

  • assignment statement

    • +=
    • -=
    • *=
    • /=
    • %=
    • *=
  • assignment operator(設定運算子)

  • assignment compatibility

  • constant(如何宣告常數)

    • final
      • final [型態] [常數名稱] = [value]
      • EX : final float pi = 3.14159f
  • literals

  • operators

      • (addition)
      • (subtraction)
      • (multiplication)
    • / (division)
    • % (modulo, remainder)
  • Type Casting(型別轉換)

  • type coercion

  • decrement operator

  • String

    • Constant
    • Variables
    • Method
      • 關於String有很多種method
  • println v.s. print 差別

    • 自動換行->println
    • 不會自動換行->print
  • Formatting (格式化)

    • %的意思
      • 格式說明符號(format specifier) -> %
    • .的意思
      • 印出浮點數
      • EX:.5為印出小數點後5位
    • -的意思
      • %8.2f
        • 向右對齊
      • %-8.2f
        • 向左對齊
    • d
      • 十進位整數
    • f
      • 浮點數
    • e
      • 科學記號
      • ex:12345 -> 1.2345+04E
    • g
    • s
    • c
  • Money Formats

    • import java.text.NumberFormat
    • An object of NumberFormat must then be created using the
      • EX:NumberFormat moneyFormater2 = NumberFormat.getCurrencyInstance();
    • 可以設定地區
      • import java.util.Locale;
      • EX:NumberFormat moneyFormater2 =NumberFormat.getCurrencyInstance(Locale.US);
    • default設定
      - 美金
      - .2f
  • 如何使用Scanner

    • import java.util.Scanner
    • 創造object
      • EX:Scanner keyboard(自訂的名稱) = new Scanner(System.in);
    • 輸入int
      • 使用nextInt method
      • int num = keyboard.nextInt();
  • 優先順序

public class HelloWorld{

     public static void main(String []args){
        
        int n = 5;
        System.out.println(n++);//5
        System.out.println(++n);//7
        System.out.println(n--);//7
        System.out.println(--n);//5
        
     }
}

Class Definitions

  • Every program is a class(每個可執行的程式都是一個類別)

  • class和object的差別

    • Ex1:工廠中的模子(class)和生產出來的完成品(object)
  • 類別定義

    • Data items
      • fields or instance varibles
    • Methods
      • 就像在C裡的functions
  • new

    • crete a new object
      • object1 = new Class1();
  • a Java file must be given the same name as the calss

  • Q:可以定義多個class在同一個JAVA檔案嗎?

    • A:可以,但是只能有一個是public
  • public static void main(string[] args)

    • main是程式進入點
  • method內的參數都叫local variable

  • Java does not have global variables

    • The instance var are glo var in a Class
  • 送資料進fuction時只要資料是基礎型別,就一定是用call-by-value複製一份過去

  • The "this" Parameter(參數)

    • 指向自己本身這個物件的一個指標
小小的 tips

如果是我們學校的物件導向考試的時候可以參考這個 blog


上一篇
資工補帖-Day 7-行動應用程式開發
下一篇
資工補帖-Day 9-計算機概論(C語言)
系列文
資訊工程大補帖30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言