1. 程式人生 > >從.Net到Java學習第一篇——開篇

從.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 就像學自動擋車的人,要去開手動擋的車。手動擋好還是自動擋好?

系列文章目錄

.......

我們不一樣

  說好的屬性呢?

我呢個去?先來看下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.”中的任意一個字元都會有程式碼提示

myEclipse2017新增tomcat伺服器

Eclipse執行時報錯

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

 MyEclipse 2016 上配置HTML5的標籤自動提示

<= abcdefghijklmnopqrstuvwxyz

配置完後要重啟myEclipse

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

eclipse常用快捷鍵

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

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

myeclipse仿vs主題

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

下載主題包,然後開啟myeclipse匯入即可。

關於MyEclipse 2017文字編輯器設定html程式碼提示功能更換主題顏色

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

IntelliJ IDEA常見問題

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

相關推薦

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

   以前我常說,公司用什麼技術我就學什麼。可是對於java,我曾經一度以為“學java是不可能的,這輩子不可能學java的。”結果,一遇到公司轉java,我就不得不跑路了,於是乎,回頭一看N家公司交過社保,連我自己都有點驚訝,居然有這麼多家公司了。對於java的梗,這是有歷史緣由的,大二的時候同一大波人去藍

Golang學習-第一 Golang的簡單介紹及Windows環境下安裝、部署

需要 簡單 電腦 pan 生成文件 多核 -- pear () 序言 這是本人博客園第一篇文章,寫的不到位之處,希望各位看客們諒解。 本人一直從事.NET的開發工作,最近在學習Golang,所以想著之前學習的過程中都沒怎麽好好的將學習過程記錄下來。深感惋惜! 現在將Gola

JS學習第一-Array

con push [1] width strong arr 輸出結果 更多 document Array聲明 1、var arr=[1,2,3,.......,n]; 2、var arr=new Array(n);

python學習第一

else div sta width aps 技術 orm 提示 pre 一:python安裝及開發工具(pycharm)安裝   1.在python官網(https://www.python.org/)安裝最新版的python文件。   2.下載pycharm最新版並安裝

深度學習-機器學習 第一

樸素 記錄 前置聲明 3.6 box 信息 郵件內容 data 最大 簡介 前置聲明:本專欄的所有文章皆為本人學習時所做筆記而整理成篇,轉載需授權且需註明文章來源,禁止商業用途,僅供學習交流.(歡迎大家提供寶貴的意見,共同進步) 正文: 機器學習,顧名思義,就是研究計算機如

MyBatis學習——第一(增刪改查實現)

1:MyBatis入門   1.1  Mybatis概述         MyBatis 是一款優秀的持久層(ORM)框架,它支援定製化 SQL、儲存過程以及高階對映。MyBatis 避免了幾乎所有的 JDBC 程式碼

機器學習第一(下)

實戰演練 ——MovieLens 第一步:獲取資料集 第二步:解壓檔案後,將u.item以及u.data新增到專案中,加入方法loadMovieLens def loadMovieLens(path='data/movielens'): movies={} for

機器學習第一(中)

  在上篇裡,我們學會了如何為指定人員尋找品味相近者,以及如何向其推薦商品的方法,但是我們想了解哪些商品是彼此相近的,那又該如何做呢? 我們可以通過檢視哪些人喜歡某一特定物品,以及這些人喜歡哪些其他物品來決定相似度。事實上,只需要將人員與物品對換即可。 def transfor

機器學習第一(上)

  提供推薦(電影,音樂,書籍,交友,購物,網站,部落格服務,文章,幽默笑話等): 這是我在看《集體智慧程式設計》這本書時所做的筆記,一是為了以後忘記的時候能再翻回來看一看,二是將自己所記錄的東西能夠與大家分享,三是保持我對人工智慧的激情與動力。 協作性過濾:對一大群人進行搜尋

c++學習第一

1、物件和類概念     物件:實體,真實存在的個體。           編譯器為之分配空間的變數。           特徵屬性,行為。   &nbs

SpringBoot學習第一:構建第一個SpringBoot工程

https://www.fangzhipeng.com/springboot/2017/07/11/springboot1 本文出自方誌朋的部落格   簡介spring boot 它的設計目的就是為例簡化開發,開啟了各種自動裝配,你不想寫各種配置檔案,引入相關的依賴就能迅速搭建起一

Python 語言學習 第一:資料型別(數字,集合,布林型別,操作符)

Python語言最常用的物件是變數和常量,常量的值是字面意思,其值是不可變的,變數的值是可變的,例如,123,"上海"是常量,而a=1,a=2,其中a是變數名。內建的核心資料型別有:數字、字串、列表、字典、元組、檔案、集合、None和布林型別。Python是強型別的語言,變數的資料型別是由初始化的常量來指定的

1006 計算機網路學習 第一

前言 工作中,時不時會接觸到跟計算機網路有關的問題,雖然很多時候,不需要我去解決,但是也發現,如果我能看懂聽懂,那我就能更好的理解系統,以及學到更多的東西。但是現在由於我懂得太少,以至於白白錯過了好些知識。因此,下定決心好好學習計算機網路! 工作遇到的問題 前段

linux學習第一:在VirtualBox下安裝linux作業系統

轉載地址:https://blog.csdn.net/yuchao2015/article/details/52132270 感謝博主提供如此詳細的linux安裝地址  目標:在linux伺服器上部署Java開發的網站  工具 VirtualBox-4.3.8:下載後

python基礎學習第一

什麼叫python? python是一門計算機程式語言,一種面向物件的指令碼語言   程式設計分為:運維程式設計、網路程式設計、軟體開發 ★python開發就是軟體開發 學習python基礎的總體框架 python基礎 網路程式設計 web框架 設計模式+演算法 專

make學習第一

* make實質上是一個應用程式     * 用於解析源程式之間的依賴關係     * 根據依賴關係自動維護編譯的工作     * 執行宿主作業系統的各種命令 &n

es6學習第一(let和const命令)

let和const 命令 let命令 1、es6新增了let命令,用來宣告變數。它的用法和var 類似,但是let宣告的變數,只在let命令所在的程式碼塊內有效。 { let a = 10 var b = 1 } console.log(a) //referenc

springboot2.X學習第一helloworld

  Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。相信使用spring進行開發的程式設計師,一定曾被其繁瑣而重複的配置,各種版本衝突的問題弄得焦頭爛額過,所以s

WeChat學習第一:natapp使用

一,為什麼使用natapp 1,在進行微信公眾號開發時,我們需要搭建網站,並且隨時都有可能修改網站內容進行除錯。如果能夠將內網ip對映到外網上,將大大方便我們的除錯。每次釋出只需eclipse執行應用即可。 2,通過natapp將內網對映到外網,還可以方便我們其他工作,比如

OpenCV學習第一:開發環境搭建以及顯示電腦中的圖片

第一步:我們下載好了opencv安裝在檔案內,位置自選,我的是這樣的,這一步最簡單 第二步:我的電腦右鍵屬性-高階系統設定-環境變數-系統變數-Path 加上;D:\opencv\build\x64