<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ### 類(class) java中只提供了基本數據類型,字符串,及一些數組,無法表示很多類型數據,比如學生:那么如何在java程序中表示一個Student?我們可以創建一個新的類型是就是Student,這就是類的功能。 **類是一種數據類型** *** ### 構造器 從類當中實例化出來的個體,我們稱之為對象,創建對象的語法為:**類名 對象(實例)名稱 = new 構造器();** 構造器的作用: 1.創建對象 2.為對象屬性進行初始化 #### **注意:一個類如果沒有寫任何構造器,這個類會默認提供一個空的無參構造器,一旦一個類有了任意一個構造器,默認的構造器將不再提供,創建對象時只能調用已經存在的構造器** 通過構造器的重載,可以在實例化對象的時候大大便利我們的開發 Person.java ~~~ public class Person { String name;// 名字 String sex;// 性別 int age;// 年齡 // 構造器:1.創建對象,如果一個類沒有寫任何構造器,系統會默認提供一個空的無參構造器 // 一旦寫了有參構造器,默認構造器不再提供 // 2.直接給對象屬性賦值 public Person() { } public Person(String n,String s) { name = n; sex = s; } public Person(String n,String s,int a) { name = n; sex = s; age = a; } public void updateName(String n) { name = n; } public void updateAge(int a) { if(a > 0) { age = a; }else { System.out.println("error"); } } public void study(String subject) { int num = 20; System.out.println(name+"嗷嗷學"+subject); } } ~~~ Test.java ~~~ public class Test { public static void main(String[] args) { // 創建對象:類名 對象(實例)名稱 = new 構造器(); // Person p1 = new Person(); 無參構造器實例化 Person p1 = new Person("張三","男",16);// 有參構造器實例化 // 可以用對象調用到對象屬性和方法 p1.updateName("hello"); System.out.println(p1.name); } } ~~~ ### 內存模型 ![](https://box.kancloud.cn/f1d5d006946d362c76cb96d01b350b5f_854x517.png) **只有兩個引用指向堆區同一塊區域,才是同一個對象(上圖中p1,p2雖然屬性值完全一樣,但是因為指向區域不同,所以不是一個對象)** *** ### 對象作為參數及屬性 #### 小練習 **戰士PK** Fighter.java 戰士類 ~~~ /** * 戰士類 * @author Administrator */ public class Fighter { String name;// 角色名 int hp = 100;// 血量 int defend = 8;// 防御力 int level = 1;// 等級 int dps = 10;// 攻擊力 Weapon w = new Weapon("烏木劍", 4);// 武器 public Fighter(String n) { name = n; } public Fighter(String n,Weapon w1) { name = n; w = w1; } /** * 攻擊方法 * @param fighter 另一個戰士對象 */ public void attack(Fighter f) { // 判斷當前戰士是否有血 if(hp <= 0) { System.out.println("您已經死亡,無法攻擊目標"); }else { // 判斷對方是否有血 if(f.hp > 0) { // 計算傷害 int damage = 0; if(level + 10 <= f.level || dps + w.dps <= f.defend) { // 對方等級超出自己10級,強制傷害為1點 damage = 1; }else { damage = (int)((dps + w.dps - f.defend)*((1-(f.level - level)*0.1))); } // 暴擊 double random = Math.random(); if(random < 0.4) { damage *= 1.5; System.out.print(name+"發動強力一擊,"); } System.out.println(name+"手持"+w.name+"對"+f.name+"造成了"+damage+"點傷害"); f.hp = f.hp - damage; if(f.hp < 0) { f.hp = 0; System.out.println(f.name+"陣亡了"); return; } System.out.println(f.name+"還有"+f.hp+"點血"); }else{ System.out.println("目標已經死亡,嚴禁鞭尸"); } } } /** * 升級 * @param money 充的金幣 */ public void Uplevel(int money) { if(money <= 0) { System.out.println("不充錢玩聲明游戲"); }else { int num = money/100; level = level + num; dps = dps + num * 8; defend = defend + num * 3; hp = hp + num * 30; System.out.println(name+"升了"+num+"級,能力獲得很大提升!!!!!!!"); } } /** * 回復 */ public void drink() { if(hp < 0) { System.out.println("去死,喝不了"); return; } hp = 100 + (level - 1) * 30; System.out.println(name+"滿血了,很牛b!"); } } ~~~ Weapon.java 武器類 ~~~ /** * 武器 * @author Administrator * */ public class Weapon { String name; int dps; public Weapon(String n,int d) { name = n; dps = d; } } ~~~ FighterTest.java 測試類 ~~~ public class FighterTest { public static void main(String[] args) { Weapon w1 = new Weapon("搟面杖", 12); Weapon w2 = new Weapon("凳子", 11); Fighter f1 = new Fighter("三季稻",w1); Fighter f2 = new Fighter("李大花"); while(true) { double num = Math.random(); // num小于0.5,f1攻擊f2 if(num < 0.5) { double num1 = Math.random(); if(num1 < 0.1) { f1.Uplevel(500); } if(num1 >= 0.1 && num1<= 0.2) { f1.drink(); } f1.attack(f2); }else { double num1 = Math.random(); if(num1 < 0.2) { f2.Uplevel(500); } if(num1 >= 0.2 && num1<= 0.4) { f2.drink(); } f2.attack(f1); } if(f1.hp <= 0 || f2.hp <= 0) { break; } } } } ~~~ *** ### 匿名對象 ~~~ // 匿名對象--只生效一次 new Person().age = 12; ~~~ *** ### 垃圾回收機制(GC) **沒有引用指向的對象JVM會視其為垃圾**,JVM會調用這個對象的finalize()釋放內存空間 ~~~ // 如下代碼,堆區當中始終都只保留一個對象,之前生成的都被回收了 for(int i = 0;i <10000;i++) { Person p = new Person(); } ~~~ *** ### 棧(stack)內存模型--后進先出 先調用的方法,后執行完畢 ![](https://box.kancloud.cn/71a95f46e1e035a9f721afb68b8017c6_447x279.png) *** ### JavaBean(實體類) 1.有無參構造器(必要條件)--與框架相關 2.所有屬性私有--保護數據 3.公有的get和set方法--獲取修改數據 ~~~ public class JavaBean { private int num; private String name; public int getNum() { return num; } public void setNum(int num) { this.num = num; } public String getName() { return name; } public void setName(String name) { this.name = name; } } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看