2019-08-06 Day8 數(shù)組的使用和類的定義

目的

學(xué)習(xí)Java中數(shù)組的兩種狀態(tài)结序,理解靜態(tài)數(shù)組和動態(tài)數(shù)組的相似和不同纵潦;了解數(shù)組定義之后在內(nèi)存中的表現(xiàn)形式,實現(xiàn)更深層次的理解返敬;掌握數(shù)組的三種輸出方式劲赠,并明白其原理與意義;使用Java中的數(shù)組編寫猜數(shù)字游戲霹肝,加深對Java的理解

Java中的數(shù)據(jù)類型

基礎(chǔ)數(shù)據(jù)類型

char boolean short int long float double byte


1.jpg

整型(byte沫换、short讯赏、int冷尉、long)
雖然byte网严、short、int怜庸、long 數(shù)據(jù)類型都是表示整數(shù)的割疾,但是它們的取值范圍可不一樣

byte 的取值范圍:-128~127(-2的7次方到2的7次方-1)

short 的取值范圍:-32768~32767(-2的15次方到2的15次方-1)

int 的取值范圍:-2147483648~2147483647(-2的31次方到2的31次方-1)

long 的取值范圍:-9223372036854774808~9223372036854774807(-2的63次方到2的63次方-1)

由上可以看出 byte宏榕、short 的取值范圍比較小侵佃,而long的取值范圍時最大的,所以占用的空間也是最多的抚芦。int 取值范圍基本上可以滿足我們的日常計算需求了叉抡,所以 int 也是我們使用的最多的一個整型類型

浮點型(float、double)
float 和 double 都是表示浮點型的數(shù)據(jù)類型季春,它們之間的區(qū)別在于精確度的不同

float(單精度浮點型)取值范圍:3.402823e+38~1.401298e-45(e+38 表示乘以10的38次方载弄,而e-45 表示乘以10的負(fù)45次方)

double(雙精度浮點型)取值范圍:1.797693e+308~4.9000000e-324(同上)

double 類型比float 類型存儲范圍更大侦锯,精度更高

通常的浮點型數(shù)據(jù)在不聲明的情況下都是double型的秦驯,如果要表示一個數(shù)據(jù)時float 型的译隘,可以在數(shù)據(jù)后面加上 "F"

浮點型的數(shù)據(jù)是不能完全精確的固耘,有時候在計算時可能出現(xiàn)小數(shù)點最后幾位出現(xiàn)浮動厅目,這時正常的

字符型(char)
char 有以下的初始化方式:

char ch = 'a'; // 可以是漢字法严,因為是Unicode編碼

char ch = 1010; // 可以是十進(jìn)制數(shù)、八進(jìn)制數(shù)拗馒、十六進(jìn)制數(shù)等等

char ch = '\0'; // 可以用字符編碼來初始化诱桂,如:'\0' 表示結(jié)束符挥等,它的ascll碼是0堤尾,這句話的意思和 ch = 0 是一個意思

Java是用unicode 來表示字符,“中” 這個中文字符的unicode 就是兩個字節(jié)

String.getBytes(encoding) 方法獲取的是指定編碼的byte數(shù)組表示

通常gbk / gb2312 是兩個字節(jié)哲泊,utf-8 是3個字節(jié)

如果不指定encoding 則獲取系統(tǒng)默認(rèn)encoding

布爾型(boolean)
boolean 沒有什么好說的催蝗,它的取值就兩個:true 丙号、false

引用數(shù)據(jù)類型

除了上面的所有基礎(chǔ)數(shù)據(jù)類型,其余的都是引用類型

數(shù)據(jù)的兩種定義方式

靜態(tài)數(shù)組

int[] score = {1,2,3};
String[] names = {"jack","merry"};

動態(tài)數(shù)組

float[] height = new float[5];
height[0] = 165.5f;
height[1] = 170f;

輸出數(shù)組的三種方式

第一種數(shù)組輸出方式

for (int i = 0;i < 10;i++){
    System.out.print(count[i]+" ");
}
System.out.println();

第二種數(shù)組輸出方式

for (int temp: count){
      System.out.print(temp+" ");
   }
System.out.println();

第三種數(shù)組輸出方式

System.out.println(Arrays.toString(count));

Java的對象

按照通俗的說法喳魏,每個對象就是某個類(class)的一個實例(instance)刺彩,這里创倔,‘類’就是‘類型’的同義詞

關(guān)鍵詞 具體的&實際存在的&某一類的實例化
對象都是new出來的,可以完成具體的事情并有內(nèi)存空間

Person xw = new Person();

同一個類可以有多個對象畦攘,但每個對象的內(nèi)存空間都是獨立的(對象之間沒有任何關(guān)系)十电;而xw和zs除了都是通過一個類創(chuàng)建的之外鹃骂,沒有任何關(guān)系,對xw的屬性進(jìn)行操作爷恳,對zs沒有影響

Person xw = new Person();
Person zs = new Person();
        xw.name="小王";
        xw.age = 20;
        xw.score=85.5f;
        System.out.println(xw.name);
        System.out.println(xw.age);
        System.out.println(xw.score);

Java類中的方法的定義方法

public void test(){
        System.out.println("沒返回值 沒有參數(shù)的方法");
    }

    public void test2() {
        //在自己的類里面可以調(diào)用這個類里面的所有資源
        test();
    }

    //沒有返回值 接收一個參數(shù)
    public void test3(String name){

    }

    //有一個返回值 有一個參數(shù)
    public int test4(String name){
        return 0;
    }

    //有多個參數(shù) 每個參數(shù)用逗號隔開
    public int test5(String name, int age){
        return 0;
    }

    //可變參數(shù)  相當(dāng)于 數(shù)組
    public int test6(int ... counts){
        int sum = 0;
        for (int i = 0;i < counts.length;i++){
            sum +=  counts[i];
        }

        return sum;
    }

需要注意的是:方法在調(diào)用時要注意調(diào)用誰(哪個對象)的方法温亲,同時在類里面可以直接調(diào)用自己的方法栈虚,但是在外部必須通過對象來調(diào)用

封裝中訪問權(quán)限的區(qū)別

封裝的定義:把私有的東西包裝起來魂务,不讓外部使用;需要給外部用鬓照,就暴露出來

public:

公共的 大家都可以使用 內(nèi)部可以使用 外部也可以使用(要有對象)

private:

私有的 只能自己使用 外部無法訪問

protected:

受保護(hù)的 外部可以訪問 但必須在同一個包里面

猜數(shù)字游戲

public static void main(String[] args){
        //保存原始數(shù)字
        int[] org = new int[4];
        //保存用戶猜測的數(shù)字
        int[] guess = new int[4];

        //產(chǎn)生4個隨機(jī)數(shù)
        Random random = new Random();
        for (int i = 0;i < 4;i++){
            //產(chǎn)生一個隨機(jī)數(shù)
            int temp = random.nextInt(10);

            //判斷是否存在
            //C底層開發(fā)語言
            boolean result = contains(org, temp);
            if (result){
                i--;
            }else{
                org[i] = temp;
            }

        }

        //排序
        Arrays.sort(org);

        System.out.println(Arrays.toString(org));

        //定義一個掃描儀對象Scanner
        Scanner scanner = new Scanner(System.in);

        //開始游戲
        while (true){
            int countA = 0;
            int countB = 0;
            System.out.print("請輸入猜測的數(shù)字:");
            for (int i = 0;i < 4;i++){
                guess[i] = scanner.nextInt();
            }

            //判斷用戶輸入
            //1.判斷是否存在
            for (int i = 0;i < 4;i++) {
                boolean result = contains(guess, org[i]);
                if (result){
                    //數(shù)字存在
                    //判斷位置是否正確
                    int index = indexof(guess, org[i]);

                    if (index == i){
                        //數(shù)字和位置都正確
                        countA++;
                    }else{
                        countB++;
                    }
                }
            }

            if (countA == 4){
                System.out.println("恭喜全對");
                break;
            }else{
                System.out.println(countA+"A"+countB+"B");
            }
        }

    }


    public static int indexof(int[] val, int obj){
        for (int i = 0;i < val.length;i++){
            if (val[i] == obj){
                return i;
            }
        }
        return -1;
    }
    //自己寫一個方法實現(xiàn) 判斷某個數(shù)組里面是否包含某個值
    public static boolean contains(int[] val, int obj){
        for (int i = 0;i < val.length;i++){
            if (val[i] == obj){
                //重復(fù)了
                return true;
            }
        }
        return false;
    }

Java的類

類就是具備某些共同特征的實體的集合,它是一種抽象的數(shù)據(jù)類型臭猜,它是對所具有相同特征實體的抽象押蚤。在面向?qū)ο蟮某绦蛟O(shè)計語言中揽碘,類是對一類“事物”的屬性與行為的抽象。舉一個例子說明下類帅矗,比如Person(人)就是一個類煞烫,那么具體的某個人“張三”就是“人類”這個類的對象滞详,而“姓名料饥、身高朱监、體重”等信息就是對象的屬性,人的動作比如“吃飯巡蘸、穿衣”等就是對象的方法擂送∴诙郑總之類就是有相同特征的事物的集合,而對象就是類的一個具體實例碰纬。同時類有多態(tài)和繼承,例如“人類”可以分為“男人寿桨、女人”牛隅,“老人酌泰、小孩”那么“男人、女人”就是“人類”的子類等等默伍。

關(guān)鍵詞 抽象的概念&不實際存在的&不能完成具體的事情&具有共同的屬性和方法

定義一個類,需要用到修飾符和class也糊,以及一個具體的類名羡宙;通常情況下一個文件對應(yīng)一個類
修飾符:public static final

 修飾符  class  類名{
     這個類的一些屬性:成員變量
     這個類的功能:方法
  }

1.存什么值:成員變量
2.完成什么功能:方法

class Person{
     //成員變量定義在最上面
     String name;
     int age;
     float score;
     String password;
     char choice;
}

心得體會

今天是熟悉Java中類和對象的一天狗热,算是對Java這個語言有了最基本的了解;希望繼續(xù)努力

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末僧凰,一起剝皮案震驚了整個濱河市训措,隨后出現(xiàn)的幾起案子绩鸣,更是在濱河造成了極大的恐慌纱兑,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件屏鳍,死亡現(xiàn)場離奇詭異钓瞭,居然都是意外死亡淫奔,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來唐责,“玉大人,你說我怎么就攤上這事鼠哥∑涌遥” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵呆贿,是天一觀的道長森渐。 經(jīng)常有香客問我章母,道長乳怎,這世上最難降的妖魔是什么前弯? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮询枚,結(jié)果婚禮上金蜀,老公的妹妹穿的比我還像新娘。我一直安慰自己渊抄,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布含衔。 她就那樣靜靜地躺著贪染,像睡著了一般杭隙。 火紅的嫁衣襯著肌膚如雪睡陪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天信殊,我揣著相機(jī)與錄音汁果,去河邊找鬼据德。 笑死,一個胖子當(dāng)著我的面吹牛棘利,可吹牛的內(nèi)容都是我干的水援。 我是一名探鬼主播茅郎,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼奕扣!你這毒婦竟也來了掌敬?” 一聲冷哼從身側(cè)響起池磁,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤框仔,失蹤者是張志新(化名)和其女友劉穎离斩,沒想到半個月后瘪匿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體棋弥,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡顽染,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了尼荆。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捅儒。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡巧还,死狀恐怖坊秸,靈堂內(nèi)的尸體忽然破棺而出褒搔,到底是詐尸還是另有隱情,我是刑警寧澤荸恕,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布死相,位于F島的核電站算撮,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏肮柜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望芒澜。 院中可真熱鬧,春花似錦痴晦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽必孤。三九已至瑞躺,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間赡勘,已是汗流浹背闸与。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工践樱, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留拷邢,地道東北人。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓忽洛,卻偏偏與公主長得像环肘,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子复哆,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容