----------------------android培訓、java培訓、期待與您交流! ----------------------
今天主要學習了java中的函數,也就是方法,還有數組,下面針對數組做一下自己的總結。
:數組(重點)
(1)數組的概念和特點
A:數組時存放同一種數據類型的集合.數組是一個容器.
B:特點
**它會把元素自動從0開始編號,方便於操作元素.
(2)數組定義的兩種格式
A:第一種
int[] arr = new int[長度]; 經常使用
/*
左邊:
int 元素的數據類型
[] 表示這是一個數組
arr 是數組(變量)名
右邊:
new 用於創建實體的.
實體:可以用於存放多個數據的東西.
就像class定義一個類似的.
int 元素的數據類型
[] 表示這是一個數組
長度 表示的是數組中的元素個數
*/
int arr[] = new int[長度]; //瞭解
B:第二種
int[] arr = new int[]{元素列表...};
int[] arr = {元素列表...}; 經常使用
C:那麼,我們定義數組的時候使用哪種格式呢?
如果數組的元素能夠明確的列出來,用第二種.否則,用第一種.
(3)什麼時候使用數組呢?
當你要操作的數據是多個的時候,考慮使用數組.
(4)java中的內存圖(看懂)
棧:存儲的是具備變量(函數內定義的變量)
特點:離開使用空間,立刻自動釋放.
堆:存儲的是實體,就是 new出來的東西.
特點:
**堆內存中的實體都有首地址值
**堆內存中的實體的變量都有默認值
byte,short,int,long 0
float,double 0.0
boolean false
char '\u0000' 空字符
**堆內存中的實體不在被引用變量指向時,就變成了垃圾.
它會在jvm空閒的時候,有java的自動垃圾回收機制進行
清除.
方法區:後面講
本地方法區:與系統相關的資源
寄存器:與CPU相關的資源
(5)數組常見問題
A:角標越界 訪問了不存在的角標.
ArrayIndexOutOfBoundsException
B:空指針異常 數組爲null,我們還在通過它訪問數組中的元素.
NullPointException
(6)數組常見操作 肯定離不開角標
A:遍歷
數組的屬性:length
用法格式:數組名.length 獲取數組的長度
public static void printArray(int[] arr)
{
for(int x=0; x<arr.length; x++)
{
System.out.println(arr[x]);
}
}
//爲了格式好看
public static void printArray(int[] arr)
{
System.out.print("[");
for(int x=0; x<arr.length; x++)
{
if(x==arr.length-1)
{
System.out.print(arr[x]);
}
else
{
System.out.print(arr[x]+",");
}
}
System.out.println("]");
}
B:最值
**最大值
public static int getMax(int[] arr)
{
int max = arr[0];
//0角標的元素作爲了參照物
for(int x=1; x<arr.length; x++)
{
if(arr[x]>max)
{
max = arr[x];
}
}
return max;
}
**最小值
public static int getMin(int[] arr)
{
int min = arr[0];
//0角標的元素作爲了參照物
for(int x=1; x<arr.length; x++)
{
if(arr[x]<min)
{
min = arr[x];
}
}
return min;
}
C:排序
**選擇排序 用0角標的元素和其後元素依次比較,最值出現在左邊.
public static void selectSort(int[] arr)
{
for(int x=0; x<arr.length-1; x++)
{
//y總是比x大1
for(int y=x+1; y<arr.length; y++)
{
if(arr[y]<arr[x])
{
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
}
}
}
**冒泡排序 原理是 相鄰元素兩兩相比,最值出現在右邊.
public static void bubbleSort(int[] arr)
{
for(int x=0; x<arr.length-1; x++)
{
for(int y=0; y<arr.length-1-x; y++)
{
if(arr[y]>arr[y+1])
{
int temp = arr[y];
arr[y] = arr[y+1];
arr[y+1] = temp;
}
}
}
}
以前看過老師將的數組排序,其實數組的排序有很多種,其中冒泡排序和選擇排序是最基本的最麻煩的排序算法,不過我感覺還行,自己代碼沒有必要一個不漏的背下來,只要自己知道原理就好了,在面試的時候也可以自己當場去總結其中的規律,直接就可以將代碼寫出來。
----------------------android培訓、java培訓、期待與您交流!
----------------------