iT邦幫忙

1

自學PHP轉換到自學Java

  • 分享至 

  • twitterImage

因工作需要寫Java,要跑自動化cronjob那種的
不要問我說為啥不用php寫要用Java,主管決定的
因此我開始學習Java但其實不是很順利

先談談Array的問題
我只是會很笨的方式去寫Array
以php來說我透過這樣的方式

echo '<xmp>';
print_r($data);
echo '</xmp>';

就可以把Array以這樣的方式列表出來

Array
(
  [aaaa] => Array
    (
     [0] => Array
      (
        [a] => abc
        [b] => cde
        [e] => vfr
      )
     ) 
)

但是Java卻無法把Array印成這樣子

再來是Array的使用
以PHP來說

$test = array();
$test[] = "1234";
或是
$test[][] ="1234";
或是
$test[][][] ="1234";

但是以Java來說
我到底是要用一般Arraylist
還是我應該要用LinkedHashMap
或是使用HashMap
我還是無法理解

再來是如果我需要再Array裡面插入一筆資料
以PHP來說只要知道要插入的點在哪
例如要在第75筆資料插入一個Array為tmp_data

$test["75"]["tmp_data"] = $tmp_data; 

這樣就可以插入進去了

到了Java後我要先解開來
解開來的時候還要注意
是用哪一個包起來的
用錯解開的也會直接噴錯或是有問題
解開後我到底是要用add還是用put去加入新的資料
我無法分辨

最後是Java在改變變數內的值得時候
是不是要先拷貝還是怎樣的
變成一個新的值再去針對那個新的值做改變
才不會影響到原先的變數
若是PHP的話
就直接

$old_data = $new_data;

這樣就可以直接使用新的數值
然後也不會影響到原本變數的數值

然後謝謝大家把我學習時遇到的狀況看完

想問的是我應該要怎麼學習Java會比較能夠好理解
Java的一些習性或是概念等等的

看更多先前的討論...收起先前的討論...
Thinking in Java...
如果對一門程式語言有足夠的了解,跨另一門語言的問題不大。因為概念都差不多,懂語法就可以了。但您的情況似乎連變數宣告、初始化都不太清楚。甚至把List與Map混在一起。建議重新把基礎打好...
fillanofeng 感謝大大~~~我盡量用Java的思路去思考
cronjob的話建議去熟悉ㄧ下quartz這個java套件!
那也是一本書...
Darwin Watterson好喔有空的話我會去研究看看的
fillanofeng對耶~~~我剛剛去訪問一下谷歌後找到了那本書
fillano iT邦超人 1 級 ‧ 2020-04-23 14:19:51 檢舉
https://openhome.cc/Gossip/ 良葛格的書不錯,它網站上也很多免費的東西。最近應該會再版。(雖然他這一陣子好像比較常在玩OpenSCAD)
fillano
我有買他的Java SE8 技術手冊
但有發現有看沒有很懂還在多看多練當中
感謝大大的建議
我永遠的程式恩師ㄧ直都是W3School。當初自學php也是從W3School開始的 XD
拍謝昨天可回覆的次數用完所以現在才回覆
我之前也是靠藍色精靈
阿不是,是藍色小舖學習程式開發的
然後學css跟js的時候是看W3School
在學Java之前覺得學程式語言有這麼難嗎
學了Java後才發現自己的思維上很有問題哈哈哈
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

8
㊣浩瀚星空㊣
iT邦大神 1 級 ‧ 2020-04-23 11:24:40
最佳解答

你要記得php是屬於弱型態語言。
如果說你當初是學「php」。那你就只能在php上了。
但如果你學的是「程式」,那無論是php還是java都會得心應手了。

可能你不懂得我再說什麼。
也就是說,在寫php時期,並未採用嚴格式的寫法。
那在java或是其它嚴格式的語言程式上,就會變得比較吃力。

如果說要怎麼學習。你得先從了解何謂是學習。
是要學習「java」呢??還是要學習「程式」呢?
先思考一下吧。

看更多先前的回應...收起先前的回應...

也就是說,在寫php時期,並未採用嚴格式的寫法。
那在java或是其它嚴格式的語言程式上,就會變得比較吃力。

應該說我一開始是學習寫VB....久遠的高中
然後就一路學習寫PHP
在學的時候其實也不知道應該要怎麼寫
就是看書上說的一樣畫葫蘆出來
然後就是寫久了需要什麼function就去看文件看原生有沒有
沒有就自己做一個出來

所以你的意思是說
我應該把思維放在學程式才對
而不是放在學某個語言上的意思吧

不錯,一點就通了。
認真來說,就是先了解程式的架構寫法及規劃。
從中去了解變數的類型跟容器的區分應用。

如你目前搞不定的array、list、Pointer。
但如果你將其視為一種「資料集合」看待的話。
就不會覺得有困難度。
不過我在這樣說起來雖然感覺簡單。
但實際要了解的人還是你。

不過如果你能達到這樣的地步,以後要學什麼就都不是難事了。
因為你只剩下去了解什麼能用什麼不能用而已了。

認真來說,就是先了解程式的架構寫法及規劃。
從中去了解變數的類型跟容器的區分應用。

因為這不是一個大型專案
簡單來說可能就是一支兩支程式去跑公定工作
把人事資料從資料庫撈出來
做成需求單位需要的報表
然後在固定時間寄信出去
這根本是簡單到不能在簡單的東西

想問一下你這邊說的[先了解程式的架構寫法及規劃]
是指要開發的程式對吧
應該不是指程式語言齁

如你目前搞不定的array、list、Pointer。
但如果你將其視為一種「資料集合」看待的話。
就不會覺得有困難度。
不過我在這樣說起來雖然感覺簡單。
但實際要了解的人還是你

是不是我買本書來看
跟多找些這部分的資料來讀讀
來了解關於「資料集合」的部分
會在學習開發程式上會比較有效果

另外想問一下大大一個問題
學習寫程式

學習某個程式語言
思維上不同我知道
但坊間的書籍都是以某某程式語言
或是某某開發
等方式去介紹
甚少是把思維建構在程式上
有推薦的書籍嗎?

淺水員 iT邦大師 6 級 ‧ 2020-04-23 12:29:02 檢舉
  1. 習慣強型別語言的寫法(雖然我不確定 java 算哪種)
  2. 找「資料結構」、「演算法」相關的書來看。以前大學時修過這些課程,當時要用C語言實作 linked list 等容器。在這樣的基礎下會比較知道不同容器內部是怎麼運作的,讀寫的代價又是什麼。

是指要開發的程式對吧
應該不是指程式語言齁

是的,現在的程式語言,不外乎都已經拖離不了mvc的基本架構。
所以寫程式的模組化應用及控制規劃出來之後。
剩下來的就是要用何種語言來達到目的。
無論是選用php還是java還是c#。本質架構不變的情況下。
就只剩下如何去帶入對應的函數或應用。

我過我說真的,我這樣說起來看似幾句話就完成。
實際操作面還是得要去了解各自程式語言的應用。

但是你有架構出來,就等於有了方向。
有了方向,你就有查尋問題的能力。

學習某個程式語言
思維上不同我知道
但坊間的書籍都是以某某程式語言....

基本上,像淺水員說的「資料結構」、「演算法」等。都是學習架構的一種。只是如何理解及吸收。是非常看個人的吸收能力。
我很少會去介紹書的。因為在不清楚你的能力及理解程度。
介紹不對的書是很危險的事。
我只能跟你說我以前在找書,都是自已去書局。有時一找就是找半天。
怕買錯有時也會多買幾本。
我在學習階段,也曾經買錯書。買到太專業的,反而看不懂再講什麼。
就先放著。等到有一定功力後。再來這本書就看懂了。
ps:但看懂了後就很想將那本書拿去燒掉,完全沒用。哈哈哈。

淺水員好喔謝謝你的建議~~~我會再來去書店找找的

浩瀚星空
大大我講句實話
除了我用PHP開發的專案有導入MVC的架構
其他的Java專案都沒有用MVC去做

但是你有架構出來,就等於有了方向。
有了方向,你就有查尋問題的能力。

我覺得這跟公司環境有關係哈哈哈
我之前連要用laravel+vuejs的時候
主管都說要評估專案大小再決定是否採用框架方式開發
另外的確我在學Java的時候
就發現我有[沒有查詢問題的能力]的問題
相對於在開發PHP有問題上網找的時候
不論是找到解法或是靈光出現的解法
都是很緩慢甚至是根本不知道哪個是我要的
我還特地買了本林信良的Java se8
但看了沒有很懂還在多看當中

基本上,像淺水員說的「資料結構」、「演算法」等。都是學習架構的一種。只是如何理解及吸收。是非常看個人的吸收能力。

會再去書店找找這類的書來充電充電
以前沒有學這些東西也不知道這些東西該學哈哈哈

java 導入mvc就「spring全家餐」,如果你熟悉 Laravel 以過來人的經驗轉spring應該不難,就只差在java 強型態的物件規則吧!如浩瀚大前面講的「強型態」應該會是比較大的罩門!

froce iT邦大師 1 級 ‧ 2020-04-23 16:36:43 檢舉

強型態

這個只能多寫養成習慣...
我最近在寫go,然後切回去寫python也是有點不習慣。

我是幸好以前是寫c出身的。
早就習慣預先宣告好變數。

雖然在寫php時,有時也會偷懶一下不太想宣告。
現在一些老程式,要改成php7就一堆通知出現。
人還是不要太懶。

java 導入mvc就「spring全家餐」,如果你熟悉 Laravel 以過來人的經驗轉spring應該不難,就只差在java 強型態的物件規則吧!如浩瀚大前面講的「強型態」應該會是比較大的罩門!

對物件規則我超不熟悉的
加上之前學習的時候嚴謹度不夠
變成我現在的嚴重問題要好好補強

我是幸好以前是寫c出身的。早就習慣預先宣告好變數。雖然在寫php時,有時也會偷懶一下不太想宣告。現在一些老程式,要改成php7就一堆通知出現。人還是不要太懶。

我PHP目前沒有這個問題
但我猜如果是之前沒有框架下去寫的
應該就會遇到你說的問題了
我之前某間公司的網頁就是公司自幹出來的
那個感覺升級到php7應該很可怕

3
海綿寶寶
iT邦大神 1 級 ‧ 2020-04-23 11:18:08

Madonna 有說過
Like a virgin, learned for the very first time.

送你一個速成用的關鍵字/句型(Google用的)
可以省掉你不少來此發問的時間
java equivalent to php {雞腿}

java equivalent to php array
java equivalent to php print_r

php 都能自學了
java 一定也沒問題的
祝你好運

感謝大大的分享
我真的很多時候是google到太多資料
無法辨識出哪些是我需要的到很無力
java equivalent to php {雞腿}
我剛剛嘗試了一下
發現新大陸
真的太感謝了

大大不好意思
你說的內容很棒是我需要的
但我覺得浩瀚星空大大說的
是一種思維上的改變
比較能對我有更深遠的幫助
所以我選他為最佳解答
感謝您的回答

我要發表回答

立即登入回答