上面 wuzhikun12同學(xué)寫(xiě)的不錯(cuò),但我想還不能運(yùn)行,并且還不太完善。我給個(gè)能運(yùn)行的:(注意:文件名為:Test.java)
創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括和政網(wǎng)站建設(shè)、和政網(wǎng)站制作、和政網(wǎng)頁(yè)制作以及和政網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃等。多年來(lái),我們專(zhuān)注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,和政網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶(hù)以成都為中心已經(jīng)輻射到和政省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶(hù)的支持與信任!
//要實(shí)現(xiàn)對(duì)象間的比較,就必須實(shí)現(xiàn)Comparable接口,它里面有個(gè)compareTo方法
//Comparable最好使用泛型,這樣,無(wú)論是速度還是代碼量都會(huì)減少
@SuppressWarnings("unchecked")
class Student implements ComparableStudent{
private String studentNo; //學(xué)號(hào)
private String studentName; //姓名
private double englishScore; //英語(yǔ)成績(jī)
private double computerScore; //計(jì)算機(jī)成績(jī)
private double mathScore; //數(shù)學(xué)成績(jī)
private double totalScore; //總成績(jī)
//空構(gòu)造函數(shù)
public Student() {}
//構(gòu)造函數(shù)
public Student(String studentNo,String studentName,double englishSocre,double computerScore,double mathScore) {
this.studentNo = studentNo;
this.studentName = studentName;
this.englishScore = englishSocre;
this.computerScore = computerScore;
this.mathScore = mathScore;
}
//計(jì)算總成績(jī)
public double sum() {
this.totalScore = englishScore+computerScore+mathScore;
return totalScore;
}
//計(jì)算評(píng)測(cè)成績(jī)
public double testScore() {
return sum()/3;
}
//實(shí)現(xiàn)compareTO方法
@Override
public int compareTo(Student student) {
double studentTotal = student.getTotalScore();
return totalScore==studentTotal?0:(totalScorestudentTotal?1:-1);
}
//重寫(xiě)toString方法
public String toString(){
return "學(xué)號(hào):"+this.getStudentNo()+" 姓名:"+this.getStudentName()+" 英語(yǔ)成績(jī):"+this.getEnglishScore()+" 數(shù)學(xué)成績(jī):"+this.getMathScore()+" 計(jì)算機(jī)成績(jī):"+this.getComputerScore()+" 總成績(jī):"+this.getTotalScore();
}
//重寫(xiě)equals方法
public boolean equals(Object obj) {
if(obj == null){
return false;
}
if(!(obj instanceof Student)){
return false;
}
Student student = (Student)obj;
if(this.studentNo.equals(student.getStudentName())) { //照現(xiàn)實(shí)來(lái)說(shuō),比較是不是同一個(gè)學(xué)生,應(yīng)該只是看他的學(xué)號(hào)是不是相同
return true;
} else {
return false;
}
}
/*以下為get和set方法,我個(gè)人認(rèn)為,totalScore的set的方法沒(méi)必要要,因?yàn)樗怯善渌煽?jī)計(jì)算出來(lái)的
在set方法中,沒(méi)設(shè)置一次值,調(diào)用一次sum方法,即重新計(jì)算總成績(jī)
*/
public String getStudentNo() {
return studentNo;
}
public void setStudentNo(String studentNo) {
this.studentNo = studentNo;
sum();
}
public String getStudentName() {
return studentName;
}
public void setStudentName(String studentName) {
this.studentName = studentName;
sum();
}
public double getEnglishScore() {
return englishScore;
}
public void setEnglishScore(double englishScore) {
this.englishScore = englishScore;
sum();
}
public double getComputerScore() {
return computerScore;
}
public void setComputerScore(double computerScore) {
this.computerScore = computerScore;
sum();
}
public double getMathScore() {
return mathScore;
}
public void setMathScore(double mathScore) {
this.mathScore = mathScore;
sum();
}
public double getTotalScore() {
return totalScore;
}
}
//Student子類(lèi)學(xué)習(xí)委員類(lèi)的實(shí)現(xiàn)
class StudentXW extends Student {
//重寫(xiě)父類(lèi)Student的testScore()方法
@Override
public double testScore() {
return sum()/3+3;
}
public StudentXW() {}
//StudentXW的構(gòu)造函數(shù)
public StudentXW(String studentNo,String studentName,double englishSocre,double computerScore,double mathScore) {
super(studentNo,studentName,englishSocre,computerScore,mathScore);
}
}
//Student子類(lèi)班長(zhǎng)類(lèi)的實(shí)現(xiàn)
class StudentBZ extends Student {
//重寫(xiě)父類(lèi)Student的testScore()方法
@Override
public double testScore() {
return sum()/3+5;
}
public StudentBZ() {}
//StudentXW的構(gòu)造函數(shù)
public StudentBZ(String studentNo,String studentName,double englishSocre,double computerScore,double mathScore) {
super(studentNo,studentName,englishSocre,computerScore,mathScore);
}
}
//測(cè)試類(lèi)
public class Test {
public static void main(String[] args) {
//生成若干個(gè)student類(lèi)、StudentXW類(lèi)、StudentBZ類(lèi)
Student student1 = new Student("s001","張三",70.5,50,88.5);
Student student2 = new Student("s002","李四",88,65,88.5);
Student student3 = new Student("s003","王五",67,77,90);
StudentXW student4 = new StudentXW("s004","李六",99,88,99.5);
StudentBZ student5 = new StudentBZ("s005","朱漆",56,65.6,43.5);
Student[] students = {student1,student2,student3,student4,student5};
for(int i = 0 ; istudents.length; i++){
double avgScore = students[i].testScore();
System.out.println(students[i].getStudentName()+"學(xué)生的評(píng)測(cè)成績(jī)?yōu)椋?+ avgScore+"分");
}
}
}
運(yùn)行結(jié)果為:
張三學(xué)生的評(píng)測(cè)成績(jī)?yōu)椋?9.66666666666667分
李四學(xué)生的評(píng)測(cè)成績(jī)?yōu)椋?0.5分
王五學(xué)生的評(píng)測(cè)成績(jī)?yōu)椋?8.0分
李六學(xué)生的評(píng)測(cè)成績(jī)?yōu)椋?8.5分
朱漆學(xué)生的評(píng)測(cè)成績(jī)?yōu)椋?0.03333333333333分
public?class?Teacher?extends?Person{
//關(guān)聯(lián)學(xué)生?負(fù)責(zé)保存老師教過(guò)的多個(gè)學(xué)生
ListStudent?list?=?new?ArrayListStudent();
}
public?class?Student?extends?Person{
//關(guān)聯(lián)老師?學(xué)生被那些老師教過(guò)
ListTeacher?list?=?new?ArrayListTeacher();
}
在Eclipse中查看JDK類(lèi)庫(kù)的源代碼
設(shè)置:
1.點(diǎn) “window”- "Preferences" - "Java" - "Installed JRES"
2.此時(shí)"Installed JRES"右邊是列表窗格,列出了系統(tǒng)中的 JRE 環(huán)境,選擇你的JRE,然后點(diǎn)邊上的 "Edit...", 會(huì)出現(xiàn)一個(gè)窗口(Edit JRE)
3.選中rt.jar文件的這一項(xiàng):“c:\program files\java\jre_1.5.0_06\lib\rt.jar”?
點(diǎn) 左邊的“+” 號(hào)展開(kāi)它
4.展開(kāi)后,可以看到“Source Attachment:(none)”,點(diǎn)這一項(xiàng),點(diǎn)右邊的按鈕“Source Attachment...”, 選擇你的JDK目錄下的 “src.zip”文件
5.一路點(diǎn)"ok",結(jié)束。
dt.jar是關(guān)于運(yùn)行環(huán)境的類(lèi)庫(kù),主要是swing的包?
tools.jar是關(guān)于一些工具的類(lèi)庫(kù)?
rt.jar包含了jdk的基礎(chǔ)類(lèi)庫(kù),也就是你在java doc里面看到的所有的類(lèi)的class文件
使用:
可以在 Java 源代碼編輯器或代碼片段編輯測(cè)試窗中選擇類(lèi)型、方法或字段的名稱(chēng),然后對(duì)元素的定義打開(kāi)編輯器。
在 Java 編輯器中,選擇類(lèi)型、方法或字段的名稱(chēng)。您也可以?xún)H僅在名稱(chēng)中單擊一次。?
執(zhí)行下列其中一項(xiàng)操作:?
1.從菜單欄中,選擇瀏覽 打開(kāi)聲明?
2.從編輯器的彈出菜單中,選擇打開(kāi)聲明?
3.按 F3 鍵,如下圖
如果你的斷點(diǎn)處是一個(gè)Java內(nèi)部的方法(你十有八九是停在了System.out.println處),而你安裝的是JDK(Java開(kāi)發(fā)套件),不僅僅是JRE(Java運(yùn)行環(huán)境),那么eclipse的step into會(huì)跳入這個(gè)方法里。如果你eclipse里設(shè)置的JDK關(guān)聯(lián)的源碼位置不正確,eclipse就會(huì)打開(kāi).class文件(否則是直接打開(kāi)JDK內(nèi)部的源代碼)。
step over倒是沒(méi)發(fā)現(xiàn)會(huì)產(chǎn)生這樣的問(wèn)題。
回答補(bǔ)充:
我用的是英文版,如果你用的是中文版,下面的步驟自行與中文菜單對(duì)應(yīng)起來(lái)
選擇菜單項(xiàng)
Window-Preferences
打開(kāi)窗體,在左側(cè)面板選
Java-Installed JREs
右側(cè)面板中選擇你使用的Java運(yùn)行環(huán)境,見(jiàn)截圖第1部分(百度只能上傳一張圖,所以我把幾張截圖合在一起了)
點(diǎn)擊Edit,在左下角面板中選擇你要關(guān)聯(lián)的Java類(lèi)庫(kù),點(diǎn)擊“+”號(hào)展開(kāi),則在右側(cè)面板可以點(diǎn)擊Source Attachment...選項(xiàng)選擇來(lái)源,見(jiàn)截圖第2部分和第3部分。
選擇好正確的代碼來(lái)源后(通常是JDK安裝目錄下的src.zip),你就可以單步跟蹤進(jìn)去了。
不過(guò)話(huà)說(shuō)回來(lái),JDK的代碼實(shí)現(xiàn)不會(huì)有什么錯(cuò)誤,如果不是為了學(xué)習(xí)JDK,沒(méi)必要跟進(jìn)去,翻看Java API文檔并且相信JDK能正確實(shí)現(xiàn)其功能即可。如果不小心進(jìn)入到.class文件里,點(diǎn)擊“step return”即可返回你自己的代碼。
另外,站長(zhǎng)團(tuán)上有產(chǎn)品團(tuán)購(gòu),便宜有保證