java数组最大下标_【Java视频教程】day09-面向对象
面向?qū)ο蠼榻B
- 面向?qū)ο笠?/li>
需求:求數(shù)組{1,2,3,4,8,7,6,5}的最大值;
public static void main(String[] args) {// 需求:求數(shù)組{1,2,3,4,8,7,6,5}的最大值;/** 解決問題的思路: 1、明確需求:搞清楚、確認清楚,到底要我們做什么事; 2、需求分析:如何實現(xiàn)需求(這個事情到底該怎么做);* a:創(chuàng)建一個數(shù)組,把需求中的數(shù)據(jù)保存到數(shù)組中; b:定義一個int型變量max,表示最大的值;* c:將數(shù)組中0下標的數(shù)據(jù)賦值該上一步的變量,表示默認0下標數(shù)據(jù)是最大值; d:從1下標開始遍歷數(shù)組,拿到數(shù)組中每一個數(shù)據(jù),和變量max的值比較;* 如果變量max中的數(shù)據(jù)比數(shù)組某個下標的數(shù)據(jù)小,就把該下標的數(shù)據(jù)賦值給變量max; e:循環(huán)結(jié)束,變量max中就是要求的最大值* 3、編碼實現(xiàn):具體開始做事情; 4、測試:執(zhí)行代碼,看看事情到底有沒有做成、有沒有問題;*/// a:創(chuàng)建一個數(shù)組,把需求中的數(shù)據(jù)保存到數(shù)組中;int[] arr = new int[] {11,2,3,4,8,7,6,5};// b:定義一個int型變量max,表示最大的值;int max;// c:將數(shù)組中0下標的數(shù)據(jù)賦值該上一步的變量,表示默認0下標數(shù)據(jù)是最大值;max = arr[0];// d:從1下標開始遍歷數(shù)組,拿到數(shù)組中每一個數(shù)據(jù),和變量max的值比較;for (int i = 1; i < arr.length; i++) {// 如果變量max中的數(shù)據(jù)比數(shù)組某個下標的數(shù)據(jù)小,就把該下標的數(shù)據(jù)賦值給變量max;if(max < arr[i]) {max = arr[i];}}// e:循環(huán)結(jié)束,變量max中就是要求的最大值System.out.println("數(shù)組中最大值是:" + max);}隨著時間往后發(fā)展,可能在一個類中多次需要用到求數(shù)組最大值的功能。
如果每一次出現(xiàn)數(shù)組求最大值的功能,都像上面一樣在寫一遍代碼,就很麻煩,而且代碼復用性差,后期維護就難;
為了解決這個問題,我們可以使用函數(shù)來實現(xiàn):
需求:有可能在不同的程序中都出現(xiàn)這個功能:求數(shù)組的最大值;
思考:如果可以將函數(shù)抽取出來,放到某一個地方,然后在提供一種方法,讓所有需要使用這個函數(shù)的地方都可以調(diào)用這個函數(shù),就能解決在不同的類中出現(xiàn)相同函數(shù)代碼的問題;
因為函數(shù)是定義在類中的獨立代碼,所以要抽出來,也只能放到某一個類中;
問題:一個類中不能直接使用其他類的函數(shù);如何解決這個問題?
解決辦法:Java中通過 類名.函數(shù)名(實參) 的方式,可以調(diào)用其他類中的函數(shù);
本類中:
方法放在了Tools.java這個類中;
在其他類中要想調(diào)用,應該這么寫:
Tools.arrayMax(具體的數(shù)組);
像最后這種方式,就使用了面向?qū)ο蟮乃枷?#xff1b;
https://www.zhihu.com/video/1065593352904314880面向過程
- 什么是過程:
過程就是做一件事情的先后經(jīng)過;
生活中的過程:
泡面:1、買面;2、燒開水;3、拆包裝,把面放到開水中,加入調(diào)料,蓋上;4、吃面;
- 程序的過程:
java中的過程,程序執(zhí)行的先后經(jīng)過,先執(zhí)行哪行,后執(zhí)行哪行;
- 什么是面向過程:
就是一種解決問題的思想;
使用這種思想解決問題,我們關(guān)心的是事情中有哪幾步組成, 然后一步步實現(xiàn);
使用面向過程寫程序,我們首先要分析需求由那些功能組成,然后寫函數(shù)實現(xiàn)各個功能,最后根據(jù)需求依次調(diào)用各個函數(shù);
在這個過程中,開發(fā)者需要參與到實現(xiàn)的每一步中,就是勞動者;
前面幾天都是按照面向過程的思想寫程序;
面向過程的好處:在需求簡單的時候,程序簡單明了,結(jié)構(gòu)清晰;
弊端:在需求復雜的時候,就會非常麻煩,開發(fā)和維護都很困難;
面向?qū)ο?/h2>- 什么是對象:
指的是生活中實際存在的事物;
- 生活中的對象:
冰箱;被子;錢;電腦;手機;椅子;桌子;地板;電燈;空氣;霧霾;地球;太陽;……
- 什么是面向?qū)ο?#xff1a;
也是一種解決問題的思想;
使用這種思想解決問題,我們關(guān)心的是事情中有那些參與者;
使用這種思想寫程序,首先分析需求有那些功能,然后找有沒有已經(jīng)實現(xiàn)好功能的類,
如果有,就直接拿來,創(chuàng)建它的對象,通過對象調(diào)用功能;
如果沒有,就需要自己寫一個類,然后在類中書寫實現(xiàn)功能的函數(shù)【面向過程】,然后創(chuàng)建這個類的對象,通過對象調(diào)用功能;
面向?qū)ο蟮乃枷?#xff0c;更符合我們現(xiàn)實生活情況,也更適合開發(fā)復雜的功能;
在面向過程中,程序的基本單位是函數(shù);面向?qū)ο?#xff0c;程序的基本組成就是類;
https://www.zhihu.com/video/1065593911182999553類與對象
- 類
- 類的概念
類:表示一類具有共同屬性和行為的事物,是一種抽象的概念。
例如,生活中我們經(jīng)常說的一個詞,“電話”,指的就是所有具有打電話功能的東西,而不是指代具體某一部電話;
- 類的寫法
在Java中采用class關(guān)鍵字定義類。定義類的格式:
修飾符 class 類名{類中的內(nèi)容 }修飾符:public、default(默認的)、private、static(內(nèi)部類),如果省略不寫,那就是默認的修飾符(default)。
類名:必須符合標識符的定義語法要求,同時還要滿足如果是多個單詞每個單詞首字母大寫。
類中的內(nèi)容:主要根據(jù)類的描述信息進行具體的書寫。后面詳細講解。
- 類的成員
一個類可以表示同一類事物的共有屬性和功能;
事物的屬性使用類中的變量表示,事物的功能使用類中的函數(shù)表示;
例如,創(chuàng)建一個類表示人:
class Person{ 年齡; 性別; 姓名; 地址; …… 吃飯 睡覺 說話 ……}https://www.zhihu.com/video/1065594261700911104對象
- 對象的概念
在現(xiàn)實生活中,對象指的是實際存在的事物;
在Java中,對象指的是在堆內(nèi)存中開辟的一塊空間;例如數(shù)組就是一個對象;
對象都是根據(jù)類創(chuàng)建出來的;
- 對象的創(chuàng)建
Java中對象的創(chuàng)建,有五種方式:
其中,最常用、最簡單的方式,就是使用new關(guān)鍵字創(chuàng)建對象;
格式:
new 類名();
對象的使用
- 通過對象名使用:
類和對象的關(guān)系
類是抽象的概念,表示的是同一類事物共同的屬性和行為;
事物的屬性使用類中的成員變量表示,事物的行為使用類中的函數(shù)表示;
對象是根據(jù)類的描述在堆內(nèi)存中開辟的一塊空間,表示的是一個具體的事物;
對象是根據(jù)類創(chuàng)建的,先有類,后有對象。類是抽象的,對象是具體的;
https://www.zhihu.com/video/1065594978910318592面向?qū)ο缶毩?#xff1a;
使用Java代碼描述 貓抓老鼠的場景;
貓的名字叫湯姆,老鼠的名字叫杰瑞;具體的場景輸出應該是:
湯姆看見杰瑞在偷吃奶酪;
湯姆追杰瑞,杰瑞逃跑;
湯姆抓住杰瑞,杰瑞叫:啊,要死啦!
使用面向?qū)ο笏枷虢鉀Q問題,
- 第一步:分析需求,找到對象;
找對象的方法:名詞提煉法;就是觀察需求描述的文字,找到里面的名詞;名詞表示的就是實際的事物,也就是對象;
分析可知,這個例子中,有三個對象:貓;老鼠;奶酪;
因為奶酪不參與其他活動,所以為了簡單,這里就用一個字符串表示奶酪;
所以需要創(chuàng)建兩個類,分別表示貓和老鼠;
- 第二步:使用偽代碼描述上面找到的對象;
描述對象的原則:只需要描述和需求有關(guān)的屬性和行為;
偽代碼,就是不是真實的代碼;就是程序員自己寫的自己能看懂的符號,例如中文……
貓{屬性:名字;行為: 看見(老鼠){老鼠的吃(“奶酪”); } 追(老鼠){老鼠的逃跑(); } 抓住(老鼠){老鼠的叫(“啊,要死啦!”); } } 老鼠{屬性:名字;行為:吃(奶酪){}跑(){}叫(叫的內(nèi)容){} }第三步:使用偽代碼描述場景:
貓 t = new 貓(); 老鼠 l = new 老鼠(); t的名字 = “湯姆”; l的名字 = “杰瑞”;t.看見(l); t.追(l); t.抓住(l);第四步:書寫代碼:
表示貓的類:
/*** * Cat* 表示貓的類* @author 快學大數(shù)據(jù)* 2018年6月14日 上午11:51:38*/ public class Cat {String name;/*** 貓看見老鼠的功能* @param m*/public void see(Mouse m) {System.out.print(name + "看見");//老鼠在吃奶酪m.eat("奶酪");}/*** 貓追老鼠的功能* @param m*/public void zhui(Mouse m) {System.out.println(name + "開始追"+m.name);//調(diào)用老鼠對象的方法,表示老鼠在逃跑m.run();}/*** 表示貓抓住老鼠的功能* @param m*/public void catchMouse(Mouse m) {System.out.println(name + "抓住了"+m.name);//調(diào)用老鼠對象的方法,表示老鼠被抓住后的慘叫m.say("啊,要死啦!");} }表示老鼠的類:
/*** * Mouse* 表示老鼠的類* @author 快學大數(shù)據(jù)* 2018年6月14日 上午11:52:26*/ public class Mouse {String name;//老鼠的名字/*** 老鼠吃東西的功能* @param food*/public void eat(String food) {System.out.println(name + "在吃" + food);}/*** 老鼠逃跑的功能*/public void run() {System.out.println(name + "正在瘋狂的逃跑……");}/*** 老鼠叫的功能* @param str*/public void say(String str) {System.out.println(name + "大聲的說:"+str);} }模擬場景的類:
/*** * Test* 測試貓抓老鼠的場景類* @author 快學大數(shù)據(jù)* 2018年6月14日 上午11:58:10*/ public class Test {public static void main(String[] args) {//1、先創(chuàng)建一個貓對象Cat cat = new Cat();//2、給這個貓起個名字cat.name = "湯姆";//3、創(chuàng)建一個老鼠對象Mouse m = new Mouse();//4、給這個老鼠起個名字m.name = "杰瑞";//調(diào)用方法,輸出場景要求cat.see(m);cat.zhui(m);cat.catchMouse(m);} }https://www.zhihu.com/video/1065595884678664192局部變量和成員變量
- 局部位置:局部是指某個范圍。例如:方法的大括號中的這些個范圍,它就是一個局部范圍。
- 成員位置:在定義好類之后,在類的大括號內(nèi)部的范圍。
成員變量的位置在堆內(nèi)存,所以都有默認值,使用之前可以先不賦值;
生命周期(內(nèi)存的聲明周期就是指內(nèi)存的分配到回收):
- 局部變量:局部變量的內(nèi)存在棧內(nèi)存的方法里面,函數(shù)進棧開始分配空間;函數(shù)出棧內(nèi)存被釋放;
- 成員變量:成員變量在堆內(nèi)存中;創(chuàng)建對象時分配內(nèi)存;對象成為垃圾空間被回收時釋放;
- 局部變量:在局部范圍中定義的變量,它們?nèi)繉儆诰植孔兞?#xff0c;并且它的使用范圍就在從定義的位置往下到范圍結(jié)束。
- 成員變量:直接在類的成員位置上定義的變量。這些變量不受位置的限制,可以在任何方法中被使用。但是建議將所有的變量定義在類的最前面位置。
總結(jié)
以上是生活随笔為你收集整理的java数组最大下标_【Java视频教程】day09-面向对象的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 域名服务器的配置文档,配置自己的域名服务
- 下一篇: android 类似按键精灵脚本_按键精