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