我對開發(fā)語言基礎(chǔ)的理解
我們在學(xué)習(xí)軟件開發(fā)的時(shí)候蔑舞,最先學(xué)習(xí)都就是一門編程語言疯特,語言是我們開發(fā)的基礎(chǔ)兴喂,也是我們開發(fā)的工具荆姆,今天來講一講我對于我目前從事的Android開發(fā)所用的Java的理解
首先說一下語言與應(yīng)用
這是剛開始學(xué)習(xí)還沒有入門的新同學(xué)經(jīng)常誤解的一個(gè)問題蒙幻,以為學(xué)會(huì)了Java,就能做開發(fā)了胆筒,但也有大家“日常用語”的一部分鍋邮破,比如有人問,“你在做什么開發(fā)呀”,然后做Java web開發(fā)的同學(xué)就會(huì)說“Java開發(fā)呀”抒和,然而其實(shí)Java開發(fā)說的是Java web開發(fā)矫渔,Java web開發(fā)又包含了Java EE的知識(shí),還包含對數(shù)據(jù)庫摧莽,Linux庙洼,SSH框架等的學(xué)習(xí),甚至還需要一些前端的知識(shí)范嘱,并不只是學(xué)習(xí)Java語言這么簡單的送膳,PHP等web開發(fā)亦是如此
所以我們就要區(qū)分語言、應(yīng)用
我們首先學(xué)習(xí)的是Java語言丑蛤,它的語法叠聋、特性、及其功能受裹,其中包括基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)啊碌补,基本語法,流程控制棉饶,IO厦章,多線程等基礎(chǔ)的、大多數(shù)語言都具備的功能照藻,以及多態(tài)袜啃,反射等Java獨(dú)有的特性,并且語言都是在不斷的完善更新的幸缕,比如Java8加入了lamada表達(dá)式群发,最近才發(fā)布的Java9加入的模塊化等等
而后才是語言的應(yīng)用,不同的語言根據(jù)不同的設(shè)計(jì)以及不同的特性有不同的應(yīng)用點(diǎn)发乔,有些語言很萬能熟妓,多用,比如Kotlin栏尚,除了之前所支持的Native開發(fā)起愈,web開發(fā),Android開發(fā)译仗,現(xiàn)在又宣布以后會(huì)支持iOS開發(fā)抬虽,有些語言則應(yīng)用點(diǎn)單一,比如PHP纵菌,只能用于web開發(fā)
Java語言的應(yīng)用點(diǎn)還是比較多的斥赋,在web開發(fā)中也不僅僅支持后端開發(fā),在上古時(shí)代的時(shí)候产艾,Java applet還被用于前端開發(fā),只是后邊被JavaScript給刷下來了。
還有很多同學(xué)不知道的是闷堡,我們用的很多桌面應(yīng)用隘膘,其實(shí)也是用Java來開發(fā)的,這時(shí)你會(huì)想杠览,“Java程序不是需要JRE才能運(yùn)行么弯菊,如果我用了Java寫的應(yīng)用程序,為什么從來沒有裝過JRE呢踱阿?”管钳,其實(shí)用Java開發(fā)的桌面應(yīng)用程序,打包的時(shí)候都自帶了JRE软舌,說出來也許你會(huì)比較震驚才漆,我們?nèi)粘J褂玫腁ndroid Studio,就是用Java開發(fā)的佛点,并且Jetbrains所開發(fā)的IDE醇滥,也都是用Java開發(fā)的,Jetbrains是一家Java功力很深厚的公司超营,所以才創(chuàng)造出了現(xiàn)在被欽定的Kotlin
出了上述所說的鸳玩,Java還被用于我們所熟知的Android開發(fā),在Android系統(tǒng)中演闭,自帶了一個(gè)JVM來運(yùn)行我們開發(fā)的Java程序不跟,
Android的frameworks源碼,也是用Java來開發(fā)編寫的
說到這里米碰,相信大部分同學(xué)已經(jīng)能分清語言和應(yīng)用了
Java基礎(chǔ)
其實(shí)說這個(gè)問題比較多余窝革,我也不打算展開,這里就給大家說一個(gè)概念
Java基礎(chǔ)的內(nèi)容见间,大家看一遍《Java核心技術(shù)》的目錄聊闯,基本上都包含了,看《Java編程思想》也是可以的米诉,《Java編程思想》如同書名菱蔬,闡述的是Java設(shè)計(jì)的思想,以及你編程的思想史侣,建議先看《Java核心技術(shù)》拴泌,再看《Java編程思想》,不要覺得《Java編程思想》很厚惊橱,講的很深蚪腐,只要你有一定編程經(jīng)驗(yàn),結(jié)合編程場景税朴,是非常容易理解的回季,掌握了其中的思想家制,在編程中,也會(huì)對你有指導(dǎo)作用
我理解的Java基礎(chǔ)包含如下內(nèi)容
基礎(chǔ)認(rèn)識(shí) (JDK泡一、JVM颤殴、JRE)
數(shù)據(jù)類型、變量鼻忠、運(yùn)算符涵但、字符串、數(shù)組
流程控制
對象與類(深入理解面向?qū)ο筇瑒澲攸c(diǎn))
繼承
接口
內(nèi)部類
多態(tài)
泛型
集合(其實(shí)就是Java所提供一些數(shù)據(jù)結(jié)構(gòu))
IO
多線程
異常處理
網(wǎng)絡(luò)編程
反射
其實(shí)還包括Swing和AWT圖形編程矮瘟,這個(gè)主要應(yīng)用于桌面端程序編寫,我們用Java進(jìn)行web或Android開發(fā)塑娇,是不需要掌握的
在上述的內(nèi)容中澈侠,我覺得最要重點(diǎn)掌握的,就是面向?qū)ο蟮乃枷攵鬯保@個(gè)一定要深入理解埋涧,Java可以說是是一門純面向?qū)ο蟮恼Z言,理解了面向?qū)ο笃媸荩憷斫馄渌麊栴}就會(huì)容易很多
如果你從事的是web開發(fā)棘催,那么多線程和網(wǎng)絡(luò)編程,也是你必須要下功夫的了
對于Android開發(fā)耳标,我建議新同學(xué)過一遍基礎(chǔ)醇坝,就可以開始學(xué)習(xí)Android了,然后再從實(shí)踐中次坡,回過頭了學(xué)習(xí)你沒有掌握的Java基礎(chǔ)知識(shí)呼猪,學(xué)習(xí)一門語言,光看是沒有用的砸琅,一定要?jiǎng)悠鹗謥硭尉啵缓笤賹?shí)踐中學(xué)習(xí),你才有體會(huì)症脂,才有理解
劃重點(diǎn)谚赎,理解才是重中之重,一定要體會(huì)诱篷,理解壶唤,看看《Java編程思想》,我覺得對你一定有幫助
其他的棕所?
當(dāng)你基礎(chǔ)掌握的還可以了闸盔,你當(dāng)然想去更深的地方,我懂的琳省,這個(gè)時(shí)候你可以學(xué)習(xí)一些JVM的知識(shí)迎吵,推薦的書是《深入理解JVM》躲撰,周志華老師寫的,看了你就能懂Java是如何在JVM上跑起來的了钓觉,也能理解Java的一些設(shè)計(jì)茴肥,內(nèi)存管理的知識(shí)
當(dāng)然你也可以看一些Java其他應(yīng)用,可以看一些開源庫來理解荡灾,Github就是程序員的圖書館,多看看瞬铸,總是有好處的
總結(jié)
以上就是我所理解的Java基礎(chǔ)批幌,不足和偏頗是不能避免的,希望大家多多提出和討論嗓节。要我給出一個(gè)建議荧缘,那就是多動(dòng)手實(shí)踐,然后在實(shí)踐中多理解體會(huì)和思考拦宣。
并且要說明一個(gè)問題截粗,我們今天講的是開發(fā)中的語言基礎(chǔ),就是說Java是Android開發(fā)的語言基礎(chǔ)鸵隧,不是講的Java語言中基礎(chǔ)的東西绸罗,我們上述所說的內(nèi)容已經(jīng)包含了Java語言中的大部分內(nèi)容,都理解了豆瘫,學(xué)會(huì)了珊蟀,也就可以說掌握J(rèn)ava了,并不是只是掌握了Java中的“基礎(chǔ)”外驱,說明一下
當(dāng)然我自己也是在學(xué)習(xí)中拉育灸,如果有大牛看到了昵宇,也請不吝多多賜教磅崭,謝謝大家,我是麥田哥瓦哎,點(diǎn)個(gè)like吧~