《第六天總結》 張倫琦
《二維數組和麪向對象》
1.二維數組
A.二維數組的定義
格式:
1.int [][]arr=new int[3][4];
2.int [][]arr=new int[3][];
arr[0]=new int[5];
arr[1]=new int[6];
arr[2]=new int[8];
3.int [][]arr={{15,9,2,4,9},{2,4,9},{2,4,92,4,9}}
理解:
JAVA沒有真正的二維數組,是數組的數組
JAVA中的二維數組是不規則矩形
二維數組中裝的是一維數組
一維數組中裝的是元素
B.二維數組的使用
class TwoDArray
{
public static void main(String[] args)
{
/*
int [][] arr=new int[3][];
int[] arr1={45,56,68};
int[] arr2={52,78};
int[] arr3={79};
arr[0]=arr1;
arr[1]=arr2;
arr[2]=arr3;
*/
//int[][] arr={{45,56,68},{52,78},{79}};
//如果二維數組,沒有一維數組,將報空指針異常
//如果有二維數組和一維數組,但是數組沒有具體的值,將按默認值處理。因爲數組存放在堆內存中
int[][] arr=new int[3][];
arr[0]=new int[]{45,56,68};
arr[1]=new int[]{52,78};
arr[2]=new int[]{79};
//System.out.println(arr);//[[I@7852e922
//System.out.println(arr.length);//3代表有3行
//System.out.println(arr[1].length);//2有兩列
int sum=0;
//我如何能找到每一個一維數組
for (int i=0;i<=arr.length-1;i++ ){
//System.out.println( arr[i]);//每一個一維數組
//對找到的沒一個一維數組進行遍歷
for (int j=0;j<=arr[i].length-1 ;j++ ){
System.out.println(arr[i][j]);//每一個元素
sum=sum+arr[i][j];
}
}
System.out.println(sum);
}
}
2.面向過程和麪向對象
A.面向過程
面向過程的:
1.是以過程爲中心
2.自己完成每一個過程。
3.正確的組織所有的過程。
面向過程的思想特點
1.以方法爲中心。以辦事情所需要的動作、行爲和過程爲中心。
2.自己編寫相關方法。方法定義。
3.自己組織相關方法。方法調用。
B.面向對象
面向對象的:
1.事情有多少相關的對象(object)
2.這些對象的關係是什麼。
3.描述好每一個相關的對象。(每個對象要做的事情說請清楚)
面向對象的思想特點
1.面向對象是相對面向過程而言的.(面向過程早,面向對象晚)
2.面向對象是基於面向過程的。
3.面向對象和麪向過程都是一種思想。
面向過程強調的是行爲、動作、功能、方法。
面向對象強調的是對象以及對象之間的關係。
4.面向對象將人們從功能的實現者,轉變成對象以及對象具有的功能的指揮者。
5.是一種更符合人們思考習慣的思想,可以將複雜的事情簡單化
6.將程序員從執行者轉換成了指揮者
如何設計面向對象的程序
寫面向對象的程序的時候
1.找出程序牽涉到的對象。
2.如果存在相關的對象就直接拿來使用。
3.如果不存在相關的對象就創建對象再使用。
面向對象的設計,開發和特性
1.面向對象的設計:其實就是設計系統相關的對象以及對象之間的關係。
管理和維護對象之間的關係。
2.面向對象的開發:其實就是不斷的創建對象,使用對象,指揮對象做事情。
3.面向對象的特性:封裝(encapsulation)繼承(inheritance)多態(polymorphism)
3.類和對象
A.類和對象的自然語言描述
人:抽象的東西:類描述,類別,類型,種類,可有無數個對象
屬性,數據,靜態狀態: 姓名 身高 年齡 體重 性別
行爲,功能,動態狀態: 吃飯 喝水 睡覺 說話
張三這個人(具體的東西)對象
屬性:
姓名 張三
身高 180
年齡 20
體重 156
性別 男
行爲:吃飯 喝水 睡覺 說話
B.類和對象的Java語言描述
/*
學生:抽象的,類,class
屬性:學號 性別 姓名 年齡
行爲:吃飯 學習 玩遊戲
王五這個學生:具體的對象
屬性:
學號 wd001
性別 男
姓名 王五
年齡 18
行爲:
吃飯 學習 玩遊戲
趙六這個學生:具體的對象(實例)
屬性:
學號 wd002
性別 女
姓名 趙六
年齡 18
行爲:
吃飯 學習 玩遊戲
1.創建類,不能直接工作,因爲它是抽象的
2.創建對象,可以直接工作,因爲它是具體的
Student stu1=new Student();
3.使用對象
A.對象的屬性
屬性賦值:stu1.stuId="wd001";
屬性取值: Sop(stu1.stuId);
B.對象的方法
方法調用:stu1.playGame("英雄聯盟");
*/
class Student{
//屬性(數據,變量):學號 性別 姓名 年齡 體重
String stuId;
char stuSex;
String stuName;
int stuAge;
double stuWeight;
//方法:吃飯 學習 玩遊戲
public void eat(String caiMing){
System.out.println("學生吃"+caiMing);
}
public void study(String XueKeMing){
System.out.println("學生學習"+XueKeMing);
}
public void playGame(String gameName){
System.out.println("學生玩"+gameName);
}
}
/*
//測試類
class StudentDemo
{
public static void main(String[] args)
{
//Student stu1對象的引用在棧裏,new Student()實體在堆裏
//Student stu1=new Student();//創建一個學生對象
Student stu1;//創建一個學生對象
//使用對象(屬性)
System.out.println(stu1.stuId);//null
System.out.println(stu1.stuSex);//' '
System.out.println(stu1.stuName);//null
System.out.println(stu1.stuAge);//0
//使用對象(屬性賦值)
stu1.stuId="wd001";
stu1.stuSex='男';
stu1.stuName="王五";
stu1.stuAge=18;
//使用對象(屬性取值)
System.out.println("********************************");
System.out.println(stu1.stuId);//wd001
System.out.println(stu1.stuSex);//男
System.out.println(stu1.stuName);//王五
System.out.println(stu1.stuAge);//18
//使用對象(方法)
stu1.eat("水煮白菜");
stu1.study("java");
stu1.playGame("英雄聯盟");
}
}
*/
class StudentDemo
{
public static void main(String[] args)
{
/*
Student stu1=new Student();
stu1.stuName="張三";
stu1.stuName="李四";
System.out.println(stu1.stuName);//李四
*/
/*
Student stu1=new Student();
stu1.stuName="張三";
Student stu2=stu1;
stu2.stuName="李四";
System.out.println(stu1.stuName);//李四
*/
/*
Student stu1=new Student();
stu1.stuName="張三";
Student stu2=new Student();
stu2=stu1;
stu2.stuName="李四";
System.out.println(stu1.stuName);//李四
*/
}
}
C.類和對象的練習
/*
電話:抽象的,用類來描述
屬性:價格 品牌 顏色 尺寸
行爲:打電話 發信息 玩遊戲
1.描述類
2.創建對象
3.使用對象
屬性
方法
對象的成員
1.成員變量:和對象相關的變量,定義在類中。
2.成員方法:和對象相關的方法,定義在類中。
類和對象的關係
1.類 : 是抽象的事物,是對象歸類產生的概念,可以有無數個具體的對象。
2.對象:是具體的事物,是類的一個具體的實例。
3.對象是由屬性和行爲組成的。
屬性是對事物的數據的描述。成員變量(字段,域,屬性:field)
行爲是對事物的功能的描述。成員方法(成員函數,功能,行爲:method)
引用和實體的關係
1.對象的實體相當於電視機;堆中。
2.對象的引用相當於遙控器;棧中。
3.對象的實體可以有多個引用,相當於一個電視機有多個遙控器。
4.對象的實體可以沒有引用,相當於電視機沒有遙控器。
5.分析時要明確引用指向的實體,明確哪個遙控器控制着哪個電視機。
*/
class Phone{
// fields 屬性:價格 品牌 顏色 尺寸
double price=2500.00;
String brand;
String color;
double size;
// methods 行爲:打電話 發信息 玩遊戲
public void call(String name){
System.out.println("打電話給"+name);
}
public void sendMessage(String name){
System.out.println("發信息給"+name);
}
public void playGame(String gameName){
System.out.println("玩遊戲"+gameName);
}
}
class PhoneDemo {
public static void usePhone(Phone ph){//ph=0x11
//使用對象(屬性:賦值)
ph.price=2500.00;
ph.brand="IPHONE4S";
ph.color="白色";
ph.size=3.5;
//使用對象(屬性:取值)
System.out.println(ph.price);
System.out.println(ph.brand);
System.out.println(ph.color);
System.out.println(ph.size);
//使用對象的方法
ph.call("范冰冰");
ph.sendMessage("黃曉明");
ph.playGame("找你妹");
}
public static void main(String[] args) {
//創建對象
Phone ph=new Phone();
usePhone(ph);
System.out.println(ph.price);
System.out.println(ph.brand);
System.out.println(ph.color);
System.out.println(ph.size);
}
}
4.局部變量和成員變量
成員變量:定義在類中和對象相關的變量;
局部變量:定義在方法中和方法相關的變量
成員變量和局部變量的區別?
區別一:定義位置不同。
成員變量定義在類中和對象相關。
局部變量定義在方法中以及語句裏,和方法相關。
區別二:存儲位置不同。
成員變量存儲在堆內存的對象中。
局部變量存儲在棧內存的方法中。
區別三:存生命週期不同。
成員變量隨着對象的創建而創建,隨着對象的消失而消失。
局部變量隨着的方法的進棧而創建,隨着方法的彈棧而消失。
區別四:初始化不同。
成員變量因爲在堆內存中,所以有默認初始化值。
局部變量因爲在棧內存中,所以沒有默認初始值,必須初始化後纔可以使用。
*/
class Phone{
//成員變量
int price;
//成員方法
void show(){
//局部變量
int price;
System.out.println(price);
}
}
class BianLiang{
public static void main(String[] args)
{
Phone ph=new Phone();
//System.out.println(ph);//Phone@7852e922
System.out.println(ph.price);
ph.show();
}
}
5.匿名對象
/*
匿名對象:對象沒有名稱,對象沒有引用
應用場景:
1.對象只使用一次,不需要給對象起名稱。
2.匿名對象作爲方法調用實參
*/
class Phone{
void close(){
System.out.println("電話關機");
}
void open(){
System.out.println("電話開機");
}
}
class NiMingDemo {
public static void usePhone(Phone ph) {
ph.close();
}
public static void main(String[] args) {
//Phone ph=new Phone();//有名對象
//new Phone();//匿名對象
//有名對象可以用無數次
Phone ph=new Phone();
ph.close();
ph.open();
ph.close();
ph.open();
//場景一、匿名對象只能使用一次。對象只使用一次,不需要給對象起名稱。
new Phone().close();
//場景二、匿名對象作爲方法調用實參
usePhone(new Phone());
}
}
上海傳智播客JAVASE_day06學習筆記
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
上海傳智播客JAVASE_day02學習筆記
《第二天總結-張倫琦》 一.Java程序的常見元素 A:關鍵字 被JAVA語言賦予了特殊含義的單詞,且這些單詞都爲
张伦琦
2020-07-06 14:03:36
上海傳智播客JAVASE_day01學習筆記
《第一天總結-李國華》/*第一天總結是李老師帶我們寫噠·····*/ 一、計算機基礎 A:計算機:計算機就是一個計算工具,人類腦力勞動的延伸
张伦琦
2020-07-06 14:03:36
Java學習總結-註解
ostracod_lvj
2020-06-21 08:32:00
Java 註解簡單學習
ostracod_lvj
2018-09-03 15:20:53
類加載器classloader-java簡析
ostracod_lvj
2018-09-03 15:20:52
Java反射簡單學習
ostracod_lvj
2018-09-03 15:20:52
java集合框架分析-HashMap(加載因子及初始容量深入分析)
ostracod_lvj
2018-09-03 15:20:52
上海傳智播客JAVASE_day10學習筆記
张伦琦
2018-08-23 11:52:33
上海傳智播客JAVASE_day12學習筆記
张伦琦
2018-08-23 11:52:31
上海傳智播客JAVASE_day17學習筆記
张伦琦
2018-08-23 11:52:31
上海傳智播客JAVASE_day16學習筆記
张伦琦
2018-08-23 11:52:31
上海傳智播客JAVASE_day08學習筆記
张伦琦
2018-08-23 11:52:31
上海傳智播客JAVASE_day15學習筆記
张伦琦
2018-08-23 11:52:31
上海傳智播客JAVASE_day14學習筆記
张伦琦
2018-08-23 11:52:31
上海傳智播客JAVASE_day07學習筆記
张伦琦
2018-08-23 11:52:29