天天看點

從.Net到Java學習第一篇——開篇

   以前我常說,公司用什麼技術我就學什麼。可是對于java,我曾經一度以為“學java是不可能的,這輩子不可能學java的。”結果,一遇到公司轉java,我就不得不跑路了,于是乎,回頭一看N家公司交過社保,連我自己都有點驚訝,居然有這麼多家公司了。對于java的梗,這是有曆史緣由的,大二的時候同一大波人去藍傑參加java教育訓練,當時一個空心的菱形怎麼也寫不出來,我寫來寫去就是一個實心的磚頭,結果教育訓練老師實在看不下去了,就說:“唉!你不适合搞java”,我看了下一同前去的幾個同學一下子就都寫出來了,搞得我一度開始懷疑自己的IQ。于是,我就跑去自學C#了,直到多年後,我才了解當時老師的話是:“你不适合做軟體,而不單單是java”。沒錯,像我們這樣的大專狗學習能力實在不行,當時同屆的一個教育訓練班學生如今在騰訊撸java都年薪150w了,還有什麼好說的呢?在天朝你撸.net估計撸到死都難以拿那麼高薪水的。那教育訓練班專門收羅中南、湖大、師大的高材生去參加教育訓練,學曆和IQ、學習能力都不是我這樣的複讀大專狗可以比的,唉!。還有一個沒有去轉java的原因,就是看見我那些在深圳搞java的大學同學,加班太恐怖了,動不動就是什麼996,搞得我害怕。可能因為都是大專狗,又是在撸碼,沒有去做java架構師吧,都是撸碼的話,撸java和撸.net感覺差别真不大,所謂的高薪都是加班加出來的。相比而言,.net工資低點,上班也輕松許多,就那麼點東西,分分鐘完成開發任務,有必要裝加班麼?

  搜了下網上的招聘,架構師很少有.net和PHP的,大多數都是java系,是以如果要做架構師的話,java是你不得不面對的。.net和php目前不過是在夾縫中生存,做後端,java是首選,那麼前端,現在越來越專業越來越強大了,曾經瘦前端的時代已經過了,前端和後端已經完全可以分庭抗禮,許多公司也都有了專門的前端,專業的人做專業的事,而.net和php卻夾在中間,逐漸的失去了競争優勢。

  現在不想再逃避了,Java就Java吧,于是乎,Java學習之路就開始了。

  我在學習java的時候總是喜歡拿它們倆進行比較,由于C#太過優雅,以緻于學習Java文法的過程中,無可避免的會各種吐槽。Java是參考的C++,C#是參考的C++和Java,繼承了兩者的一些文法優點,然後又添加了自己特有的許多文法糖。

  .net轉java 就像學自動擋車的人,要去開手動擋的車。手動擋好還是自動擋好?

系列文章目錄

從.Net到Java學習第一篇——開篇

從.Net到Java學習第二篇——IDEA and start spring boot

從.Net到Java學習第三篇——spring boot+mybatis+mysql

從.Net到Java學習第四篇——spring boot+redis

從.Net到Java學習第五篇——Spring Boot &&Profile &&Swagger2

從.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基本上也有。h5、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如何設定自動提示

1、打開 MyEclipse  -> Window -> Perferences -> Java -> Editor -> Content Assist,在右邊最下面一欄找到 auto-Activation ,下面有三個選項,找到第二個“Auto activation triggers for Java:”選項

2、在其後的文本框中會看到一個“.”存在。這表示:隻有輸入“.”之後才會有代碼提示和自動補全,我們要修改的地方就是這裡。把該文本框中的“.”換掉,換成“abcdefghijklmnopqrstuvwxyz.”,這樣,你在MyEclipse 裡面寫Java代碼就可以做到按“abcdefghijklmnopqrstuvwxyz.”中的任意一個字元都會有代碼提示

從.Net到Java學習第一篇——開篇

myEclipse2017添加tomcat伺服器

https://blog.csdn.net/weiyongle1996/article/details/75195918

Eclipse運作時報錯

從.Net到Java學習第一篇——開篇

JDK是32位,而IDE是64位所緻。

 MyEclipse 2016 上配置HTML5的标簽自動提示

<= abcdefghijklmnopqrstuvwxyz

從.Net到Java學習第一篇——開篇

配置完後要重新開機myEclipse

eclipse代碼自動提示設定、如何配置eclipse的代碼自動提示功能?

eclipse常用快捷鍵

從.Net到Java學習第一篇——開篇

Ctrl+Alt+H:檢視目前類在哪些地方被繼承。

ctrl+shift+g:檢視目前類在哪些地方被引用。

myeclipse仿vs主題

作為.Net程式員,我實在是不慣MyEclipse上面的各種主題,于是我自己做了一個跟VS相似的主題

主題包下載下傳位址:https://download.csdn.net/download/zouyujie1127/10457891

從.Net到Java學習第一篇——開篇

下載下傳主題包,然後打開myeclipse導入即可。

從.Net到Java學習第一篇——開篇

關于MyEclipse 2017文本編輯器設定html代碼提示功能更換主題顔色

Servlet使用注解配置URl提示404錯誤

IntelliJ IDEA常見問題

IntelliJ IDEA 編譯Java程式出現 'Error:java: 無效的源發行版: 9' 的解決方案

idea 自動導入包 快捷鍵

Intellij IDEA 最新旗艦版注冊激活破解(2018親測,可用)

IntelliJ IDEA 缺少 javax 包 支援

IDEA快捷鍵

NSIS Error:運作安裝包出現installer integrity check has failed錯誤解決方法

[Intellij] 在IntelliJ IDEA 中建立運作web項目

Intellij2016.2 設定maven自動提示

【問題解決】IDEA右鍵選擇new新檔案的時候沒有JSP檔案選項解決

IntelliJ IDEA開發Java web項目,JSP無代碼提示或自動補全 問題

IDEA 通過maven 建立項目問題解決

IDEA調試快捷鍵

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

部落格位址: http://www.cnblogs.com/jiekzou/
部落格版權:

本文以學習、研究和分享為主,歡迎轉載,但必須在文章頁面明顯位置給出原文連接配接。

如果文中有不妥或者錯誤的地方還望高手的你指出,以免誤人子弟。如果覺得本文對你有所幫助不如【推薦】一下!如果你有更好的建議,不如留言一起讨論,共同進步!

再次感謝您耐心的讀完本篇文章。

其它:

.net-QQ群4:612347965

java-QQ群:805741535

H5-QQ群:773766020

我的拙作《ASP.NET MVC企業級實戰》《H5+移動應用實戰開發》

《Vue.js 2.x實踐指南》

《JavaScript實用教程 》

《Node+MongoDB+React 項目實戰開發》

已經出版,希望大家多多支援!

從.Net到Java學習第一篇——開篇