方法就是完成特定功能的代碼塊,即函數。
格式:
修飾符 返回值類型 方法名(參數類型 參數名1,參數類型 參數名2…) {
函數體;
return 返回值;
}
詳細解釋:方法重載特點
與返回值類型無關,只看方法名和參數列表 在調用時,虛擬機通過參數列表的不同來區分同名方法eg:
class FuncionTest{
public static void main(String[] args){
//Test1
short b1 =3;
short b2 =4;
System.out.println("short:"+compare(b1,b2));
}
//*******************************************************//
// Function :byte type
public static boolean compare(byte a, byte b){
System.out.println("byte type");
return a==b;
}
//-------------------------------------------------------//
//*******************************************************//
// Function :short type
public static boolean compare(short a, short b){
System.out.println("short type");
return a==b;
}
//-------------------------------------------------------//
//*******************************************************//
// Function :int type
public static boolean compare(int a, int b){
System.out.println("int type");
return a==b;
}
//-------------------------------------------------------//
//*******************************************************//
// Function :long type
public static boolean compare(long a, long b){
System.out.println("long type");
return a==b;
}
//-------------------------------------------------------//
數組的定義格式
格式1:數據類型[] 數組名; 格式2:數據類型 數組名[]; 注意:這兩種定義做完了,數組中是沒有元素值的。還需對數組的元素進行初始化。eg:
A:int[] a; 定義一個int類型的數組a變量 B:int a[];定義一個int類型的a數組變量注:
1:針對數組定義兩種格式,推薦使用第一種格式。因為第一種的可讀性更強。第二種早期的時候確實有很多人這樣用。不過,現在這樣用的人越來越少了。 2:作為Java的粉絲C#(Java的模仿者)就不再支持第二種語法格式了。越來越多的語言可能會拋棄第二種格式。數組初始化概述:
Java中的數組必須先初始化,然後才能使用。 所謂初始化:就是為數組中的數組元素分配內存空間,並為每個數組元素賦值。數組的初始化方式
動態初始化
:初始化時只指定數組長度,由系統為數組分配初始值。 靜態初始化
:初始化時指定每個數組元素的初始值
,由系統決定數組長度(用的更多)。
動態初始化:初始化時只指定數組長度,由系統為數組分配初始值。
格式:數據類型[] 數組名 = new 數據類型[數組長度]
; 數組長度
其實就是數組中元素的個數。 舉例:new
為數組分配內存空間。
靜態初始化:初始化時指定每個數組元素的初始值,由系統決定數組長度。
格式:
棧
存儲局部變量,使用完畢就消失。 堆
存儲new出來的東西 方法區
(面向對象部分講) 本地方法區
(和系統相關)
寄存器
(給CPU使用)
局部變量
堆
:new出來的東西,實體,對象。
圖解存儲空間
圖解數組內存三個數組
/*
需求:
1、定義第一個數組,定義完畢後,給數組元素賦值。賦值完畢後,在輸出數組名稱和元素。
2、定義第二個數組,定義完畢後,給數組元素賦值。賦值完畢後,在輸出數組名稱和元素。
3、定義第三個數組,把第一個數組的地址值給它。(注意類型一致),通過第三個數組的名稱去把元素重新賦值。
4、再次輸出第一個數組名稱和元素。
*/
class ArrayDemo{
public static void main(String[] args){
int[] arr = new int[3];
arr[0] = 88;
arr[1] = 33;
arr[2] = 66;
System.out.println(arr);
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
int[] arr2 = new int[3];
arr2[0] = 22;
arr2[1] = 44;
arr2[2] = 55;
System.out.println(arr2);
System.out.println(arr2[0]);
System.out.println(arr2[1]);
System.out.println(arr2[2]);
//第三個數組
int[] arr3 = arr;
arr3[0] = 100;
arr3[1] = 200;
System.out.println(arr);
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
}
}
空指針異常
NullPointerException 原因:數組引用沒有指向實體,卻在操作實體中的元素時(數組已經不在堆棧內存)。Eg:
int[] arr = {1,2,3};
System.out.println(arr[3]); //報錯:ArrayIndexOutOfBoundsException
arr = null;
System.out.println(arr[0]); //報錯:NullPointerException
length
,可以得到數組長度。
int[] arr2 = {1,4,52,4,5,6,3,2,8,5,3,1,6,7,8,3,2};
//length 屬性
for (int x=0;x
數組獲取最值(獲取數組中的最大值最小值)
/*
分析:
A:從數組中人員找一個作為參照物(一般第一個),默認他是最大的。
B:遍歷其他元素,一次獲取和參照我進行對比。
*/
class ArrayDemo{
public static void main(String[] args){
int[] arr2 = {1,4,52,4,5,6,44,2,66,323,3,22,6,23,8,654,2};
int max = arr2[0];
int min = arr2[0];
for (int x=1;x arr2[x]) ? max : arr2[x];
min = (min < arr2[x]) ? min : arr2[x];
// System.out.println(arr2[x]);
}
System.out.println("Max is :" +max);
System.out.println("Min is :" +min);
}
}
數組元素逆序 (就是把元素對調)
/*
分析:
A:將arr[0]與arr[length-1]交換
B:將arr[1]與arr[length-2]交換
...
C:只要做到arr.length/2即可
*/
class ArrayDemo{
public static void main(String[] args){
int[] arr = {1,4,52,4,5,6,44,2,66,323,3,22,6,23,8,654,2};
for(int i=0;i
數組查表法(根據鍵盤錄入索引,查找對應星期)
import java.util.Scanner;
class ArrayDemo{
public static void main(String[] args){
String[] strArr = {"星期一","星期二","星期三","星期四","星期五","星期六","星期日"};
Scanner sc = new Scanner(System.in);
System.out.println("Please input a number(0~6):");
int index = sc.nextInt();
System.out.println(strArr[index]);
}
}