黑馬程序員 java基礎 函數 數組 查找與排序總結

 -------android培訓 、java培訓、期待與您交流! ----------

1.函數 

函數就是方法 方法就是函數
發現以上的運算因爲獲取不同的數據的運算結果,代碼出現了重複

位了提高代碼的複用性,對代碼進行抽取,將這個部分定義成一個獨立的功能方便日後

使用 java中對功能的定義是通過函數的形式來體現的 

格式     修飾符 返回值類型 函數名(參數類型 形式參數1,參數類型 形式參數2,)
   {
執行語句;
return 返回值;
   }

當函數的返回值類型是void的時候 函數中的return語句可以省略不寫
 注意 
函數中只能調用函數 但是不能在函數中定義函數

2. 如何定義一個函數
1 )既然函數是一個獨立的功能,那麼該功能的運算結果是什麼先明確。
2 )在明確在定義該功能的過程中是否需要未知的內容參與運算。
需求 定義一個功能完成3+4的運算,並將結果返回給調用者。
1)明確功能的結果 是一個正數的和
2)實現該功能的過程中是否有未知的內容參與運算  沒有
這就是明確返回值的的類型

3)明確函數的參數列表(參數的類型和參數的個數。)

	public static int getSum()
	{
		return 3+4;
	}

這是一個最基本最簡單的函數示例

 定義功能的時候記着把結果返回調用者就行了 至於對這個結果進行任何的操作那是調用者的事兒不能在函數中進行

3. 重載 
在一個類中允許存在同一個函數,只要他們的參數個數或者參數類型不同即可
注意
什麼時候用重載呢
當定義的功能相同時 但是參與運算的未知內容不同, 這是就定義一個函數名稱以表示其功能方便閱讀而通過參數列表的不同來區分多個同名函數

重載示例

public static void main(String[] args) 
	{
		add(1,2);
		add(1,2,3);
	}
      //定義一個加法運算,獲取兩個整數的和。
	public static int add(int x,int y)
	{
		return x+y;
	}

	//定義一個加法,獲取三個整數的和。
	public static int add(int x,int y,int z)
	{
		return x+y+z;
	}
上面的兩個add函數虛擬機會根據不同的參數來自動選在調用哪個add 

關於重載 有以下常見的問題十分值得注意 

重載的時候注意參數類型 參數的順序是有順序的 

主要是看參數的類型 參數的個數 參數的順序

void show(int a,char b,double c){}

a.
void show(int x,char y,double z){}//沒有,因爲和原函數一樣。

b.
int show(int a,double c,char b){}//重載,因爲參數類型不同。注意:重載和返回值類型沒關係。
c.

void show(int a,double c,char b){}//重載,因爲參數類型不同。注意:重載和返回值類型沒關係。

d.
boolean show(int c,char b){}//重載了,因爲參數個數不同。

e.
void show(double c){}//重載了,因爲參數個數不同。

f.
double show(int x,char y,double z){}//沒有,這個函數不可以和給定函數同時存在與一個類中。

4. 數組  同一個數組中只能定義同一個類型的元素
局部變量都是在棧裏面存 (for,函數中的等都是局部變量)
new出來的實體都在堆裏面。 

數組應用中常見的問題

布爾型數組的默認值是 false 
ArrayIndexOutOfBoundException:  操作數組是,訪問到了
數組中不存在的角標。
NullPointException 空指針異常 當引用沒有任何指向值爲null的情況該引用還在用於操作實體。
數組最常見的應用。
獲取數組中的元素
獲取數組中的元素通常用到遍歷。
用length直接獲取數組的長度(即元素個數)
在有數組的函數中通常會用到for循環(用完之後自動釋放)
數組的常見操作 
獲取最值 
獲取數組中的最大值
思路 
1 )獲取最值需要進行比較,每一次比較都會有一個較大的值,因爲該值不確定通過一個變量進行臨時存儲。
2) 讓數組中的每一個元素都和這個變量中的值進行比較 如果大於了變量中的值 就用該變量記錄較大的值。
3 )當所有的元素都比較完成 該變量中存儲的就是數組中的最大值了。
步驟:
1) 定義一個變量 初始化爲數組中的任意一個元素即可
2 )通過循環語句對數組元素進行遍歷
3 )在遍歷過程中定義判斷條件。如果遍歷到的元素比變量中的元素打就賦值給該變量;

需要定義一個功能來完成 以便提高複用性,
1 )明確結果, 數組中的最大元素 int型
2 )位置內容,一個數組 int[]

class getbig 
{
	public static void main(String[] args) 
	{
		int[] arr ={5,2,6,3,4,1};
		int max= getMax(arr);
		System.out.println("Hello "+max);
	}
	 public static int getMax(int[] arr)
	{
	  int max = arr[0];
	  for(int x=1;x<arr.length;x++)
		{
		  if(arr[x]>max)
		  max = arr[x];
	      
		}
		return max;
	 }

}
5. 排序
   選擇排序
內循環結束一次 最值出現在頭角標位置上,選擇排序方法如下

public static void selectSort(int[] arr)
	{
		for (int x=0; x<arr.length-1 ; x++)
		{
			for(int y=x+1; y<arr.length; y++)
			{
				if(arr[x]>arr[y])
				{
					//這個置換的功能可以單獨拿出來做個方法 執行到這的時候調用即可
					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-x-1; y++)//這裏面這個-x表示每次循環確定一個最終元素,-1是爲了防止下角標越界
			{
				if(arr[y]<arr[y+1])
				{
					
					int temp = arr[y];
					arr[y] = arr[y+1];
					arr[y+1] = temp;
				}
			}
		}
	}
最快的還是希爾排序
面試常用的還是 冒泡和選擇
在棧中交換元素要比在堆內交換元素消
耗的資源少

6.查找操作應注意的細節
數組的查找操作
最簡單的過程就是在遍歷的時候進行判斷 
沒找到的時候返回
-1 (數組中沒有-1這個角標 返回這個就表示沒找到)
定義功能獲取key 有重複元素 返回的是第一個匹配的元素
 折半查找可以提高效率 但是必須要數組是有序的。

 進制轉換中 涉及有效位 可以利用指針標出來,打印的時候省去前面多餘的 0

7. 關於數組還要說幾條
往數組裏面存元素 可以用指針 
字符數組一旦定義完 默認初始化爲空格  
數組中的知識點 
往數組裏面存數組 把數組作爲元素存入到數組中
二維數組的初始化方式 
int[][] arr = new int[3][4] 
這表示定義了名稱問arr的維維數組,二維數組中有3個一維數組
每一個一維數組中有四個元素。
另一種方式 int[][] arr = new int[3][] 後面這個空不寫
數組是引用數據類型 初始化的時候默認是空  
一維數組定義 
這種定義方式  int[] x,y[];表
示x是一維的y是二維的。(這種定義模式 實際編碼的時候不用,有時會參加某些考試的時候可能會有這種形式)
關於一二維數組的性質可以靠如下的幾個判斷來掌握
判斷如下正確性
a  x[0]=y;//這是錯的 這是把一個二維數組賦值給一個一維數組中的元素
b y[0]=x //這是對的 一維數組給一維
c y[0][0]=x//二維數組中的一個元素 不能賦值一個一維數組
d x[0][0]=y//x 就是不是二維數組
e y[0][0]=x[0]// 這個是對的
f x=y//  顯然不對了

更多精彩內容

 -------android培訓 、java培訓、期待與您交流! ----------

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章