常熟學(xué)java開發(fā)_JAVA培訓(xùn)
¥3800.00元
班制:周末班
蘇州其然軟件開發(fā)其然IT教育集團是廣州騰科網(wǎng)絡(luò)技術(shù)有限公司旗下運營的網(wǎng)站平臺。其然IT 教育集團是一家以提供新型、**的IT技術(shù)培訓(xùn)(教育)解決方案為主要經(jīng)營目標的專業(yè)公司,是中國高端IT培訓(xùn)的**品牌。聯(lián)合思科(Cisco)、甲 骨文(Oracle)、紅帽(Red Hat)、華為(Huawei)、微軟(Microsoft)、美國計算機行業(yè)協(xié)會(CompTIA)等國際知名IT廠商以 及國內(nèi)300多家高等院校, 開展IT認證技能培訓(xùn)和IT職業(yè)課程教育,培養(yǎng)新型IT高級人才,是Pearson VUE國際電子考試中心和Prometric(普爾文)授權(quán)考試中心,并是達索 (solidworks)、安氏(LinkTrust)的授權(quán)經(jīng)銷商。
其然IT教育集團下轄上海分公司、深圳分公司、武漢分公司、杭州分公司等 8個分支機構(gòu)。以及30多個培訓(xùn)網(wǎng)點,業(yè)務(wù)涵蓋全國主要大、中型城市。
java入門要注意什么
學(xué)習(xí)java就像是一個種花的過程,不斷地為其施肥澆水,它才會茁壯成長。 而我們學(xué)習(xí)java,就要不斷的充實自己、提升自己,才能獲得更多機會。很多開始學(xué)習(xí)java編程的小白,經(jīng)常就會被概念、定義什么的搞糊涂。當分類 、對象、接口、構(gòu)造函數(shù)等等各種專業(yè)名詞出現(xiàn)的時候,你一定是腦子里好像一片空白,根本就搞不懂這些字眼的意思和關(guān)系,而且,這種情況下,很 容易導(dǎo)致你喪失自信心,開始逃避、拒絕,這些小白經(jīng)常遇到的情況在我剛接觸java的時候也遇見了,但是好在我足夠幸運,遇見了誠筑說。我現(xiàn)在已 經(jīng)是公司的項目經(jīng)理了,今天,我為大家來總結(jié)了一些經(jīng)驗和建議,希望能夠幫助到大家。
一點:熟練基本的j2seAPI
除去java語言本身的語法之外呢,要懂得并且熟練j2seAPI的API也是非常有 必要的,在這里,就建議大家首先去掌握字符串的處理、異常的處理、容器、輸入輸出、線程等,這些相對來說較為重要的。還有就是API的內(nèi)容是非 常龐大的,關(guān)于API,一定要懂得查詢API的文件說明,在了解了其作用用途或者目的才能夠進行相對于的程序。
二點:穩(wěn)固java的語法基礎(chǔ)
學(xué)習(xí)java一定要學(xué)會使用java的程序語言,用來編寫程序,但是學(xué)習(xí)程序語 言就要熟悉語法是怎么使用的。程序語言其實也是一種語言,不過跟人類的語言不同,這種語言是要和計算機溝通交流,那怎么做才能熟悉這種語言呢 ,我給出的建議是多看別人寫的程序,了解人家是怎么用java來解決問題的。然后再找類似的程序去練習(xí)了,這樣就能夠從實際操作中檢驗自己是否真 的知道該怎么去解決問題了。
三點:加入貼吧論壇多參與討論
根據(jù)我當時的經(jīng)驗,在大家學(xué)習(xí)的過程中,如果有人可以參與話題,共同討 論的話,會加快你學(xué)習(xí)的速度。所以大家可以和我一樣,找一個技術(shù)討論的地方,貼吧啊,論壇啊都可以,在這里進行討論,畢竟大家有著共同的目標 和理想,有著共同的話題可聊,這樣的話,又大大節(jié)省了學(xué)習(xí)的時間。
學(xué)完基本的java語法呢,現(xiàn)在就該用java來進行實際的編程了,假如你需要 編寫窗口程序,那就學(xué)Swing窗口設(shè)計;假如你要編寫數(shù)據(jù)庫什么的,那就學(xué)JDBC等等。
Java課程介紹 :
Java企 業(yè)級應(yīng)用
“就業(yè)班”
一階段 Java語言核心
第二階段 數(shù)據(jù)庫及Web前端技術(shù)
第三階段 Java Web開發(fā)及服務(wù)端 框架
第四階段 綜合項目實踐
Java課程介紹
Java企業(yè)級應(yīng)用
“就業(yè)班”
一階段 Java語言核心
二階段 數(shù)據(jù)庫及Web前端技術(shù)
三階段 Java Web開發(fā)及服務(wù)端框架
四階段 綜合項目實踐
Java互聯(lián)網(wǎng)開發(fā)
“培優(yōu)班”
一階段 Java語言核心
二階段 Java Web服務(wù)端技術(shù)
三階段 Java Web框架及互聯(lián)網(wǎng)架構(gòu)
四階段 Java互聯(lián)網(wǎng)架構(gòu)
職場華麗轉(zhuǎn)身
“才高班”
大數(shù)據(jù) 互聯(lián)網(wǎng)大牛班
6大實訓(xùn)項目
“愛逛網(wǎng)”電商后端數(shù)據(jù)平臺
培訓(xùn)經(jīng)驗=就業(yè)經(jīng)驗
“培優(yōu)班”
一階段 Java語言核心
第二階段 Java Web服務(wù)端技術(shù)
第三階段 Java Web框架及互聯(lián)網(wǎng)架構(gòu)
第四階段 Java互聯(lián)網(wǎng)架構(gòu)
職場華麗轉(zhuǎn)身
“才高班”
大數(shù)據(jù) 互聯(lián)網(wǎng)大牛班
6大實訓(xùn)項目
“愛逛網(wǎng)”電商后端數(shù)據(jù)平臺
培訓(xùn)經(jīng)驗=就業(yè)經(jīng)驗
Groovy 快速入門
>
Groovy是一門基于JVM的動態(tài)語言,很多語法和java類似。大部分Java代碼也同時是合法的Groovy代碼。本文是快速入門,所以針對語法并不會做非常詳細的介紹。如果需要詳細語法,請直接查看Groovy**方文檔。另外為了省事,本文中的大部分代碼例子直接引用了Groovy文檔。
基本內(nèi)容
注釋
單行注釋,以//
開頭。
多行注釋,/* */
。
GroovyDoc注釋,和JavaDoc注釋類似。
/** * Creates a greeting method for a certain person. * * @param otherPerson the person to greet * @return a greeting message */Shebang注釋,和linux其他注釋類似,用于指定腳本解釋器的位置。
#!/usr/bin/env groovy標識符
大體上,Groovy標識符的命名規(guī)則和Java差不多。如果某個標識符在Groovy中合法,在Java中不合法,我們可以使用單引號或雙引號將標識符包括起來。
字符串
字符串可以使用單引號
或雙引號"
包括起來。
多行字符串可以使用三個連續(xù)的單引號或雙引號包括。不論是單行還是多行字符串, 都可以使用反斜杠轉(zhuǎn)義字符。
def multiline="""line1 line2 line3 """我們還可以將變量直接插入到字符串中,這叫做內(nèi)插字符串(String interpolation)。語法和EL表達式類似。編譯器會把美元和花括號中的內(nèi)容替換成實際的值,內(nèi)插字符串中還可以進行表達式計算。
def name = Guillaume // a plain string def greeting = "Hello ${name}"當內(nèi)插字符串可以由前后的符號區(qū)分出的時候,花括號可以省略。
def person = [name: Guillaume , age: 36] assert "$person.name is $person.age years old" == Guillaume is 36 years old當使用內(nèi)插字符串的時候,字符串字面值是Groovy的字符串類型GString。這一點需要注意。普通的Java字符串是不變的,而GString是可變的。另外它們的哈希值也不同。因此在使用Map等數(shù)據(jù)類型的時候需要格外注意,避免使用GString作為Map的鍵。
字符
Groovy沒有字符字面量。如果需要向Java方法傳入單個字符的話,可以使用下面的方法進行轉(zhuǎn)換。
def c2 = B as char assert c2 instanceof Character def c3 = (char) C assert c3 instanceof Character布爾類型
Groovy的布爾類型和Java類似,也有true
和false
兩個值。不過Groovy的布爾語義更豐富。未到結(jié)尾的迭代器、非空對象引用、非零數(shù)字都認為是真;空集合、空字符串等認為是假。詳情參見Groovy文檔 core-semantics#Groovy-Truth
數(shù)字類型
Groovy支持byte
、char
、short
、 int
、long
和 BigInteger
等幾種數(shù)字類型。如果使用普通方式聲明,它們和Java中的變量很相似。
如果使用def
關(guān)鍵字聲明,那么這些數(shù)字會自動選擇可以容納它們的類型。
這些整數(shù)還可以添加0b
、0
和0x
前綴,分別代表8進制數(shù),8進制數(shù)和16進制數(shù)。
另外Groovy還支持float
、double
和BigDecimal
三種浮點數(shù)類型。原理同上。還可以使用科學(xué)計數(shù)法1.123E10
這樣的形式代表浮點數(shù)。
Groovy的數(shù)字常量同樣支持后綴區(qū)分字面值類型,這幾種類型和Java中的類似。唯一不同的是Groovy還支持G
和g
后綴,代表BigInteger或BigDecimal類型,根據(jù)字面值是否含有小數(shù)點來區(qū)分。
數(shù)學(xué)計算
數(shù)字的計算結(jié)果和Java規(guī)則類似:小于int的整數(shù)類型會被提升為int類型,計算結(jié)果也是int類型;小于long的整數(shù)類型和long計算,結(jié)果是long類型;BigInteger和其它整數(shù)類型計算,結(jié)果是BigInteger類型;BigDecimal和其它整數(shù)類型計算,結(jié)果是BigDecimal類型;BigDecimal和float、double等類型計算,結(jié)果是double類型。
列表
Groovy中的列表比較靈活,有點像Python中的列表。使用[....]
語法可以聲明列表,默認情況下列表是ArrayList實現(xiàn)。我們也可以使用as
運算符自己選擇合適的列表底層類型。
有了列表之后,就可以使用它了。使用方法和Python差不多。我們使用[索引]
引用和修改列表元素。如果索引是負的,則從后往前計數(shù)。要在列表末尾添加元素,可以使用左移運算符<<
。如果在方括號中指定了多個索引,會返回由這些索引對應(yīng)元素組成的新列表。使用兩個點加首位索引..
可以選擇一個子列表。
列表還可以組合成復(fù)合列表。
def multi = [[0, 1], [2, 3]] assert multi[1][0] == 2數(shù)組
聲明數(shù)組的方式和列表一樣,只不過需要顯示指定數(shù)組類型。數(shù)組的使用方法也和列表類似,只不過由于數(shù)組是不可變的,所以不能像數(shù)組末尾添加元素。
int[] intArray = [1, 2, 3, 4, 5] def intArray2 = [1, 2, 3, 4, 5, 6] as int[]Map
創(chuàng)建Map同樣使用方括號,不過這次需要同時指定鍵和值了。Map創(chuàng)建好之后,我們可以使用[鍵]
或.鍵
來訪問對應(yīng)的值。默認情況下創(chuàng)建的Map是java.util.LinkedHashMap
,我們可以聲明變量類型或者使用as
關(guān)鍵字改變Map的實際類型。
關(guān)于Map有一點需要注意。如果將一個變量直接作為Map的鍵的話,其實Groovy會用該變量的名稱作為鍵,而不是實際的值。如果需要講變量的值作為鍵的話,需要在變量上添加小括號。
def key = name def person = [key: Guillaume ] //鍵是key而不是name assert !person.containsKey( name ) assert person.containsKey( key ) //這次才正確的將key變量的值作為Map的鍵 person = [(key): Guillaume ] assert person.containsKey( name ) assert !person.containsKey( key )運算符
和Java類似的運算符
Groovy的數(shù)學(xué)運算符和Java類似,只不過多了一個乘方運算**
和乘方賦值**=
。
Groovy的關(guān)系運算符(大于、小于等于這些)和Java類似。
Groovy的邏輯運算符(與或非這些)和Java類似,也支持短路計算。
Groovy的位運算符合Java類似。
Groovy的三元運算符條件?值1:值2
和Java類似。
可空運算符
Groovy支持Elvis操作符,當對象非空的時候結(jié)果是值1,為空時結(jié)果是值2?;蛘吒苯樱瑢ο蠓强帐鞘褂脤ο蟊旧?,為空時給另一個值,常用于給定某個可空變量的默認值。
displayName = user.name ? user.name : Anonymous displayName = user.name ?: Anonymous安全導(dǎo)航運算符
當調(diào)用一個對象上的方法或?qū)傩詴r,如果該對象為空,就會拋出空指針異常。這時候可以使用?.
運算符,當對象為空時表達式的值也是空,不會拋出空指針異常。
字段訪問運算符
在Groovy中默認情況下使用點運算符.
會引用屬性的Getter或Setter。如果希望直接訪問字段,需要使用.@
運算符。
方法指針運算符
我們可以將方法賦給變量,這需要使用.&
運算符。然后我們就可以像調(diào)用方法那樣使用變量。方法引用的實際類型是Groovy的閉包Closure。這種運算符可以將方法作為參數(shù),讓Groovy語言非常靈活。
展開運算符
展開運算符*.
會調(diào)用一個列表上所有元素的相應(yīng)方法或?qū)傩?,然后將結(jié)果再組合成一個列表。
展開運算符是空值安全的,如果遇到了null值,不會拋出空指針異常,而是返回空值。
cars = [ new Car(make: Peugeot , model: 508 ), null, new Car(make: Renault , model: Clio )] assert cars*.make == [ Peugeot , null, Renault ] assert null*.make == null展開運算符還可以用于展開方法參數(shù)、列表和Map。
范圍運算符
使用..
創(chuàng)建范圍。默認情況下范圍是閉區(qū)間,如果需要開閉區(qū)間可以在結(jié)束范圍上添加<
符號。范圍的類型是groovy.lang.Range
,它繼承了List
接口,也就是說我們可以將范圍當做List使用。
比較運算符
<=>
運算符相當于調(diào)用compareTo方法。
成員運算符
成員運算符in
相當于調(diào)用contains或isCase方法。
相等運算符
==
運算符和Java中的不同。在Groovy中它相當于調(diào)用equals
方法。如果需要比較引用,使用is
。
轉(zhuǎn)換運算符
我們可以使用Java形式的(String) i
來轉(zhuǎn)換類型。但是假如類型不匹配的話,就會拋出ClassCastException
。而使用as
運算符就會避免這種情況。
如果希望自己的類也支持as
運算符的話,需要實現(xiàn)asType
方法。
表達式和語句
聲明變量
Groovy支持以傳統(tǒng)方式使用變量類型 變量名
的方式聲明變量,也可以使用def
關(guān)鍵字聲明變量。使用def
關(guān)鍵字的時候,變量類型由編譯器自動推斷,無法推斷時就是Object
類型。
Groovy可以同時聲明多個變量。
def (a, b, c) = [10, 20, foo ]如果左邊的變量數(shù)比右面的值多,那么剩余的變量就是null。
def (a, b, c) = [1, 2] assert a == 1 && b == 2 && c == null如果等號右面比左面多,那么多余的值會被忽略。
def (a, b) = [1, 2, 3] assert a == 1 && b == 2自定義對象也可以用多重賦值進行對象解構(gòu)。該對象必須有g(shù)etAt方法。
class CustomDestruction { int a int b int c //解構(gòu)需要實現(xiàn)getAt方法 def getAt(int i) { switch (i) { case 0: a; break case 1: b; break case 2: c; break default: throw new IllegalArgumentException() } } static void main(String[] args) { //對象解構(gòu) def obj = new CustomDestruction(a: 3, b: 4, c: 5) def (x, y, z) = obj PRintln("x=$x,y=$y,z=$z") } }條件語句
Groovy的if語句和Java的類似。不過在Groovy中布爾值的真假不僅看條件比較的結(jié)果,還可以以其他情況判斷。前面已經(jīng)介紹過了。switch語句同理,真值判斷非常自由。詳情可參見Groovy文檔 真值判斷。
循環(huán)語句
Groovy支持傳統(tǒng)的Java的for(int i=0;i<N;i )
和for(int i :array)
兩種形式。另外還支持for in loop形式,支持迭代范圍、列表、Map、數(shù)組等多種形式的集合。
while語句的形式和Java相同。
斷言語句
前面我們看到了很多Groovy斷言的例子。Groovy斷言語句的功能很強大,以至于文檔中寫的是強力斷言(Power assertion)。
Groovy斷言的形式如下。Groovy斷言和Java斷言完全不同。Groovy斷言是一項語言功能,一直處于開啟狀態(tài),和JVM的斷言功能-ea
完全無關(guān)。所以它是我們進行單元測試的首選方式。
比如我們要斷言1 1=3。結(jié)果應(yīng)該類似這樣。越復(fù)雜的表達式,斷言效果越清晰。有興趣的同學(xué)可以試試。
Caught: Assertion failed: assert 1 1 == 3 | | 2 false構(gòu)造器
Groovy的構(gòu)造器非常靈活,我們可以使用傳統(tǒng)的Java方式聲明和使用構(gòu)造器,也可以完全不聲明構(gòu)造器。有時候不聲明反而更簡單。如果沒有聲明構(gòu)造器的話,我們可以在構(gòu)造對象的時候使用命名參數(shù)方式傳遞參數(shù),這種方式非常方便,因為我們不需要聲明所有參數(shù),只要聲明所需的參數(shù)即可。
如果希望對構(gòu)造器進行限制,可以手動聲明構(gòu)造器,這樣這種自動構(gòu)造就不會進行了。
class Product { String name double price String toString() { return "Product(name:$name,price:$price)" } static void main(String[] args) { def product = new Product(name: AMD Ryzen 1700 , price: 2499) println("隱式構(gòu)造器:$product") } }方法
Groovy方法和Java方法基本相同。不過Groovy方法更方便:支持命名參數(shù)和默認參數(shù)。另外Groovy方法可以使用def
關(guān)鍵字聲明,這時候方法返回類型是Object。在Groovy中方法的返回語句可以省略,這時候編譯器會使用方法的**后一個語句的值作為返回值。在前面我們還看到了def
關(guān)鍵字定義變量,這時候變量的類型需要從代碼中推斷。
在使用命名參數(shù)的時候需要注意一點,方法參數(shù)需要聲明為Map類型(不需要詳細指定鍵和值的類型),在調(diào)用方法的時候使用命名參數(shù)方式傳入?yún)?shù)。
def foo(Map args) { "${args.name}: ${args.age}" } //調(diào)用方法 foo(name: Marie , age: 1)另外方法的括號是可選的,我們可以省略括號直接像這樣調(diào)用方法。
methodWithDefaultParam 555 , 42字段
Groovy中字段和Java中的概念類似。不過Groovy更加方便:默認情況下字段是私有的,Groovy自動生成字段的Getter和Setter。如果需要更精細的控制,把它當成Java字段用就行了。不過如果自定義字段的話,Groovy不會自動生成對應(yīng)的屬性了。
屬性
如果字段上面沒有聲明訪問修飾符(private、public這些),Groovy就會自動生成Gettter和Setter。如果字段是final
的,那么只會生成Getter。這就是Groovy方便的屬性功能。
當然Groovy的方便不止于此,我們的所有類似Java訪問字段的語法,實際上都會調(diào)用字段對應(yīng)的Getter和Setter。這樣顯著減少了代碼量。如果在類內(nèi)部的話,.字段
語法會直接訪問字段,這樣做是為了防止無限遞歸調(diào)用屬性。
下面的例子中,**次調(diào)用p.name = Marge
如果在類內(nèi)部,就直接寫入字段,如果調(diào)用在類外部,就會使用Setter寫入。第二次調(diào)用使用了方法語法,直接使用Setter寫入,所以不管在類內(nèi)還是類外,寫入的值都是"Wonder$name"
。
特征類
Groovy和Scala一樣,支持特征類(trait)。特征類就好像自帶實現(xiàn)的接口。在Java中只能繼承一個類和多個接口。在Groovy中,我們可以繼承多個特征類。特征類和普通的Groovy類一樣,可以包括屬性、字段、方法等,特征類也可以是抽象的。
使用特征類,我們可以在Groovy中實現(xiàn)類似C 的多重繼承。另外,特征類支持運行時動態(tài)綁定,在某些情況下非常有用。
trait Readable { void read() { println("read...") } } trait Writable { void write(String text) { println("write $text") } } class Notebook implements Readable, Writable { static void main(String[] args) { //使用特性類 def notebook = new Notebook() notebook.read() notebook.write("something") } }閉包
閉包是Groovy非常重要的一個功能,也是我們介紹的**后一個功能。要了解閉包,**好先知道Java的Lambda表達式、匿名內(nèi)部類等概念。Groovy閉包和Lambda表達式概念相近,但是功能更強大。
聲明閉包
閉包的形式如下。
{ [closureParameters -> ] statements }
以下都是合法的Groovy閉包。所有閉包都是groovy.lang.Closure
類型的實例。閉包的參數(shù)類型是可選的。如果閉包只有單個參數(shù),參數(shù)名也是可選的。Groovy會隱式指定it
作為參數(shù)名。Kotlin語言也是類似的做法,有助于我們先出可讀性很好的閉包。
調(diào)用閉包
閉包既可以當做方法來調(diào)用,也可以顯示調(diào)用call方法。
def code = { 123 } assert code() == 123 assert code.call() == 123調(diào)用有參數(shù)的閉包也是類似的。
def isOdd = { int i-> i%2 == 1 } assert isOdd(3) == true assert isOdd.call(2) == false使用閉包
Groovy閉包類似Java的Lambda表達式和匿名內(nèi)部類,不過使用更方便,能讓我們減少不少代碼量。閉包還可以作為方法參數(shù)傳遞到其他地方,這讓閉包更加靈活。
static void funWithClosure(Closure closure) { closure() } //在其他地方調(diào)用該方法 funWithClosure({ println("Hello yitian") }) //括號還可以省略,更加簡練 funWithClosure { println("Hello yitian") }關(guān)于閉包,還有幾個精彩的例子,就是Gradle腳本和Groovy模板引擎,它們都利用了Groovy強大的閉包功能,構(gòu)建出簡練而強大的DSL,讓我們用很少的代碼就可以實現(xiàn)強大的功能(雖然學(xué)起來稍微復(fù)雜點)。
參考資料
Groovy**方文檔 語法
相關(guān)推薦:
熱門課程
機構(gòu)資訊
- 太倉java開發(fā)培訓(xùn)費用_太倉JAVA培訓(xùn)
- 昆山哪里有Java實戰(zhàn)培訓(xùn)學(xué)校_昆山JAVA培訓(xùn)
- 常熟學(xué)Java哪個好_常熟JAVA培訓(xùn)
- 蘇州Java培訓(xùn)課程哪個好_蘇州JAVA培訓(xùn)
- 昆山哪里有Java語言培訓(xùn)學(xué)院_昆山JAVA培訓(xùn)
- 昆山Java工程師培訓(xùn)機構(gòu)哪個好_昆山JAVA培訓(xùn)
- 常熟學(xué)習(xí)Java工程師哪里好_常熟JAVA培訓(xùn)
- 昆山Java編程課程價格_昆山JAVA培訓(xùn)
- 張家港Java開發(fā)培訓(xùn)班學(xué)費_張家港JAVA培訓(xùn)
- 太倉Java工程師培訓(xùn)學(xué)院哪里好_太倉JAVA培訓(xùn)