面向对象(二)练习篇之对象数组问题
目錄
第一題:?
利用面向對象的編程方法,設計類Circle計算圓的面積。
main函數
?類1的創建
類2的創建
第二題?
?(1)創建Person類的對象,設置該對象的name、age和sex屬性,調用study方法,輸出字符串“studying”,調用showAge()方法顯示age值,調用addAge()方法給對象的age屬性值增加2歲。
(2)創建第二個對象,執行上述操作,體會同一個類的不同對象之間的關系。
主函數:
類的創建:
問題三:
編寫程序,聲明一個method方法,在method方法提供m和n兩個參數,方法中打印一個m*n的*型矩形,并計算該矩形的面積,將其作為方法返回值。
問題四:重難點
對象數組題目:定義類Student,包含三個屬性:學號number(int),年級state(int),成績score(int)。創建20個學生對象,學號為1到20,年級和成績都由隨機數確定。
間題一:打印出3年級(state值為3)的學生信息。問題二:使用冒泡排序按學生成績排序,并遍歷所有學生信息
JVM內存結構:?(概述)
第一題:?
利用面向對象的編程方法,設計類Circle計算圓的面積。
main函數
public class CircleText { public static void main(String[] args) { //實例化類Circle1 c1 = new Circle1(); //定義屬性c1.r1 = 3; //調用類1來計算圓的面積double mianJi = c1.findArea1();System.out.println(mianJi);//有返回值,新定義一個變量來接收返回值,然后輸出變量System.out.println(c1.findArea1());//這樣也行,相當于直接輸出了方法中的返回值//調用類2來計算圓的面積Circle2 c2 = new Circle2();c2.r2 = 2;c2.findArea2();//沒有返回值,但是方法中就自帶輸出,調用方法就自己輸出了 } }?類1的創建
package com.haiyu.exer;public class Circle1 {double r1;public double findArea1() {double mianji = Math.PI * r1 * r1;return mianji;} }類2的創建
package com.haiyu.exer;public class Circle2 {double r2;public void findArea2() {double mianJi = Math.PI * r2 * r2;System.out.println("面積為"+ mianJi);} }第二題?
?(1)創建Person類的對象,設置該對象的name、age和sex屬性,調用study方法,輸出字符串“studying”,調用showAge()方法顯示age值,調用addAge()方法給對象的age屬性值增加2歲。
(2)創建第二個對象,執行上述操作,體會同一個類的不同對象之間的關系。
主函數:
package com.haiyu.exer;public class Person {String name;int age;/*** sex為1是男性,sex為2是女性*/int sex;public void study() {System.out.println("studying");}public void showAge() {System.out.println("age :"+ age);}public int addAge(int i) {age += i;return age;} }類的創建:
package com.haiyu.exer;public class Person {String name;int age;/*** sex為1是男性,sex為2是女性*/int sex;public void study() {System.out.println("studying");}public void showAge() {System.out.println("age :"+ age);}public int addAge(int i) {age += i;return age;} }問題三:
編寫程序,聲明一個method方法,在method方法提供m和n兩個參數,方法中打印一個m*n的*型矩形,并計算該矩形的面積,將其作為方法返回值。
//測試類: public class Exer3Text { public static void main(String[] args) {Exer3Text text1 = new Exer3Text();System.out.println(text1.method(5, 6));}//定義類: public int method(int m,int n) {//打印*矩形的方法for(int i =1;i<=m;i++) {for(int j =1;j <= n;j++) {System.out.print("* ");}System.out.println();}return m*n; } }問題四:重難點
對象數組題目:
定義類Student,包含三個屬性:學號number(int),年級state(int),成績score(int)。
創建20個學生對象,學號為1到20,年級和成績都由隨機數確定。
間題一:打印出3年級(state值為3)的學生信息。
問題二:使用冒泡排序按學生成績排序,并遍歷所有學生信息
注意:調用屬性或方法時必須是一個對象實體來調用,在遍歷數組時,那個stus[i]才是對象實體
public class StudentText2 { public static void main(String[] args) {//聲明一個Student類型的數組Student1[] stus = new Student1[20];for(int i = 0;i < stus.length;i++) {//給數組元素賦值stus[i] = new Student1();//給對象的屬性賦值stus[i].number = i+1;//年級:[1,6]stus[i].state = (int)(Math.random()*(6-1+1)+1);//成績:[0,100]stus[i].score = (int)(Math.random()*(100-0+1));}StudentText2 text1 = new StudentText2();System.out.println("問題一:");//間題一:打印出3年級(state值為3)的學生信息。text1.searchState(stus, 4);System.out.println("問題二:"); //問題二:使用冒泡排序按學生成績排序,并遍歷所有學生信息text1.sort(stus);//遍歷數組text1.print(stus);} /*** 遍歷Student1[]的方法* @param stus*/ public void print(Student1[] stus) {for(int i=0; i< stus.length;i++) {System.out.println(stus[i].info());} } /*** 查找指定年級的學生的方法* @param stus* @param state*/ public void searchState(Student1[] stus,int state) {for(int i=0; i< stus.length;i++) {if(stus[i].state == state) {stus[i].san();}} } /*** 使用冒泡排序按學生成績排序* @param stus*/ public void sort(Student1[] stus) {for(int i = 0;i < stus.length-1;i++) {for(int j = 0;j < stus.length - 1 -i; j++) {//從高到低排序if(stus[j].score < stus[j+1].score) { //這里交換的是數組中的元素,即學生,而不是交換學生的成績Student1 temp= stus[j];;stus[j] = stus[j + 1];stus[j+1] = temp;}}} } }//定義類 class Student1{//屬性:int number;//學號int state;//年級int score;//成績//方法://遍歷數組Student1的方法//顯示學生信息的方法public String info() {return "學號:" + number + "年級:" + state + "成績:" + score;}//打印三年級學生信息方法public void san() {System.out.println("學號:" + number + "年級:" + state + "成績:" + score);}}JVM內存結構:?(概述)
JVM內存結構:
編譯完源程序以后,生成一個或多個字節碼文件。
我們使用JVM中的類的加載器和解釋器對生成的字節碼文件進行解釋運行。意味著,需要將
字節碼文件對應的類加載到內存中,涉及到內存解析。《JVM規范》
①虛擬機棧就是平時提到的棧結構,我們將局部變量存儲到虛擬機棧中
②堆,我們將new出來的結構(比如:數組,對象)存放在堆中。對象的屬性(非static的)加載到堆空間中
③方法區存放的是類的加載信息,常量池,靜態域
總結
以上是生活随笔為你收集整理的面向对象(二)练习篇之对象数组问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用Synonyms库对论文进行降重
- 下一篇: java基础-对15位或18位身份证号码