黃 凱高級(jí)講師
多年移動(dòng)互聯(lián)網(wǎng)開(kāi)發(fā)經(jīng)驗(yàn),精通Android與iOS開(kāi)發(fā),對(duì)JavaEE等后臺(tái)技術(shù)也
有所研究。尤其精通Android平臺(tái)的開(kāi)發(fā),對(duì)Android平臺(tái)下的性能優(yōu)化有極其豐富的經(jīng)驗(yàn)。 曾就職于酷狗音樂(lè)擔(dān)任高級(jí)Android軟件工程師與Team
Leader一職,帶領(lǐng)超過(guò)20人的開(kāi)發(fā)團(tuán)隊(duì),有豐富的開(kāi)發(fā)與管理經(jīng)驗(yàn)。參與開(kāi)發(fā)了<酷狗音樂(lè)>,<繁星網(wǎng)>,<中國(guó)電信移動(dòng)辦公>,
<智慧天河>,<翼健康>,<創(chuàng)餉無(wú)限>,<外修管家>等20多款互聯(lián)網(wǎng)熱門(mén)應(yīng)用。其不但開(kāi)發(fā)經(jīng)驗(yàn)豐富,教學(xué)幽默風(fēng)趣,而且對(duì)
學(xué)生要求嚴(yán)格,堅(jiān)持授人與魚(yú)不如授人與漁的理念,注重培養(yǎng)學(xué)生的解決問(wèn)題與自我思考的能力。
Java開(kāi)發(fā)的應(yīng)該
如何掌握上述相關(guān)技術(shù)?
Java開(kāi)發(fā)的應(yīng)該如何掌握上述相關(guān)技術(shù)?
一:首先,有這樣的一種情況很常見(jiàn),對(duì)于想自學(xué)Java開(kāi)發(fā)的人來(lái)說(shuō),他們
大多數(shù)都是非常盲目的,不知道自己改如何入手,很多人在網(wǎng)上找一些視頻,然后瘋狂的過(guò)視頻,很快就把一塊內(nèi)容都學(xué)完,他們理解的學(xué)完了就是視
頻看完了,但是讓他們動(dòng)手去做東西卻做不出來(lái),而我的理解學(xué)完了就是自己能寫(xiě)出東西,所以對(duì)于初學(xué)者來(lái)說(shuō)一定不能盲目,要有自己的規(guī)劃,不然
就是浪費(fèi)時(shí)間白忙活。
二:既然是學(xué)習(xí)Java開(kāi)發(fā)專(zhuān)業(yè)技術(shù),我個(gè)人的建議是,一定要有一個(gè)能指導(dǎo)
你的人,不能都靠自己閉門(mén)造車(chē),這樣的行為并不聰明,結(jié)識(shí)一位這方面的人才,時(shí)不時(shí)去問(wèn)問(wèn)人家問(wèn)題,不然你可能會(huì)發(fā)現(xiàn)一個(gè)小問(wèn)題能困擾你一天
,**后還不知道是什么原因。
三:學(xué)習(xí)Java開(kāi)發(fā)技術(shù),不能跟學(xué)數(shù)學(xué)語(yǔ)文一樣對(duì)待,比較剛接觸代碼是不
容易記住的,所以要掌握上述的技術(shù),你還要知道學(xué)習(xí)Java開(kāi)發(fā)技術(shù)有哪些“坑”。對(duì)于學(xué)習(xí)方法這塊是尤為重要的,怎么學(xué)才能讓你學(xué)完了能記住之
前學(xué)的那些,不至于學(xué)完了就忘,這個(gè)問(wèn)題值得你學(xué)習(xí)之前去思考的。
四:根據(jù)我多年的學(xué)習(xí)情況來(lái)看,你平時(shí)一定要養(yǎng)成好的學(xué)習(xí)習(xí)慣,就說(shuō)我
自己吧!我就喜歡把自己曾經(jīng)遇到的問(wèn)題整理在電腦的日記本上,然后我會(huì)搜集一下博客相關(guān)的Java技術(shù)文章,一些我認(rèn)為比較有用的網(wǎng)站,以后都能
用的上,這是我個(gè)人的學(xué)習(xí)習(xí)慣,相信我,如果你想走的更遠(yuǎn),一定要養(yǎng)成習(xí)慣。
**后給大家一些詳細(xì)的學(xué)習(xí)安排路線(xiàn):
Java基礎(chǔ):Java基礎(chǔ)語(yǔ)法、數(shù)組、類(lèi)與對(duì)象、繼承與多態(tài)、異常、范型、集
合、流與文件、反射、枚舉、自動(dòng)裝箱和注解。
數(shù)據(jù)庫(kù):mysql、oracle
Javaweb:HTML與CSS網(wǎng)頁(yè)開(kāi)發(fā)基礎(chǔ)、Java腳本語(yǔ)言、搭建開(kāi)發(fā)環(huán)境、JSP基
本語(yǔ)法、JSP內(nèi)置對(duì)象、JavaBean技術(shù)、Servlet技術(shù)、Ajax技術(shù)
框架:Struts2、Hibernate、Spring、SpringMVC、mybatis
java互聯(lián)網(wǎng)開(kāi)發(fā)工程師
《C Primer》讀書(shū)筆記(一)開(kāi)始
>
首先,了解一個(gè)我們需要嘗試的程序(書(shū)店程序),如下:
書(shū)店保存每條銷(xiāo)售記錄的檔案,包括3個(gè)數(shù)據(jù)項(xiàng):ISBN書(shū)號(hào)、售出冊(cè)數(shù)、售出單價(jià)
需要能夠查詢(xún)每本書(shū)的銷(xiāo)量,銷(xiāo)售額和平均售價(jià)
我認(rèn)為,主要需要實(shí)現(xiàn)的是:
- 檢測(cè)相同ISBN書(shū)號(hào)
- 可重復(fù)錄入銷(xiāo)售記錄的輸入功能
書(shū)中提出,雖然沒(méi)有編寫(xiě)程序,但是已經(jīng)可以確定它必須:
- 定義變量
- 進(jìn)行輸入輸出
- 使用數(shù)據(jù)結(jié)構(gòu)保存數(shù)據(jù)
- 檢測(cè)兩條記錄是否有相同的ISBN書(shū)號(hào)
- 包含一個(gè)循環(huán)來(lái)處理銷(xiāo)售檔案中的每條記錄
接下來(lái),介紹用C 來(lái)解決這些子問(wèn)題
1.1 編寫(xiě)一個(gè)簡(jiǎn)單的C 程序
1.一個(gè)函數(shù)的定義包含4個(gè)部分:返回類(lèi)型、函數(shù)名、形參列表、函數(shù)體
2.重要概念:類(lèi)型(類(lèi)型不僅定義了數(shù)據(jù)元素的內(nèi)容,還定義了這類(lèi)數(shù)據(jù)能進(jìn)行的運(yùn)算)
編譯、運(yùn)行程序
1.IDE:集成開(kāi)發(fā)環(huán)境(Integrated Developed Environment)
2.程序文件成為源文件(source file),C 文件的后綴名常見(jiàn)為:cc、cxx、cpp、cp、c
3.從命令行==運(yùn)行編譯器==
在windows或者UNIX系統(tǒng)外殼程序窗口中,用
$ CC PRg1.cc
CC編譯器程序的名字,$是系統(tǒng)提示符
4.從命令行中==運(yùn)行執(zhí)行文件==
在windows中,有兩種方法
$ prog1 //忽略其擴(kuò)展名.exe
$ .\prog1 //一些系統(tǒng)中,必須擇定文件位置,當(dāng)前目錄為./
而在==UNIX系統(tǒng)==中,必須使用==全文件名==
5.訪(fǎng)問(wèn)==main返回值==
在windows和UNIX系統(tǒng)中,都可以用==echo==命令獲得返回值,在windows系統(tǒng)中
$ echo %ERROREVEL%
運(yùn)行GNU或微軟編譯器(常用編譯器:GNU、Visual Studio)
其中GNU編譯器,可以如下:
$ g -o prog1 prog1.cc
g 是運(yùn)行命令
-o prog1 是編譯器參數(shù)(指定生成的可執(zhí)行文件名為prog1)
不指定此參數(shù)則可執(zhí)行文件:a.exe或者a.out
另外,Visual Studio編譯器命令可以如下:
C:\Users\me\programs> c1 /Ehsc prog1.cc
C:\Users\me\programs>是系統(tǒng)提示符
c1命令:調(diào)用編譯器
/Ehsc是編譯器選項(xiàng),用來(lái)打開(kāi)標(biāo)準(zhǔn)異常處理
練習(xí)
1.查閱編譯器文檔,確定文件命名規(guī)則,編譯并運(yùn)行一個(gè)程序
參考CSDN博客 Windows下使用GNU編譯器
2.改寫(xiě)程序返回值為-1,通常這是程序錯(cuò)誤的返回,觀(guān)察你的系統(tǒng)如何處理錯(cuò)誤標(biāo)識(shí)
1.2 初識(shí)輸入輸出
1.標(biāo)準(zhǔn)輸入輸出對(duì)象
- 標(biāo)準(zhǔn)輸入:cin
- 標(biāo)準(zhǔn)輸出:cout
- 標(biāo)準(zhǔn)錯(cuò)誤:cerr
- 輸出運(yùn)行程序時(shí)的一般性信息:clog
2.一個(gè)使用IO庫(kù)的程序
#include <iostream>
int main()
{
std::cout<<"Enter two numbers:"<<std::endl;
int v1=0,v2=1;
std::cin>>v1>>v2;
std::cout<<"The sum of"<<v1<<"and"<<v2<<"is"<<v1 v2<<std::endl;
return 0;
}
(1) #include指令必須在所有函數(shù)前面
(2) 輸出運(yùn)算符(<<)
- 接受兩個(gè)對(duì)象:左側(cè)的運(yùn)算對(duì)象必須是一個(gè)ostream對(duì)象,右側(cè)的運(yùn)算對(duì)象是要打印的值;
(3) 操縱符(endl)
- 寫(xiě)入endl的效果是:結(jié)束當(dāng)前行,并將與設(shè)備關(guān)聯(lián)的緩沖(buffer)區(qū)中的內(nèi)容刷到設(shè)備中
- 緩沖刷新操作:保證到目前為止程序所產(chǎn)生的所有輸出都真正寫(xiě)入輸出流中,而不是僅停留在內(nèi)存中等待寫(xiě)入流
程序員在調(diào)試時(shí)添加打印語(yǔ)句,應(yīng)該一直保證刷新流,否則程序崩潰時(shí),輸出可能還留在緩沖區(qū),而推斷崩潰位置錯(cuò)誤
(4)使用標(biāo)準(zhǔn)庫(kù)中的名字
- 前綴std::是指出cout和endl的命名空間,命名空間可以幫助我們避免名字定義沖突
- 另一個(gè)更簡(jiǎn)便的方法:using聲明(第3章介紹)
(5)輸入運(yùn)算符(>>)
- 其左側(cè)是一個(gè)istream,右側(cè)是一個(gè)接受對(duì)象
練習(xí)
1.編寫(xiě)程序,打印“Hello World”
#include <iostream>
int main()
{
std::cout<<"Hello World"<<std::endl;
return 0;
}
2.編寫(xiě)使用乘法運(yùn)算打印兩個(gè)數(shù)乘積的程序
將例子中的加號(hào)改為 * 號(hào)即可
3.重寫(xiě)程序,將打印對(duì)象放在一條獨(dú)立語(yǔ)句中
將例子程序中的std::cout切開(kāi),記得添加std::endl
4.解釋下列語(yǔ)句是否合法
std::cout<<"The sum of"<<v1;
<<"and"<<v2;
<<"is"<<v1 v2<<std::endl;
不合法,**、二行缺乏std::endl結(jié)束輸出,第二、三行缺乏std::cout作為指定輸出的對(duì)象
1.3 注釋
(1)注釋界定符(/* */),可以多行,不可以嵌套
(2)單行和半行(//)
1.4 控制流
(1)while語(yǔ)句,形式如下
while(condition)
statement
(2)復(fù)合賦值運(yùn)算符
- ( =)本質(zhì)上相當(dāng)于sum=sum val
- ( )前綴:將運(yùn)算對(duì)象加1,等價(jià)于val=val 1
練習(xí)
1.編寫(xiě)程序,用while循環(huán)50~100整數(shù)相加
#include <iostream>
int main()
{
int sum=0,val=50;
while(val<=100){
sum =val;
val ;
}
std::cout<<"The sum is:"<<sum<<std::endl;
return 0;
}
2.使用–運(yùn)算實(shí)現(xiàn)10~0的運(yùn)算
- 上程序改成(–)
3.編程:用戶(hù)輸入兩個(gè)數(shù),打印出這兩個(gè)數(shù)之間的整數(shù)
#include <iostream>
int main()
{
int left,right;
std::cout<<"Please enter two numbers"<<std::endl;
std::cin>>left>>right;
while(left<=right){
std::cout<<left<<std::endl;
left ;
}
return 0;
}
(1) for語(yǔ)句,形式如下
for(init-statement;condition;expression)
statement
讀取數(shù)量不定的輸入數(shù)據(jù)
int main()
{
int sum=0,value=0;
while(std::cin>>value)
sum =value;
std::cout<<"Sum is: "<<sum<<std::endl;
return 0;
}
windows中,文件輸入結(jié)束符為:ctrl Z
Mac或者UNIX系統(tǒng)中,文件輸入結(jié)束符為:ctrl D
(4) if 語(yǔ)句,形式如下
if(conditon)
statement
統(tǒng)計(jì)輸入中每個(gè)值連續(xù)出現(xiàn)了多少次程序
int main()
{
int currVal=0,val=0;
if(std::cin>>currVal){
int cnt=1;
while(std::cin>>val){
if(val==currVal)
cnt;
else{
std::cout<<currVal<<" occurs "<<cnt<<" times"<<std::endl;
currVal=val;
cnt=1;
}
}
std::cout<<currVal<<" occurs "<<cnt<<" times"<<std::endl;
}
return 0;
}
1.5 類(lèi)簡(jiǎn)介
(1)**定義一個(gè)類(lèi)來(lái)定義自己的數(shù)據(jù)結(jié)構(gòu)
(2)關(guān)鍵概念:類(lèi)定義了行為
- 類(lèi)的作者決定了類(lèi)類(lèi)型對(duì)象上可以使用的所有操作
==(3)使用文件重定向==
- 當(dāng)測(cè)試程序時(shí),反復(fù)敲鍵盤(pán)是非常乏味的,可以利用文件重定向
$ addItems <infile>outfile
程序已經(jīng)為編譯為名為addItems的可執(zhí)行文件,上述命令會(huì)從一個(gè)名為infile的文件讀取銷(xiāo)售記錄,并將輸出結(jié)果寫(xiě)入到一個(gè)名為outfile的文件中
1.6書(shū)店程序
#include <iostream>
#include "Sales_items.h"
int main(){
Sales_item total;
if(std::cin>>total){
Sales_item trans;
while(std::cin>>trans){
if(total.isbn()==trans.isbn()){
total =trans;
}
else{
std::cout<<total<<std::endl;
total=trans;
}
}
std::cout<<total<<std::endl;
}
else{
std::cerr<<"No data?!"<<std::endl;
return -1;
}
return 0;
}
相關(guān)推薦:
蘇州JAVA培訓(xùn) 蘇州JAVA培訓(xùn)班 蘇州JAVA培訓(xùn)機(jī)構(gòu)
體驗(yàn)課預(yù)約試聽(tīng)
倒計(jì)時(shí)
12:00:00