目的
學(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
整型(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ù)努力