之前我常說,公司用什麼技術我就學什麼。但是對於java,我曾經一度覺得「學java是不可能的,這輩子不可能學java的。」結果,一遇到公司轉java,我就不得不跑路了,因而乎,回頭一看N家公司交過社保,連我本身都有點驚訝,竟然有這麼多家公司了。對於java的梗,這是有歷史原因的,大二的時候同一大波人去藍傑參加java培訓,當時一個空心的菱形怎麼也寫不出來,我寫來寫去就是一個實心的磚頭,結果培訓老師實在看不下去了,就說:「唉!你不適合搞java」,我看了下一同前去的幾個同窗一會兒就都寫出來了,搞得我一度開始懷疑本身的IQ。因而,我就跑去自學C#了,直到多年後,我才理解當時老師的話是:「你不適合作軟件,而不僅僅是java」。沒錯,像咱們這樣的大專狗學習能力實在不行,當時同屆的一個培訓班學生現在在騰訊擼java都年薪150w了,還有什麼好說的呢?在天朝你擼.net估計擼到死都難以拿那麼高薪水的。那培訓班專門收羅中南、湖大、師大的高材生去參加培訓,學歷和IQ、學習能力都不是我這樣的復讀大專狗能夠比的,唉!。還有一個沒有去轉java的緣由,就是看見我那些在深圳搞java的大學同窗,加班太恐怖了,動不動就是什麼996,搞得我懼怕。可能由於都是大專狗,又是在擼碼,沒有去作java架構師吧,都是擼碼的話,擼java和擼.net感受差異真不大,所謂的高薪都是加班加出來的。相比而言,.net工資低點,上班也輕鬆許多,就那麼點東西,分分鐘完成開發任務,有必要裝加班麼?php
搜了下網上的招聘,架構師不多有.net和PHP的,大多數都是java系,因此若是要作架構師的話,java是你不得不面對的。.net和php目前不過是在夾縫中生存,作後端,java是首選,那麼前端,如今愈來愈專業愈來愈強大了,曾經瘦前端的時代已通過了,前端和後端已經徹底能夠平起平坐,許多公司也都有了專門的前端,專業的人作專業的事,而.net和php卻夾在中間,逐漸的失去了競爭優點。
css
如今不想再逃避了,Java就Java吧,因而乎,Java學習之路就開始了。html
我在學習java的時候老是喜歡拿它們倆進行比較,因爲C#太過優雅,以至於學習Java語法的過程當中,無可避免的會各類吐槽。Java是參考的C++,C#是參考的C++和Java,繼承了二者的一些語法優勢,而後又添加了本身特有的許多語法糖。前端
.net轉java 就像學自動擋車的人,要去開手動擋的車。手動擋好仍是自動擋好?
java
從.Net到Java學習第一篇——開篇mysql
從.Net到Java學習第二篇——IDEA and start spring boot程序員
從.Net到Java學習第三篇——spring boot+mybatis+mysqlweb
從.Net到Java學習第四篇——spring boot+redisredis
從.Net到Java學習第五篇——Spring Boot &&Profile &&Swagger2spring
從.Net到Java學習第六篇——SpringBoot+mongodb&Thymeleaf&模型驗證
從.Net到Java學習第七篇——SpringBoot Redis 緩存穿透
從.Net到Java學習第八篇——SpringBoot實現session共享和國際化
從.Net到Java學習第九篇——SpringBoot下Thymeleaf
從.Net到Java學習第十篇——Spring Boot文件上傳和下載
從.Net到Java學習第十一篇——SpringBoot登陸實現
從.Net到Java學習第十二篇——SpringBoot+JPA提供跨域接口
.......
說好的屬性呢?
我呢個去?先來看下C#
public string Name { get; set; } public int Age { get; set; }
再來看下Java
public String name; public int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; }
感受忽然迴歸到了C#2.0時代,整我的一會兒穿越了。更奇葩的是String,首字母必須是大寫,而其它基本類型又是首字母小寫。再看java內置的一些包,import java.util.Scanner;什麼狀況,爲啥,有些單詞是首字母小寫,最後面的類又變成大寫,這是大駝峯仍是小駝峯呢?
C#用:表示繼承和實現,Java又是extends又是implements的,這個還比如較好理解只是麻煩一點,竟然把繼承和實現分開了,關鍵字C#的base對應到了Java的supper。有一點奇怪的是Java的包和C#的命名空間仍是有一點區別的,Java的包還會在磁盤上產生對應的物理文件夾。
我又習慣性的var _age=2;,這下又報錯了。神馬狀況?int _i=new int();,亞妮?又錯了?要這樣:Integer _i=new Integer(4);既然有了int爲啥還要Integer呢,C#統統支持new int(),java要Integer才支持可空,而C#加上一個?就能夠了。
Java8以後開始支持Lambda了,這個C#在不少年前就支持了的語法特性。
java的錯誤提示,真的跟成箴語差很少,這也太泛了吧,沒有足夠的經驗,有時候一會兒讓人摸不着頭腦,不像.net錯誤提示巴不得告訴你代碼直接該怎麼樣寫。有時候,若是一不當心,搞錯個配置,TMD半天時間可能就搭那裏了。
千言萬語先打住........
語法熟悉以後,我就去熟悉IDE,Java經常使用的IDE目前主要是:eclipse.exe、MyEclipse 2017 CI、IntelliJ IDEA Community Edition 2018.1.4 x64。
因而乎我無論三七二十一下載下來玩一下再說。eclipse綠色版免安裝,MyEclipse要破解一下,IntelliJ IDEA暫時還沒用,很差說。
如今就說下用eclipse和MyEclipse的感覺,從名字就能夠看出它們是同出一脈的,因此使用上也差很少。剛下載下來,我覺得跟VS同樣直接就能夠來擼碼了,才發現我又錯了。配置、配置、配置。重要的事情說三遍,各類配置,估計是java的特性吧。各類配置我都弄好後,發現,智能提示又是一坨稀泥同樣了。好吧,聽說有快捷鍵,每次按Alt+/,我忽然想,只要看見鍵盤上,這兩個按鍵磨沒了,確定是java程序員吧。
我熟記了這兩個IDE各類經常使用的快捷鍵,不知道是我手小了、手指短了的緣故仍是咋的,多操做幾遍就手指抽筋,一隻手按不完快捷鍵,兩隻手按的話,總有一隻手要移動好遠,按完再復位,對我這樣十個手指頭敲鍵盤的人來講,實在是有點不適應。還有就是這些個快捷鍵常常和各類輸入法的快捷鍵衝突,你得去幹掉輸入法的一些快捷鍵配置。而後我又開始試下HTML、css和js的智能提示,又嘗試了文件引用,我拿鼠標單擊去拖放,直接卡死不動了,才發現不支持,好吧我又手敲一下,手敲的智能提示又實在太弱了,原本0.1s能夠搞定的一個文件引用,我硬是敲了好幾秒,總算是鬆了口氣。
VS裏面許多快捷是組合快捷鍵,很難和其它軟件的快捷鍵衝突,並且敲快捷鍵手指不須要移動,如Ctrl+K,Ctrl+S;Ctrl+K,Ctrl+U;等
我去問我那些搞java的同窗,他們怎麼弄的,他們說就是這樣弄的,習慣了就行了,感受還好啊。我很不理解,一樣的功能我用VS編碼效率會高不少啊,開發效率低,對開發人員來講,意味着加班,難怪跟我那些搞java的同窗比起來,我加的班,可能不到他們的百分之一(我基本上一年都加不了幾回班,大多數狀況都是準點;還有一個重要的緣由,Java互聯網公司多唄,如今.Net在許多互聯網公司主要打打雜,傳統企業有許多舊項目多是.net的),難道真的是沒用對比就沒有傷害嗎?多是我對VS的使用太純熟了,對eclipse和MyEclipse還不夠熟吧。
java中有的.net基本上也有。h五、js、前端框架和數據庫是共用的。又都是面向對象的高級語言,並且都是參考過C++,以後又相互模仿相互抄襲。至於各類框架,不過是各類設計模式的體現罷了,而設計模式對面向對象編程而言又是同樣的。
.net | java |
通常處理程序 | Servlet |
aspx | jsp |
C# | Java |
spring.net | spring |
NHibernate | Hibernate |
asp.net mvc | spring mvc |
log4net | log4 |
Quartz.Net | Quartz |
Lucene.Net | Lucene |
NVelocity | Velocity |
Mybatis.net | Mybatis |
... | ... |
一、打開 MyEclipse -> Window -> Perferences -> Java -> Editor -> Content Assist,在右邊最下面一欄找到 auto-Activation ,下面有三個選項,找到第二個「Auto activation triggers for Java:」選項
二、在其後的文本框中會看到一個「.」存在。這表示:只有輸入「.」以後纔會有代碼提示和自動補全,咱們要修改的地方就是這裏。把該文本框中的「.」換掉,換成「abcdefghijklmnopqrstuvwxyz.」,這樣,你在MyEclipse 裏面寫Java代碼就能夠作到按「abcdefghijklmnopqrstuvwxyz.」中的任意一個字符都會有代碼提示
http://www.javashuo.com/article/p-qzbuooen-my.html
JDK是32位,而IDE是64位所致。
<= abcdefghijklmnopqrstuvwxyz
配置完後要重啓myEclipse
eclipse代碼自動提示設置、如何配置eclipse的代碼自動提示功能?
Ctrl+Alt+H:查看當前類在哪些地方被繼承。
ctrl+shift+g:查看當前類在哪些地方被引用。
做爲.Net程序員,我實在是不慣MyEclipse上面的各類主題,因而我本身作了一個跟VS類似的主題
主題包下載地址:https://download.csdn.net/download/zouyujie1127/10457891
下載主題包,而後打開myeclipse導入便可。
關於MyEclipse 2017文本編輯器設置html代碼提示功能更換主題顏色
IntelliJ IDEA 編譯Java程序出現 'Error:java: 無效的源發行版: 9' 的解決方案
Intellij IDEA 最新旗艦版註冊激活破解(2018親測,可用)
NSIS Error:運行安裝包出現installer integrity check has failed錯誤解決方法
[Intellij] 在IntelliJ IDEA 中建立運行web項目
【問題解決】IDEA右鍵選擇new新文件的時候沒有JSP文件選項解決
IntelliJ IDEA開發Java web項目,JSP無代碼提示或自動補全 問題
F9 resume programe 恢復程序
Alt+F10 show execution point 顯示執行斷點
F8 Step Over 至關於eclipse的f6 跳到下一步
F7 Step Into 至關於eclipse的f5就是 進入到代碼
Alt+shift+F7 Force Step Into 這個是強制進入代碼
Shift+F8 Step Out 至關於eclipse的f8跳到下一個斷點,也至關於eclipse的f7跳出函數
Atl+F9 Run To Cursor 運行到光標處
ctrl+shift+F9 debug運行java類
ctrl+shift+F10 正常運行java類
alt+F8 debug時選中查看值
熟悉語法、IDE以後,剩下的就是其系統自身的各類類庫,和其生態體系中的各類框架了。一開始下載IDEA的時候弄錯了,下載的免費版,好多功能沒有,後面從新下載了企業版。
接下來學習spring boot+mybatis+maven