iT邦幫忙

2024 iThome 鐵人賽

DAY 30
0
自我挑戰組

前端工程師的java學習紀錄系列 第 30

Day30-中場結尾,開始了就要有好結局?

  • 分享至 

  • xImage
  •  

不知不覺來到第30天的鐵人賽了,回首過去的29天,學習了很多Java的內容,有的是當初在學習Javascript和Typescript時就已經有接觸過程式語言共通的一些特性,有些則是這次學習Java才接觸到的內容。

坦白說當初一直很猶豫要不要參加,一來是公司另外一位工程師離職後,一直沒有接續的人員進來,導致工作變得非常忙碌,二來則是很擔心自己會半途而廢,再次成為~斷頭仔~(雖然之前也沒有真的寫任何內容XD)。

這次參加鐵人賽有幾個收穫:

  1. 當學習新的知識時,能夠盡量的將所學習到的內容轉化成文字,能夠再一次梳理整個知識的脈絡,並且透過盡量以白話且讓沒接觸過的人也能讀懂的方式,可以更加深自己在知識上的統整。
  2. 因為幾乎沒有庫存內容,所以必須每天學習每天撰寫當天的內容,透過這個過程感覺有一點培養自己每天都要學習新知識的習慣。(以前自學時偶爾想耍廢就會偷懶)
  3. 更加熟悉markdown語法和notion的操作。

來複習一下過去29天學習到的內容好了(騙騙字數):

  1. java中的類型分為兩種:
    基本數據類型(8種):byteshortintlongfloatdoublecharboolean
    引用類型:類(Classes)接口(Interfaces)陣列(Arrays)枚舉(Enums)記錄(Records)註解(Annotations)

  2. java中的運算使用:+-*/%(取餘數)進行數學運算;另外有++a先運算後賦值、a++先賦值後運算、--aa--+=a-=a等方式。

  3. if elseif else ifswitch的條件判斷式。

if(boolean) {
    // dosomething
} else {
    // dosomethin
}

if(boolean) {
    // dosomething
} else if(boolean) {
    // dosomethin
} else {
    // dosomethin
}


switch(variable) {
    case a:
       // dosomething
       break;
    case b:
       // dosomething
       break;
    default:
       // dosomething
}
  1. forwhiledo while的循環式,並且可以透過break跳出循環式。

initial variable:初始值
end condition:循環結束條件
iterate:迭代(可以看成每執行完一次dosomething時,要進行的事情,避免陷入無限循環中)

for(initial variable; end condition; iterate) {
    // dosomething
    if(boolean) {
        break;
    }
}
--------------------------------------------

initial varibale
while(end condition) {
    // dosomething
    // iterate
}
--------------------------------------------

不論是否滿足結束條件都會先執行一次
initial varibale
do {
    // dosomething
    // iterate
} while(end condition)
  1. []陣列:
  • 第一個index索引是從0開始。
  • 每個陣列都有length,宣告時未給予長度的話,指向的會是null
  • 實際上沒有二維的概念,只是便於理解,在記憶體中一樣都是單一個陣列的形式,只是陣列內容存放的是"值"或是"記憶體中的地址"。
  1. java中的頭號公民,基本上所有東西都是由class組成可以使用publicdefault(不寫任何的權限修飾)在一般檔案中去進行類的定義。
  2. 類中包含了幾個部分:屬性靜態屬性方法靜態方法構造器初始化區塊
  3. 類中的方法可以使用overload重載重載的重點是當參數個數不同參數類型不同時,可以使用相同的名稱去定義方法,不會造成錯誤。
  4. 遞迴:在方法中使用方法本身,某些情況下程式碼內容相較於循環式更好寫,但是效能相對循環式,且在寫遞迴時要記得寫好結束條件(否則也會造成無限循環)。
  5. 每個類文件最上方都會有本身package的位置,可以提供其他的類文件使用import的方式使用(要記得權限問題)。
  6. 封裝:透過將類中的屬性、方法等設置權限,只將必要的內容提供給其他的類使用,就是封裝性的一種體現,透過封裝可以更妥善的保護類中的內容,也可以提高程式碼的維護性,權限修飾由權限大至小共有public->protected->default(不寫任何權限)->private
  7. constructor構造器,可以透過constructor的方式去實例化類,並且將有定義好的值直接透過宣告物件直接賦值。
class Person() {
    //屬性
    String name;
    //構造器
    public Person(String name) {
        this.name = name;
    }
}

public PersonTest {
    public static void main(String[] args) {
        Person person = new Person("Jay");
    }
}
  1. 可以透過類的繼承去使用被繼承內所定義的屬性、方法、構造器等內容,並且還可以定義被繼承類中的方法,稱為override重寫,繼承時使用extends關鍵字。例如:class A extends B {}
  2. 多態跟繼承的關係息息相關,主要是在某些情況中,必須在宣告類時將宣告的類型宣告為super class(被繼承的類,但是是使用sub class(繼承的類)的構造器去實例化這個物件,多態在使用上主要是方法的部分,屬性是沒有多態關係的。
  3. 當類中的屬性或方法前面加上static時,代表該屬性或方法被定義成是靜態的,所有的實例會共用同一組靜態屬性靜態方法
  4. 在屬性或方法前面加上final代表這個屬性或方法是不能被重新賦值或重寫。
  5. 可以使用abstract關鍵字將類或方法定義為抽象的,當把類定義為抽象時,該抽象類是無法使用new xxx()構造器進行實例化,且繼承了抽象類時,當抽象類中的方法有使用抽象定義時,必須將其重寫,否則也會變為抽象類。(抽象類著重在定義類中的情況而不是實際要做的事情)
  6. interface接口是指一種標準或者是規範,有點類似抽象類和繼承的概念,接口裡面著重於定義還不是實際操作,使用implements關鍵字去對接口進行實作。
  7. enum枚舉指的是這個類有限定在整個java的程式中只能擁有特定的數量,而不可以新增其他的實例。
  8. annotation註解指的是針對某個類或方法進行註解,通常比較多使用在框架。
  9. exception異常指的是在程式碼編譯或是虛擬機在執行java的程式時,出現了不如預期的錯誤,這時候必須進行處理,又可以分為RuntimeExecption(通常不處理,直接修改程式碼)和Exception(編譯時出問題),需要進行特定的異常處理,可以使用try{} catch(Execption err) {} finally {}或是throws進行處理。

上面大概就是這29天中,所有學習到的相關內容,某些部分有稍微的簡化(~不然太多了~),由於我所學習的資源(Youtube)其實才看了大約一半多一些,所以接下來我還會繼續的學習,並且持續在這邊進行更新(不確定鐵人賽可不可以再接續使用,不能的話就會發在個人發文那邊)。

總之很開心能夠完成30天的鐵人賽,接下來繼續加油和努力~~~~

掰掰:)


上一篇
Day29-錯誤、異常
下一篇
Day31-線程Thread(一)
系列文
前端工程師的java學習紀錄37
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言