headfirstc語言,headfirst java

本文目錄一覽:

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-hk/n/258298.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-15 12:49
下一篇 2024-12-15 12:49

相關推薦

  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發佈。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29

發表回復

登錄後才能評論