Java基础-方法(2)和数组
方法的特點
定義方法可以將功能代碼進行封裝
???????? 封裝:兩方面含義:
對于方法的調(diào)用者來說:只能看到方法的返回值,方法內(nèi)部的操作過程,外界看不到
提高了代碼的復(fù)用性和可維護性!!!
方法只有被調(diào)用才會被執(zhí)行!!(方法調(diào)用的流程)
?
方法定義和調(diào)用練習(xí):
獲取最值
/* 定義方法,用于獲取兩個int數(shù)中的最大值返回值類型:int形參列表:int ,int 方法定義時,參數(shù)稱為形參:方法調(diào)用時,傳遞的參數(shù)稱為實參.實參有多種形式:變量,常量,表達(dá)式. */import java.util.Scanner;public class GetMaxDemo{public static void main(String[] args){Scanner s = new Scanner(System.in);int a = s.nextInt();int b = s.nextInt();int c = s.nextInt();System.out.println(getMax(a,b,c));}public static int getMax(int x,int y,int z){return (((x>y)?x:y)>z)?((x>y)?x:y):z;} } View Code方法的重載
“兩同一不同”:
???????? 同類,同方法名
???????? 形參列表不同
方法的返回值不是判斷方法重載的標(biāo)志!
/*方法的重載:在同一個類中.出現(xiàn)方法名相同,但是參數(shù)列表不同的多個方法,稱為方法的重載..參數(shù)列表不同的含義是:1.要么參數(shù)的個數(shù)不同2.要么是參數(shù)的類型不同方法的重載:五個字:兩同一不同!!同類,同方法名!!!形參列表不同!!!虛擬機就是根據(jù)參數(shù)列表的不同,去調(diào)用不同的方法.注意:1.方法的返回值不能作為方法重載的標(biāo)志!!2.方法調(diào)用時,首先找形參列表對應(yīng)的,如果沒有對應(yīng)的形參列表的方法定義,就去找可以隱式轉(zhuǎn)換成類中定義方法的形參列表的方法.*/ public class OverLoadDemo1{public static void main(String[] args){// int a = 10;int b = 20;System.out.println(add(a,b));// double d1 = 1.0;double d2 = 2.0;System.out.println(add(d1,d2));}//方法1:// public static int add(int a,int b){// System.out.println("參數(shù)是int型的方法被調(diào)用了");// return a + b;// }//方法2:double類型的參數(shù)可以調(diào)用它,int型的參數(shù)也可以調(diào)用它public static double add(double d1,double d2){System.out.println("參數(shù)是double型的方法被調(diào)用了");return d1 + d2;} } View Code數(shù)組的概念:
同一種數(shù)據(jù)類型的多個組成的一個”邏輯單元”.
數(shù)組的長度:數(shù)組元素的個數(shù).
數(shù)組的索引:從0開始,最大值是元素的個數(shù)-1.
數(shù)組的定義:
數(shù)據(jù)類型:數(shù)組類型,其實就是元素的類型加上[],就表示一個數(shù)組類型.
如: int[], double[ ]等
數(shù)組類型變量的定義:
int[] arr;
boolean[] booleanArray;
/*數(shù)組的定義:元素類型[] 數(shù)組名;數(shù)組初始化方式一:動態(tài)初始化:定義和賦值相分離定義:int[] arr1 = new int[3];在以后的程序中可以對其中的元素進行賦值靜態(tài)初始化:定義數(shù)組時,元素值就定了.int[] arr2 = new int[]{1,2,3};*/public class ArrayDemo{public static void main(String[] args){//定義一個元素為int型的數(shù)組.// int[] arr1;//動態(tài)初始化一個int型數(shù)組,長度是3.//其中的元素值是默認(rèn)值:int -> 0,float,double->0.0,boolean -> false/*int[] arr1 = new int[3];System.out.println(arr1);//[I@15db9742 : 內(nèi)存地址的一個映射System.out.println(arr1[0]);System.out.println(arr1[1]);System.out.println(arr1[2]);*//*//靜態(tài)初始化:定義數(shù)組時,就指定元素值int[] arr2 = new int[]{1,2,3};System.out.println(arr2);//[I@15db9742 : 內(nèi)存地址的一個映射//考察數(shù)組中的元素值System.out.println(arr2[0]);System.out.println(arr2[1]);System.out.println(arr2[2]);*/double[] arr3 = new double[3];System.out.println(arr3[0]);//0.0 double默認(rèn)值為0.0System.out.println(arr3[1]);System.out.println(arr3[2]);System.out.println(arr3); //[D@15db9742boolean[] arr4 = new boolean[2];System.out.println(arr4[0]); //false boolean默認(rèn)是falseSystem.out.println(arr4[1]);System.out.println(arr4); //[Z@6d06d69c } } View Code?
數(shù)組的初始化:
1.動態(tài)初始化:先定義數(shù)組的長度,其中元素的值在以后的程序中賦值.此時元素有默認(rèn)值.
2.靜態(tài)初始化:定義數(shù)組的時候,就把其中的元素值定了.
不論是動態(tài)還是靜態(tài)初始化,元素的值都可以再次進行修改,因為數(shù)組元素其本質(zhì)就是一段內(nèi)存空間而已!!!
JVM虛擬機的內(nèi)存管理:
主要有三個區(qū)域:
棧:主要用于存儲局部變量(方法中定義的變量),方法在被調(diào)用時,就進入到棧中.
???????? 棧空間的特點是:先進后出,或者是后進先出.
堆:主要是存放程序中創(chuàng)建出來的對象或者是實例.也就是凡是使用new創(chuàng)建的都出現(xiàn)在堆空間中.堆空間往往比較大.通常用來保存長時間駐留內(nèi)存的對象.
堆內(nèi)存也最容易產(chǎn)生垃圾,Java的垃圾回收器線程會在不確定的時間去回收堆內(nèi)存的空間.
方法區(qū):(面向?qū)ο笤僦v)
方法中定義的變量:
基本數(shù)據(jù)類型:就在方法所在的棧空間中.
引用數(shù)據(jù)類型:真實的對象在堆空間中,方法所在的棧空間中只是保存了對象的一個引用而已.
數(shù)組常見操作異常
1.數(shù)組索引越界異常:
索引值不在正常范圍之內(nèi).
2.空指針異常:
數(shù)組變量不再指向數(shù)組實例,也就無法通過數(shù)組名+索引的方式訪問到元素所在的空間.
兩種異常都是運行時異常,在編譯器不會報錯!!!
/*JVM內(nèi)存劃分:引用數(shù)據(jù)類型變量的含義:保存的是內(nèi)存地址值.數(shù)組操作常見的異常:1.數(shù)組索引越界異常2.空指針異常 */ public class ArrayDemo2{public static void main(String[] args){int[] arr1 = {1,5,2};/*//數(shù)組索引越界異常// System.out.println(arr1[1]);System.out.println(arr1[3]); // java.lang.ArrayIndexOutOfBoundsException: 3*//*//空指針異常arr1 = null; // 讓arr1變量不再保存數(shù)組實例的內(nèi)存地址System.out.println(arr1[2]); // java.lang.NullPointerException*/} }?
數(shù)組的遍歷:
循環(huán):長度屬性值 int[] arr = {1,3,5}; for(int i = 0;i<arr.length;i++){System.out.println(arr[i]); } /*數(shù)組遍歷:提供一種途徑,可以訪問到數(shù)組中的每個元素.數(shù)組的屬性:length*/ public class ArrayDemo3{public static void main(String[] args){//靜態(tài)初始化int型數(shù)組int[] arr = {15,75,48,59,3};//// System.out.println(arr[0]);// System.out.println(arr[1]);//用循環(huán)改進訪問元素// for(int i = 0;i<5;i++){// System.out.println(arr[i] + " ");// }//數(shù)組的長度,不是數(shù)出來的,是利用數(shù)組的屬性值得到的// System.out.println("數(shù)組的長度(元素的個數(shù))是: " + arr.length);//使用數(shù)組的length屬性來確定循環(huán)中的邊界值// for(int i = 0;i<arr.length;i++){// System.out.print(arr[i] + " ");// } printArray(arr);}//定義方法:打印數(shù)組的元素//兩個明確:void//數(shù)組public static void printArray(int[] arr){for(int i = 0;i<arr.length;i++){System.out.print(arr[i] + " ");}System.out.println();}} View Code?
轉(zhuǎn)載于:https://www.cnblogs.com/Z-xiaoshuai/p/9508060.html
總結(jié)
以上是生活随笔為你收集整理的Java基础-方法(2)和数组的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 初识flask
- 下一篇: 笔记本移动位置,切换网络ip后,虚拟机的