本文目錄一覽:
C語言鏈表排序問題
別的不敢說,但你的程序中有個致命錯誤,就是沒有給結構體指針*first = NULL; *temp等分配空間,就訪問他們了。
你自己看下我以前寫的程序,有排序的
#include stdio.h
#include stdlib.h
typedef struct node
{
char num[10];
char name[10];
int score[5];/*score[0]存數學成績score[1]語文成績score[2]英語成績score[3]總分score[4]平均分*/
struct node *next;
}student;/*學生成績結構體*/
/*初始化結構體*/
student *init(student *t)
{
t=(student *)malloc(sizeof(student));
t-next=NULL;
t-score[4]=t-score[3]=t-score[0]=t-score[1]=t-score[2]=0;
return t;
}
/*保存數據*/
void save(student *stu)
{
FILE *fp;
if((fp=fopen( “score1″,”w”))==NULL)/*為輸出打開文件score1*/
{
printf(“cannot open file\n”);exit(0);
}
stu=stu-next;
while(stu!=NULL)
{
if(fwrite(stu,sizeof(student),1,fp)!=1)
printf(“file write error\n”);
stu=stu-next;
}
fclose(fp);
}
/*讀取數據*/
student * load(student *stu)
{
FILE *fp;student *p,*r;r=stu;
if((fp=fopen(“score1″,”r”))==NULL)/*為輸入打開文件score1*/
return stu;
do
{ p=(student *)malloc(sizeof(student));
p-next=NULL;
if((fread(p,sizeof(student),1,fp)!=1)){fclose(fp);return stu;};
r-next=p;
r=r-next;
}while(1);
}
/*輸出一個特定的學生的成績*/
void output1(student *t)
{ int k;
printf(“%s\t%s\t”,t-num,t-name);
for(k=0;k5;k++)
printf(“%d\t”,t-score[k]);
printf(“\n”);
}
/*輸出全體學生的成績*/
void output(student *stu)
{
stu=stu-next;
printf(“學號\t姓名\t數學\t語文\t英語\t總分\t平均分\n”);
while(stu!=NULL)
{
output1(stu);
stu=stu-next;
}
}
/*將stu後插在t中*/
student * charu(student *stu,student *t)
{student *p;int k;
p=(student *)malloc(sizeof(student));
strcpy(p-num,stu-num);
strcpy(p-name,stu-name);
for(k=0;k5;k++)
p-score[k]=stu-score[k];
p-next=t-next;
t-next=p;
return p;
}
/*按成績排序*/
void paixu(student *stu,int i)
{
student *t,*p,*r;
int j,k;p=stu;
printf(“輸入0按數學成績\n”);
printf(“輸入1按語文成績\n”);
printf(“輸入2按英語成績\n”);
printf(“輸入3按總分\n”);
printf(“輸入4按平均分\n”);
do
{
scanf(“%d”,j);
if(j0j4) printf(“輸入錯誤請重新輸入\n”);
else break;
}while(1);
t=init(t);
r=t;
stu=stu-next;
if(t-next==NULL)
r=charu(stu,t);/*在排序好的鏈表t中插入第一個節點*/
if(i==0)/*按升序排序*/
while(stu-next!=NULL)
{
stu=stu-next;
if(r-score[j]stu-score[j]) r=t;/*如果待插入的score[j]當前的score[j],指針r回溯*/
while(r-next-score[j]stu-score[j]r-next!=NULL)
r=r-next;/*找到比待插入的score[j]大的指針r-next*/
r=charu(stu,r);/*在r後面插入stu*/
}
else
while(stu-next!=NULL)
{
stu=stu-next;
if(r-score[j]stu-score[j]) r=t;
while(r-next-score[j]stu-score[j]r-next!=NULL)
r=r-next;
r=charu(stu,r);
}
output(t);
}
/*排序菜單*/
void output2(student *stu)
{ int i;
output(stu);
printf(“輸入 0 升序\n”);
printf(“輸入 1 降序\n”);
printf(“輸入其他任意字符退出\n”);
scanf(“%d”,i);
if(i==0||i==1)
paixu(stu,i);
printf(“輸入任意字符結束\n”);
getch();
}
/*查找學生號為num是否存在*/
student * findnum(char *num,student *t,int *i)
{
*i=1;
if(t-next==NULL)
return t;
else
{
*i=strcmp(t-next-num,num);
while(*i0)/*t-next-numnum時查找下一個*/
{
t=t-next;
if(t-next==NULL)
return t;
*i=strcmp(t-next-num,num);
}
}
return t;/*t-next-num=num時返回,此時i=0*/
}
/*插入一個學生信息*/
student * insertstu(char *num,student *stu,char *name)
{ student *p,*t;int *i,j;i=j;
t=findnum(num,stu,i);/*查找該學號是否存在*/
if(j!=0)/*該學號不存在,則插入*/
{
p=init(p);
strcpy(p-num,num);
strcpy(p-name,name);
p-next=t-next;
t-next=p;
return stu;
}
else
{printf(“已有此學號\n學號\t姓名\n%s\t%s\n”,t-next-num,t-next-name);return stu;}
}
/*錄入新學生信息*/
void base(student *stu)
{
char num[10],name[20];
printf(“輸入e結束輸入新學生的信息\n”);
printf(“num(不超過10個數)\tname(不超過10個字)\n”);
scanf(“%s”,num);
do
{
printf(“\t\t\t”);
scanf(“%s”,name);
stu=insertstu(num,stu,name);/*插入一個學生信息*/
scanf(“%s”,num);
}while(num[0]!=’e’);
output(stu);
printf(“輸入任意字符退出\n”);
getch();
}
/*增加修改一門課程成績*/
void zengjia(student *t,int i)
{
t-score[3]-=t-score[i];/*總分減去第i門課的成績*/
scanf(“%d”,(t-score[i]));/*輸入第i門課的成績*/
t-score[3]+=t-score[i];/*總分加上第i門課的成績*/
}
void deletegrade(student *t,int i)
{
t-score[3]-=t-score[i];/*總分減去第i門課的成績*/
t-score[i]=0;/*第i門課的成績歸零*/
}
/*修改成績*/
void altergrade(student *stu)
{
int j,*i;student *t;char a,*num;
i=j;
printf(“0 修改數學成績\n”);
printf(“1 修改語文成績\n”);
printf(“2 修改英語成績\n”);
printf(“3 刪除數學成績\n”);
printf(“4 修改語文成績\n”);
printf(“5 修改英語成績\n”);
printf(“輸入 e 結束操作\n”);
a=getch();
printf(“學號\t成績\n”);
scanf(“%s”,num);
while(num[0]!=’e’)
{
t=findnum(num,stu,i);/*按學生號查找學生信息*/
if(j==0)/*學生號存在*/
{
t=t-next;
switch(a)
{
case ‘0’:
zengjia(t,0);
break;
case ‘1’:
zengjia(t,1);
break;
case ‘2’:
zengjia(t,2);
break;
case ‘3’:
deletegrade(t,0);
break;
case ‘4’:
deletegrade(t,1);
break;
case ‘5’:
deletegrade(t,2);
break;
default:break;
}
t-score[4]=t-score[3]/3;
}
else
printf(“無此學號\n”);
scanf(“%s”,num);
}
output(stu);
printf(“輸入任意字符結束\n”);
getch();
}
/*第i科成績錄入*/
student gradeenter(student *stu,int i)
{
student *t;t=stu;
t=t-next;
printf(“學號\t該科成績\n”);
while(t!=NULL)
{
printf(“%s\t”,t-num);
if(t-score[i]==0)/*如果學號為t-num的同學該科成績沒有*/
{
scanf(“%d”,t-score[i]);
t-score[3]+=t-score[i];/*學號為t-num的總分*/
t-score[4]=t-score[3]/3;/*學號為t-num的平均分*/
}
else
printf(“%d\n”,t-score[i]);
t=t-next;/*錄入下一個同學的該科成績*/
}
printf(“該科全部輸入完成\n輸入任意字符結束\n”);
getch();
}
/*成績錄入菜單*/
void entergrade(student *stu)
{
int i;
printf(“0 錄入數學成績\n”);
printf(“1 錄入語文成績\n”);
printf(“2 錄入英語成績\n”);
scanf(“%d”,i);
switch(i)
{
case 0:gradeenter(stu,i);break;
case 1:gradeenter(stu,i);break;
case 2:gradeenter(stu,i);break;
default:printf(“輸入錯誤請輸入相應操作的題號\n”);
}
}
/*按學生號查找學生*/
void chaxun(student *stu)
{
char *num;int j,k,*i;student *t;i=j;
printf(“輸入要查詢的學生學號\n”);
scanf(“%s”,num);
t=findnum(num,stu,i);/*查找學生號為num是否存在*/
if(j==0)/*該學生號存在*/
{
t=t-next;
printf(“查詢結果為\n”);
printf(“學號\t姓名\t數學\t語文\t英語\t總分\t平均分\n”);
output1(t);/*輸出此學生信息*/
}
else
printf(“查無此號\n”);
printf(“輸入任意字符結束\n”);
getch();
}
/*統計全班人數和平均分*/
void tongji(student *stu)
{
int total=0,score=0;
stu=stu-next;
while(stu!=NULL)
{
score+=stu-score[3];
stu=stu-next;
total++;
}
score=score/total;
printf(“班級總人數為:%d平均分為:%d\n輸入任意字符退出\n”,total,score);
getch();
}
/*按分數段查詢*/
void fenshuduan(student *stu)
{
int i,min,max,j;
printf(“輸入0按數學分數段\n”);
printf(“輸入1按語文分數段\n”);
printf(“輸入2按英語分數段\n”);
printf(“輸入3按總分分數段\n”);
printf(“輸入4按平均分分數段\n”);
scanf(“%d”,i);
printf(“輸入分數段上限:”);
scanf(“%d”,max);
printf(“\n輸入分數段下限:”);
scanf(“%d”,min);
if(maxmin)
{j=max;max=min;min=j;}
stu=stu-next;
printf(“學號\t姓名\t數學\t語文\t英語\t總分\t平均分\n”);
while(stu!=NULL)
{
if(min=stu-score[i]stu-score[i]=max)/*將分數段內的同學信息輸出*/
output1(stu);
stu=stu-next;
}
}
void main()
{
char a=’8′;
student *stu;
stu=init(stu);/*初始化stu*/
stu=load(stu);/*讀取score1的數據*/
while(a!=’7′)
{
clrscr();
printf(“************************************************************\n”);
printf(” 學生成績管理系統\n”);
printf(” ——-made in china\n”);
printf(” \t0 錄入學生基本信息\n”);
printf(” \t1 修改或刪除學生成績\n”);
printf(” \t2 錄入學生成績\n”);
printf(” \t3 顯示指定學生的信息\n”);
printf(” \t4 輸出指定分數段的學生信息\n”);
printf(” \t5 輸出班級總人數和平均分\n”);
printf(” \t6 輸出全體學生的信息\n”);
printf(” \t7 退出\n”);
printf(“*************************************************************\n”);
a=getch();
switch(a)
{
case’0′:base(stu);break;
case’1′:altergrade(stu);break;
case’2′:entergrade(stu);break;
case’3′:chaxun(stu);break;
case’4′:fenshuduan(stu);break;
case’5′:tongji(stu);break;
case’6′:output2(stu);break;
case’7′:break;
default:printf(“i am sorry to hear that you enter the wrong num\n”);
printf(“按任意鍵重新輸入\n”);getch();continue;
}
}
save(stu);/*將數據保存在score1中*/
printf(“歡迎再次使用學生成績管理系統……..請按任意鍵退出…….”);
getch();
}
.NET的學習步驟,先學什麼,用什麼書?
基本常識
掌握一門.NET面向對象語言,C#或VB.NET 我強烈反對在沒系統學過一門面向對象(OO)語言的前提下去學ASP.NET。 ASP.NET是一個全面向對象的技術,那絕對學不下去!
第一步 對.NET Framework類庫有一定的了解 可以通過開發Windows Form應用程序來學習.NET Framework。ASP.NET是建構在.NET Framework之上的技術,你對.NET Framework了解得越深,學習ASP.NET就越快。 舉個例子:下面簡單列出幾個對掌握ASP.NET非常重要的概念: 對象的內存模型,委託,事件,多線程,程序集和應用程序域,安全模型 .NET Framework當然還有許多其它的東西,但不理解與把握清楚上述這些東西,是很難真正把握ASP.NET的。 出於急迫的心情與現實的考慮,不少人沒有紮實的面向對象基礎就想直接學習ASP.NET,其結果只能是欲速則不達。 在具備了OO基礎之後,以下是具體的學習ASP.NET技術步驟。 第一步:學習HTML與CSS 這並不需要去學一大堆的諸如Dreamweaver,Firework之類的各種網頁設計工具,關鍵是理解HTML網頁嵌套的block結構與CSS的box模型。許多ASP.NET控件最後都必須轉化為HTML。而且,div+CSS是當前主流的網頁布局模型。 學習這部分時,關鍵在於理解概念,而不需要將精力花在美化頁面的許多技巧上,那是網站美工的工作,不是程序員的工作。
第二步:學習JavaScript JavaScript不是Java,它主要運行於瀏覽器端。可以完成許多工作,功能也很強大:比如它將客戶端網頁中的HTML元素看成一棵樹,可以編寫代碼訪問並修改樹節點,動態生成新的HTML代碼,從而達到動態修改網頁顯示特性的目的。 JavaScript在目前的網站開發中用得很多,非常重要。 另外,它也是目前非常流行的AJAX技術的基礎。
第三步:學習計算機網絡原理 找一本大學計算機網絡教材,重點看看它的有關互聯網的部分,了解一些域名解析和HTTP協議等知識。這是進行互聯網開發的理論基礎。
第四步:學習ASP.NET表示層技術,會設計Web頁面 需要結合先前打好的面向對象技術的基礎,至少掌握以下內容:
(1) 各種Web控件的使用方法,
(2) 理解信息在網頁中的傳送方式,比如Cookie,ViewState,Session等的使用。
(3) ASP.NET應用程序與網頁的生命周期,以及相關對象(比如httpcontext,response,request)的用途。
(4) ASP.NET實現事件驅動的內幕
(5) 自定義用戶控件 再次強調一下,沒有OO基礎,很難掌握上述技術,就只能被這些東東牽着鼻子走了,會很被動。
第五步 掌握數據庫技術 具體地說,要學習以下內容:
(1) 學會使用SQL Server 2005:不要求精通它的各種工具與管理配置技術,但至少知道如何連接,如何建表,如何創建存儲過程
(2) 學習ADO.NET,掌握使用代碼人工訪問數據庫(別用VS2005的嚮導)的方法
(3) 學習數據綁定控件的使用
第六步 理解多層架構 這時,先前在OO學習階段涉及到的程序集與應用程序域等就派上用場了,現在,網站架構大多採用多層架構:表示層、業務邏輯層、數據存取層以及數據庫本身。 可以先上網找一此多層架構的資料看,再找一個現成的比較複雜的開源ASP.NET項目分析一下其架構就差不多了。基本上都是一個套路,到處應用。 有的朋友問:學習架構是不是必須學習設計模式。 我的看法是:不必!當然,你如果學習過設計模式,那當然更好。但在實際開發中,如果只想着機械地套用某種模式,反而起不到好的結果。我的觀點:在學習設計模式時要多思多悟,其思想就會漸漸地融入你的大腦,在真實的設計實踐中,忘掉所有的寫在書上的模式,一切從實際出發,相信你的直覺,只要達到設計要求的方案就是可行的方案,事實上,你這樣做了之後,回過頭來再看,會發現你的設計往往暗合設計模式的理論。
第七步 學習XML與Web Service 先了解XML的基礎知識,找本講XML的書看一下就差不多了,然後,再學習Web Service。Web Service其實可類比為遠程方法調用(以XML格式表達的調用信息)。 學 到了這裡,如果你還有興趣,不妨再去看看SOA,不過SOA的資料都是理論與概念,看起來比較鬱悶,而且離實際開發可能比較遠。所以,這是可選項。
第八步 學習AJAX 學習AJAX的主要目的是創建具有更豐富特性的Web表示層,而經過前面七步的學習,到此再學習AJAX已水到渠成,所有的基礎都已具備,不會有太大的問題了。 在基礎未具備的前提下直接學AJAX,就象“浮沙之上築高台”,所以,將AJAX的學習次序安排在這裡。
第九步 學習RIA技術 RIA:Rich internet application,可看成是將C/S與B/S優點合二為一的嘗試。就具體技術來說,主要指微軟的Silverlight(WPF_E),畢竟前頭一路行來都是微軟路線。
參考書籍
1.推薦幾本書(.net) – 曠野 – 笑着“留”淚
書名:Microsoft .NET框架程序設計(修訂版)
作者:Jeffrey Richter
譯者:李建忠
出版日期:2003 年11月
出版社:清華大學出版社
推薦理由:框架設計是我看的第一本真正意義上的.NET書籍,之前看過很多,但都是工具類的。如果僅僅把.NET作為開發程序的工具,那些書就足夠了。但是.NET絕不僅僅是個工具,它是一種思想、一個平台。要想深入學習,必須對其Framework有所了解。《Microsoft .NET框架程序設計(修訂版)》無疑是學習.NET Framework最好的一本。李健忠老師的翻譯通俗流暢,並且字裡行間流露着他對.NET的深刻理解。這本書陪伴我度過了研究生期間很多無聊的課程。不過初學者看這本書開始也許會很費勁,有一次一個同搞.NET的同學拿過去翻了翻就扔給了我,說:看不懂。
2.推薦幾本書(.net) – 曠野 – 笑着“留”淚
書名:重構:改善既有代碼的設計(中文版)
作者:Martin Fowler
譯者:侯捷,熊節
出版日期:2003 年9月
出版社:中國電力出版社
推薦理由: 重構,這個既簡單又深奧的概念直到現在仍然吸引着廣大設計愛好者。幾年前當我幾乎被這個名詞弄暈的時候,我找到了這本書——重構的誕生地。它同樣是我的“課堂書籍”。與《框架設計》不同的是,它的概念和理論十分簡單,即使對編程只有一點點的認識,也能很愜意的閱讀本書。因為它所闡述的,就是我們程序員平時所做的——修改代碼。但如何更好的修改,使其更符合OO標準,又是一個非常複雜的過程。
3.推薦幾本書(.net) – 曠野 – 笑着“留”淚
書名:敏捷軟件開發:原則、模式與實踐
作者:Robert C. Martin
譯者:鄧輝
出版日期:2003 年9月
出版社:清華大學出版社
推薦理由: Bob大叔最膾炙人口的作品。如果你看過《設計模式》與《重構》,那麼推薦你接着看這本,對於設計模式的理解就會上升一個層次。熟練掌握各種設計原則,我們就不必再死記那些刻板的模式。只要我們的設計複合原則,就是一個良好的設計。《設計模式》、《重構》和《敏捷軟件開發》是設計愛好者必讀的三本書。
4.推薦幾本書(.net) – 曠野 – 笑着“留”淚
書名:ASP.NET 2.0揭秘
作者:Stephen Walther
譯者:譚振林,黎志,朱興林,馬士傑
出版日期:2007 年10月
出版社:人民郵電出版社
推薦理由:將近一年沒有搞ASP.NET了,因此這本書買來也束之高閣。但此書1.1版本卻令我印象深刻。當年就是那本綠皮的《ASP.NET揭秘》把我領進了ASP.NET的殿堂。我甚至一度認為其它的ASP.NET書都是垃圾(特別是清華大學出版的Wrox的紅皮書,其實是翻譯的太爛)。雖然2.0版本的中文版姍姍來遲,但是我仍然認為它值得收藏。特別是四位國內MVP的加盟,一定不會讓人失望。越來越多的技術高手加入到寫書譯書的隊伍中來,會徹底改變國內翻譯書籍沒法看的尷尬局面。
5.推薦幾本書(.net) – 曠野 – 笑着“留”淚
書名:Head First設計模式(中文版)
作者:Eric Freeman,Elisabeth Freeman,With Kathy ierra,Bert Bates
譯者:O’Reilly Taiwan公司
出版日期:2007 年9月
出版社: 中國電力出版社
推薦理由:這是一本讓人拍案叫絕的書,它用淺顯風趣的語言和別具一格的表現形式,把《設計模式》中天書一般的理論展現的精妙絕倫。如果你對設計模式還一知半解,或被《設計模式》中晦澀的文字搞得暈頭轉向,那麼趕快來閱讀本書吧。然而從某種意義上說,《Head First設計模式》是一本不能看的書,因為你一旦看過,會對其它的書倍感失望。所謂曾經滄海難為水是也。
6.推薦幾本書(.net) – 曠野 – 笑着“留”淚
書名:重構與模式
作者:Joshua Kerievsky
譯者:楊光,劉基誠
出版日期:2006 年12月
出版社:人民郵電出版社
推薦理由:很遺憾,我是在看完《Head First設計模式》後看得這本書,因此對其語言的易讀性很是失望。甚至一度把它放回了書架上。但是這並不代表它不是一本經典書。它將重構與模式完美的結合,使我們明白了設計是按照設計原則將代碼重構成模式的過程。
7.推薦幾本書(.net) – 曠野 – 笑着“留”淚
書名:C#和.NET 2.0 實戰:平台、語言與框架
作者:Patrick Smacchia
譯者:施凡,李永倫,譚穎華,徐寧
出版日期:2008 年1月
出版社:人民郵電出版社
推薦理由:不管你使用什麼語言進行開發,都希望手頭有一本大而全的參考書。否則東一本框架、西一本語法,南一本WinForm,北一本ASP.NET,會把人搞得很崩潰。儘管Google和百度在絕大多數情況下可以解決問題,但是萬一沒有網絡呢?《C#和.NET 2.0 實戰》就是這樣一本書,它包羅.NET的萬象,編程時遇到任何問題都可以先翻開本書尋找答案。如果你是一個.NET程序員,案邊放這樣一本書是再適合不過了。我在讀書小組推薦過這本書。
8.推薦幾本書(.net) – 曠野 – 笑着“留”淚
書名:企業應用架構模式
作者:Martin Fowler
譯者:王懷民,周斌
出版日期:2004 年7月
出版社:機械工業出版社
推薦理由: 秉承Martin Fowler一貫的通俗易懂的寫作風格,用最淺顯的語言描述複雜的概念。書中所列舉的各種模式,我們肯定都或多或少使用過。本書是分層設計的指導書。
9. 推薦幾本書(.net) – 曠野 – 笑着“留”淚
書名:.NET 設計規範——.NET約定、慣用法與模式
作者:Krzysztof Cwalina,Brad Abrams
譯者:葛子昂
出版日期:2006 年7月
出版社: 人民郵電出版社
推薦理由: 你是否修改過別人的代碼?你是否因為混亂的命名規則和晦澀的變量名稱抓狂?如果所有.NET程序員都讀過《.NET 設計規範》,這一切也許就不會發生了。它雖然名稱為“Framework Design Guidelines”,但實際上不僅僅是指導我們如何編寫框架,它本身就是.NET Framework的設計規範。我們平時在做任何開發,哪怕是最簡單的工具時,也應該遵循書中所提出的標準。
10.推薦幾本書(.net) – 曠野 – 笑着“留”淚
書名:設計模式:可復用面向對象軟件的基礎
作者:Erich Gamma,Richard Helm,Ralph Johnson,John Vlissides
譯者:李英軍,馬曉星,蔡敏,劉建中
出版日期:2004 年9月
出版社: 機械工業出版社
推薦理由:之所以最後推薦本書,並不是因為它不如前幾本,相反,它應該是所有設計愛好者的第一本書。但它太晦澀了,它就像是一本武林秘籍,不是所有人都能參透其中的奧秘。然而幸好很多高手練成絕世武功後,把他們的心得寫了出來,這些心得要好理解得多。因此《Head First設計模式》、《設計模式解析》、《Java與模式》等應該稱為設計模式初學者的首選。
JAVA零基礎者應該看什麼書比較好
給大家推薦一些對Java學習有用的經典書籍,感興趣的小夥伴們可以收藏一下!
1、《thinkingin Java》
被稱之為Java的聖經的一本書,不建議零基礎剛入門的時候看,容易造成學習陰影壓力,建議有一定能力以後觀看,能學會很多東西,無論什麼階段都能看,都能有不少收穫。
2、《Head First ServleJSP》
這本書確實非常出色,覺得在HeadFirst系列中也算是出色的一本。雖說它是為考試而寫的,但是卻非常適合初學者,能使人知其然並知其所以然。雖然很厚,但是很快能讀完。如果是Servlet和JSP的初學者,推薦用這本。
3、《瘋狂Java講義》
考慮到初學者大多數英文並沒有好到可以直接閱讀並理解英文書籍,這本書可以說是JAVA教學書中比較好的。
4、《Java從入門到精通》
作為一本Java技術的入門書,它是絕對出色的。語言通俗易懂,一個星期就能讓你明白怎麼用Java語言寫程序。此書對於沒有任何編程語言基礎的同學非常友好,一步一步帶領入門。不過過了基礎期之後,它就可以擱置一旁了。
5、《Java核心技術:卷1 基礎知識》
這系列書籍,非常適合有一定編程基礎的人看,裡面基本全是技術講解,能幫助有編程基礎的人迅速掌握Java技術!但是對初學者不怎麼友好,因為講得很深入,而且感覺全書都是重點,找不到真正重要的東西!
6、《Java學習筆記》
此書的特點在於裡面有很多作者對Java語言的獨有的理解與講解,這些內容往往也是所有Java語言初學者迷惑的地方。稱之為超簡明入門書籍也不為過。
7、《HeadFirstJava》
如果你是個討厭讀書的人,那麼這本書一定會讓你覺得很有趣。
這內容是否看着就很好理解。
這本書,通俗易懂,重點突出的書,相當適合初學者快速入門,缺點是段子太多,有時候會被當成笑話書來看。
以上就是推薦的7本Java經典書籍,希望對大家的學習有所幫助。也希望在成為一名更優秀的Java程序員的道路上,我們可以一起學習、一起進步。
自學 Java,有哪些書籍推薦?
《瘋狂java講義》 這本書深入介紹了java編程的相關方面,這本書的內容有Java基本語法結構、面向對象特徵、集合框架體系、 泛型、異常處理、GUI編程、JDBC數據庫編程等等等。非常齊全,我有全套Java視頻資料
《Head First Java》 這本書呢被亞馬遜評為十大好書之一。《Head First Java》是本完整的面向對象程序設計和Java的學習指導。是根據學習理論所設計的,讓你可以從學習程序語言的基礎開始一直到包括線程、網絡與分布式程序等項目。最重要的,你會學會如何像個面向對象開發者一樣去思考。
《深入理解Java虛擬機:JVM高級特性與最佳實踐》 這本書的主要內容是如何獨立地編譯一個OpenJDK7,講解了JVM的自動內存管理,分析了虛擬機的執行子系統,講解了程序的編譯與代碼的優化,探討了Java實現高效並發的原理。
《企業應用架構模式》 這本書適合做框架的人去看,如果你打算自己寫一個ORM的話,這本書是一定要看的。
《Agile Java》中文版 《Agile Java》中文版以JDK5.0的語法為基礎講解,如果同學們要學習JDK5.0的新語法也不錯。可以讓你以最少的時間掌握 Java最重要的知識,同時培養出優秀的編程思路,我有全套Java視頻資料
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/258298.html