JavaSE之類和對(duì)象

構(gòu)造器

public class MethodDemo1 {
    // 特殊的方法:構(gòu)造器(構(gòu)造方法)
    // 1.這個(gè)方法名字 -- 必須和類名完全一樣
    // 2.沒(méi)有返回值,連void也寫
    // 3.不能用static修飾
    public MethodDemo1() {
        System.out.println(123);
    }
    public MethodDemo1(int i) {
        
    }
    public static void main(String[] args) {
        Random r = new Random();
    }
}

創(chuàng)建對(duì)象

public class ClassDemo2 {
    String name;
    public int getNum() {
        return 1;
    }
    public void showInfo(String n) {
        System.out.println(n+"你好");
    }
    public double getDouble(double num1,double num2) {
        return num1/num2;
    }
}
public class ClassDemo2Test {
    public static void main(String[] args) {
        ClassDemo2 cd = new ClassDemo2();
        cd.name = "張三";
        cd.showInfo("老師");
        int num = cd.getNum();
        System.out.println(num);
        double num1 = cd.getDouble(5.3, 1.1);
        System.out.println(num1);
    }
}

全局變量存在默認(rèn)值

public class ClassDemo3Test {
    public static void main(String[] args) {
        // 局部變量使用前必須賦值
//      String str;
//      System.out.println(str);
        ClassDemo3 cd = new ClassDemo3();
        System.out.println(cd.name);
        cd.name = "李四";
        System.out.println(cd.name);
        // 全局變量有默認(rèn)值
        // 整型0,浮點(diǎn)型0.0,布爾false,字符型\u0000,引用數(shù)據(jù)類型null
        cd.show();
        System.out.println(cd.age);
        
        ClassDemo3 cd1 = new ClassDemo3();
        cd1.name = "王五";
        cd1.show();
    }
}

就近原則

public class ClassDemo4 {
    String name;
    // 就近原則
    public void show(String name) {
        System.out.println(name);
    }
    
    public void test() {
        show("趙六");
        System.out.println(name);
    }
}

對(duì)象類型數(shù)組

public class ClassDemo6 {
    public static void main(String[] args) {
        int num = 10;
        int arr[] = {num};
        Student s1 = new Student("zhangsan","man",22);
        Student s2 = new Student("lishi","woman",32);
        Student s3 = new Student("wanghu","man",66);
        Student s[] = {s1,s2,s3};
//      遍歷這個(gè)數(shù)組,打印出所有學(xué)員的詳細(xì)信息
//      for(int i = 0;i < s.length;i++) {
//          Student stu = s[i];
//          System.out.println(stu.name);
//      }
        for(Student stu : s) {
            System.out.println(stu.name+","+stu.gender+","+stu.age);
        }
    }
}

匿名對(duì)象

public class Demo1 {    
    public void test1() {
        System.out.println(123);
    }
    public void test2() {
        System.out.println(456);
    }
    public static void main(String[] args) {
        // 匿名對(duì)象 : 沒(méi)有引用指向的對(duì)象,它只能使用一次
//      Demo1 d = new Demo1();
//      d.test1();
//      d.test2();
        new Demo1().test1();
        new Demo1().test2();
        
        // 垃圾自動(dòng)回收機(jī)制(GC)
        // JVM會(huì)把堆中沒(méi)有引用指向的對(duì)象視為垃圾對(duì)象,當(dāng)這個(gè)對(duì)象執(zhí)行完對(duì)應(yīng)的工作,JVM虛擬機(jī)
        // 會(huì)自動(dòng)找到這些垃圾對(duì)象調(diào)用其finalize()回收內(nèi)存
    }
}

this關(guān)鍵字

public class Demo3 {
    String name = "張三";
    // this : 代表當(dāng)前類對(duì)象
    // ①this.屬性名,this.方法()
    // ②this() : 只能用在構(gòu)造器中,調(diào)用其他構(gòu)造器,在一個(gè)構(gòu)造器中只能用一次,并且必須在第一行使用   
    public Demo3() {
        this("lisi");
        System.out.println(1);
    }
    public Demo3(String name) {
        System.out.println(123);
    }
//  public void show() {
//      String name = "李四";
//      System.out.println(name);
//      System.out.println(this.name);
//      test();
//  }
//  public void test() {
//      System.out.println(123);
//  }
    public static void main(String[] args) {
        Demo3 d = new Demo3();
        d.name = "1";
        Demo3 d1 = new Demo3();
        d1.name = "1";
        System.out.println(d.name);
    }
}

封裝(四個(gè)訪問(wèn)權(quán)限修飾符)

public class Demo5 {
    public static void main(String[] args) {
        // Java面相對(duì)象特性:繼承,封裝,多態(tài),抽象
        // 抽象(程序員將現(xiàn)實(shí)實(shí)物抽象為腦中概念模型)
        // 封裝 :將一套功能組織成一個(gè)方法,將一套方法加一套屬性組織到一個(gè)類,將一套類組織到一個(gè)包中
        // 訪問(wèn)權(quán)限修飾符
        /*
         * public : 公有,工程中可見(jiàn)
         *      能修飾類,方法,屬性(全局變量)
         * protected : 受保護(hù)的,當(dāng)前包可見(jiàn),跨包的“親戚”可見(jiàn),“非親戚”不可見(jiàn)
         *      能修飾方法和屬性
         * 【friendly,default】:默認(rèn)的,跨包不可見(jiàn)
         *      能修飾類,方法,屬性(全局變量)
         * private : 私有的,只有當(dāng)前類可見(jiàn)
         *      能修飾方法和屬性
         */
        // JavaBean(實(shí)體類) : 
        // 1.有無(wú)參構(gòu)造器(必要)
        // 2.屬性全部私有
        // 3.有公有的get(獲?。┖蛃et(修改)方法
        
    }
}

控制臺(tái)模擬植物大戰(zhàn)僵尸

僵尸類

public class Zoombie {
    int hp = 500;
    int dps = 30;
    /**
     * 攻擊
     * @param sf 向日葵對(duì)象
     */
    public void attack(SunFlower sf) {
        if(hp <= 0) {
            System.out.println("對(duì)不起,僵尸沒(méi)血,無(wú)法攻擊");
        }
        else {
            // 判斷向日葵是否有血
            if(sf.hp <= 0) {
                System.out.println("向日葵沒(méi)有血了,嚴(yán)禁鞭尸");
            }
            // 僵尸有hp,對(duì)方也有
            else {
                System.out.println("僵尸對(duì)向日葵造成了 "+dps+" 點(diǎn)傷害");
                // 對(duì)方掉血
                sf.hp = sf.hp - dps;
                // 如果是負(fù)數(shù),歸0
                if(sf.hp <= 0) {
                    sf.hp = 0;
                    System.out.println("向日葵已經(jīng)死亡");
                    return;
                }
                System.out.println("向日葵還剩 "+sf.hp+" 點(diǎn)血量");
            }
        }
    }
    public void attack(BeanHunter bh) {
        if(hp <= 0) {
            System.out.println("對(duì)不起,僵尸沒(méi)血,無(wú)法攻擊");
        }
        else {
            // 判斷向日葵是否有血
            if(bh.hp <= 0) {
                System.out.println("豌豆射手沒(méi)有血了,嚴(yán)禁鞭尸");
            }
            // 僵尸有hp,對(duì)方也有
            else {
                System.out.println("僵尸對(duì)豌豆射手造成了 "+dps+" 點(diǎn)傷害");
                // 對(duì)方掉血
                bh.hp = bh.hp - dps;
                // 如果是負(fù)數(shù),歸0
                if(bh.hp < 0) {
                    bh.hp = 0;
                }
                System.out.println("豌豆射手還剩 "+bh.hp+" 點(diǎn)血量");
            }
        }
    }
}

向日葵類

public class SunFlower {
    int hp = 300;
    /**
     * 回血方法
     */
    public void addBuff() {
        hp = hp + 20;
        if(hp > 300) {
            hp = 300;
        }
        System.out.println("向日葵進(jìn)行了光合作用,回復(fù)了20點(diǎn)血,目前血量 "+hp);
    }
}

豌豆射手類

public class BeanHunter {
    int hp = 200;
    int dps = 60;
    public void attack(Zoombie z) {
        if(hp <= 0) {
            System.out.println("對(duì)不起,豌豆射手沒(méi)血,無(wú)法攻擊");
        }
        else {
            if(z.hp <= 0) {
                System.out.println("僵尸沒(méi)有血了,嚴(yán)禁鞭尸");
            }
            else {
                System.out.println("豌豆射手對(duì)僵尸造成了 "+dps+" 點(diǎn)傷害");
                // 對(duì)方掉血
                z.hp = z.hp - dps;
                // 如果是負(fù)數(shù),歸0
                if(z.hp < 0) {
                    z.hp = 0;
                    System.out.println("僵尸GG了");
                    return;
                }
                System.out.println("僵尸還剩 "+z.hp+" 點(diǎn)血量");
            }
        }
    }
}

啟動(dòng)類

public class Test {
    public static void main(String[] args) {
        Zoombie z = new Zoombie();
        SunFlower sf = new SunFlower();
        BeanHunter bh = new BeanHunter();
        
        while(true) {
            if(z.hp <= 0) {
                System.out.println("植物勝利");
                break;
            }
            if(sf.hp <= 0 && bh.hp <= 0) {
                System.out.println("僵尸勝利");
                break;
            }
            // 互相傷害
            // 生成隨機(jī)數(shù)
            double random = Math.random();// [0,1)
            if(random <= 0.3) {
                z.attack(sf);
            }else if(random <= 0.5) {
                z.attack(bh);
            }else if(random <= 0.8) {
                bh.attack(z);
            }else {
                sf.addBuff();
            }   
            try {
                Thread.sleep(1000);// 休眠1000毫秒,即1秒
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

生成一副撲克牌

public class Poker {
    String suit;// 花色
    String count;// 點(diǎn)數(shù)
    public void giveMe() {
        String hs[] = {"紅桃","黑桃","方片","草花"};
        String ds[] = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
        // 寫一個(gè)循環(huán),生成一副撲克
        Poker pokers[] = new Poker[52];
        int index = 0;
        // 遍歷數(shù)組,取到hs[]和ds[]的所有組合,給Poker對(duì)象賦值,然后存入pokers[]
        for(int i = 0;i < hs.length;i++) {
            for(int j = 0;j < ds.length;j++) {
                pokers[index] = new Poker();
                pokers[index].suit = hs[i];
                pokers[index].count = ds[j];
                index++;
            }
        }
        for(Poker p : pokers) {
            System.out.println(p.suit+p.count);
        }
    }
    public static void main(String[] args) {
        Poker p = new Poker();
        p.giveMe();
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容