javaSE各阶段练习题--面向对象-StringBuilder-继承-包和访问权限
生活随笔
收集整理的這篇文章主要介紹了
javaSE各阶段练习题--面向对象-StringBuilder-继承-包和访问权限
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、將前一天作業,用StringBuffer進行改造,盡量提升時間和空間效率
定義一個方法,功能如下:給定一個數組,轉換成一個字符串
例如:數組為int[] arr = {1, 2, 3},字符串為[1, 2, 3]int[] arr = {1,2,3};StringBuilder sBuilder = new StringBuilder();sBuilder.append("[");for (int i = 0; i < arr.length; i++) {sBuilder.append(arr[i]).append(",");}sBuilder.deleteCharAt(sBuilder.length()-1);sBuilder.append("]");System.out.println(sBuilder.toString());
分析以下需求,并用代碼實現:(1)從鍵盤循環錄入錄入一個字符串,輸入"end"表示結束(2)將字符串中大寫字母變成小寫字母,小寫字母變成大寫字母,其它字符用"*"代替,并統計字母的個數舉例:鍵盤錄入:Hello12345World
StringBuilder sBuilder = new StringBuilder();boolean flag = true;while(flag) {Scanner sc = new Scanner(System.in);System.out.println("請輸入:");String str = sc.nextLine();if (str.equals("end")) {flag = false;break;}sBuilder.append(str); }String str = sBuilder.toString();sBuilder.delete(0, sBuilder.length());//清空sBuilderint count = 0;for (int i = 0; i < str.length(); i++) {char c = str.charAt(i);if (c >= 65 && c <= 90) {sBuilder.append((char)(c+32));count++;}else if (c >= 97 && c <= 122) {sBuilder.append((char)(c-32));count++;}else if (c <= 57 && c >= 48) {sBuilder.append((char)42);}else {sBuilder = sBuilder;}}System.out.println(sBuilder.toString());System.out.println("總共"+count+"個字母");輸出結果:hELLO*****wORLD總共10個字母2、代碼分析:第一個:分析如下代碼,判斷哪行報錯,并說出報錯原因class Demo{final int a = 10;}class Test{public static void main(String[] args) {Demo d = new Demo();d = new Demo();d.a = 20; //這一行會報錯,因為final修飾的變量是常量,初始化后不能被修改}}第二個:分析如下代碼,判斷哪行報錯,并說出報錯原因class Demo{int a = 10;}class Test{public static void main(String[] args) {final Demo d = new Demo();d = new Demo();//這行會報錯,final表示最終的意思,用final修飾的類、方法和變量不可改變d.a = 20;}}第三個:分析如下代碼,判斷哪行報錯,并說出報錯原因class Demo{final int a = 10;}class Test{public static void main(String[] args) {final Demo d = new Demo();d = new Demo();//這行會報錯,final表示最終的意思,用final修飾的類、方法和變量不可改變d.a = 20;//這一行會報錯,因為final修飾的變量是常量,初始化后不能被修改}}第四個:分析如下代碼,判斷哪行報錯,并說出報錯原因class Demo{int a = 10;}class Test{public static void main(String[] args) {Demo d = new Demo();d = new Demo();d.a = 20;}}無錯誤!第五個:分析如下代碼,判斷哪行報錯,并說出報錯原因class Demo{final int a;}class Test{public static void main(String[] args) {Demo d = new Demo();d = new Demo();d.a = 20;//???確定題沒有重復?}}
3 定義兩個類Dog,SmallDog,SmallDog繼承Dog說明一:關于Dog兩個屬性,狗的名字(dogName,String),狗的年齡(dogAge,int)一個方法,dogWalk(),打印一句話簡單描述狗走路的樣子一個構造方法,無參數,在此構造方法中初始化dogName,dogAge說明二:關于SmallDog繼承Dog,不添加任何屬性和方法 最后,在測試類中的main方法中生成SmallDog類的對象,訪問屬性dogName和dogAge,并打印出他們的值;調用dogWalk(),看看效果
Dog類
package com.henu;public class Dog {private String dogName;private int dogAge;public Dog() {this.dogName = "狗王";this.dogAge = 6;}public void dogWark() {System.out.println("雄赳赳氣昂昂");}public String getDogName() {return dogName;}public void setDogName(String dogName) {this.dogName = dogName;}public int getDogAge() {return dogAge;}public void setDogAge(int dogAge) {this.dogAge = dogAge;}}SmallDog類
package com.henu;public class SmallDog extends Dog{}DogTest類
package com.henu;public class DogTest {public static void main(String[] args) {SmallDog sDog = new SmallDog();String dogName = sDog.getDogName();int dogAge = sDog.getDogAge();System.out.println(dogName +"->"+dogAge);sDog.dogWark();}}輸出結果:4.在第1題的基礎做修改說明:關于SmallDog添加兩個set方法分別能夠設置屬性dogName和dogAge的值,在測試類中的main方法中調用這兩個方法為屬性設置值,再次訪問這兩個屬性并打印看看和第二題的打印輸出是否相同重寫dogWalk(),打印一句話具體描述小狗走路的樣子,在測試類main方法中調用dogWalk(),看看和第二題中的調用效果是否有變化
SmallDog類
private String dogName;private int dogAge;public String getDogName() {return dogName;}public void setDogName(String dogName) {this.dogName = dogName;}public int getDogAge() {return dogAge;}public void setDogAge(int dogAge) {this.dogAge = dogAge;}@Overridepublic void dogWark() {System.out.println("小短腿跑起來");}
DogTest類
SmallDog sDog = new SmallDog();String dogName = sDog.getDogName();int dogAge = sDog.getDogAge();System.out.println(dogName +"->"+dogAge);sDog.dogWark(); sDog.setDogName("大黃");sDog.setDogAge(2);String dogName2 = sDog.getDogName();int dogAge2 = sDog.getDogAge();System.out.println(dogName2 +"->"+dogAge2);sDog.dogWark();
輸出結果5.定義一個運輸類(Transport)和它的兩個子類;
汽車類(Vehicle)和飛機類(Airplane)說明一:關于Transport兩個屬性,速度(speed,int)載重量(load,float)兩個get方法,能夠取得兩個屬性的值一個構造方法,能夠初始化這兩個屬性一個show()方法,調用倆個get方法,取得兩個屬性的值并打印說明二:關于Vehicle(交通工具)繼承Transport添加兩個屬性,車輪數(wheels,int),車重量(weight,float)添加兩個get方法,能夠取得兩個新添加屬性的值一個構造方法,調用父類的構造方法,并且能夠初始化新添加的兩個屬性一個show()方法,調用父類的show()方法打印speed和load兩個屬性,調用新添加的兩個get方法取得wheels和weight屬性的值并打印說明三:關于Airplane和說明二的要求一致,只要求新添加的兩個屬性為發動機類型(enginertype,String)發動機數量(enginers,int)最后,在測試類main方法中生成汽車類和飛機類的對象
Transport類
//運輸類private int speed;//速度private float load;//載重量public int getSpeed() {return speed;}public float getLoad() {return load;}public Transport(int speed, float load) {super();this.speed = speed;this.load = load;}public void show() {System.out.println("速度="+this.getSpeed()+",載重量="+this.getLoad());}
Vehicle類
private int wheels;//輪子private float weight;//車重量public Vehicle(int speed, float load, int wheels, float weight) {super(speed, load);this.wheels = wheels;this.weight = weight;}public int getWheels() {return wheels;}public float getWeight() {return weight;}@Overridepublic void show() {super.show();System.out.println("輪子="+this.getWheels()+",車重量="+this.getWeight());}
Airplane類
private String enginertype;//發動機類型private int enginers;//發動機數量public Airplane(int speed, float load, String enginertype, int enginers) {super(speed, load);this.enginertype = enginertype;this.enginers = enginers;}public String getEnginertype() {return enginertype;}public int getEnginers() {return enginers;}@Overridepublic void show() {super.show();System.out.println("發動機類型="+this.getEnginertype()+",發動機數量="+this.getEnginers());}
Main類
Vehicle vehicle = new Vehicle(100, 500, 4, 1000);vehicle.show();Airplane airplane = new Airplane(1000, 1000, "華為制造", 8);airplane.show();
輸出結果
?
總結
以上是生活随笔為你收集整理的javaSE各阶段练习题--面向对象-StringBuilder-继承-包和访问权限的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: javaSE各阶段练习题--面向对象-s
- 下一篇: javaSE各阶段练习题--面向对象-多