黑馬程序員—Java基礎知識

---------------------- JavaEE+Android、Java培訓、期待與您交流! ----------------------

java中的名稱規範

包名:多單詞組成時所有字母都小寫,xxxyyyzzz

類名接口名:多單詞組成時,所有單詞的首字母大寫,XxxYyyZzz

變量名和函數名:多單詞組成時,第一個單詞首字母小寫,第二 個單詞開始每個單詞首字母大寫,xxxYyyZzz

常量名:所有字母都大寫,XXXYYYZZZ

Java中的註釋

單行註釋——格式://註釋文字  多行註釋——格式:/* 註釋文字*/文檔註釋——格式:/** 註釋文字*/

小的語法知識點

①,默認數據類型:整數——int       int型變量默認初始值爲0

小數——doubledouble型變量默認初始值爲0.0

boolean數據類型默認初始值爲false,引用數據類型默認初始值爲full

②,求餘運算:1%5=11%-5=1 -1%5=-1

③,轉義字符:“\n”——換行“\b”——退格“\t”——製表符“\r”——回車鍵(Window系統中回車鍵爲:\r\n)

④,&與&&,| 與 ||的區別:前者符號兩邊都參與運算,後者是選擇運算

⑤,自動類型轉換關係:byte -->short(char) -->int -->long -->float -->double

⑥,異或( ^):6  ^ 3 = 5。一個數異或同一個數兩次,那麼結果還爲本身。在加密和解密中有應

⑦,>>與>>>的區別:對於>>,最高位補什麼由原有數據的最高位值而定,若最高位爲0,右移後,用0補空位。如果最高位爲1,右移後,用1補空位。對於>>>,無論最高位是0還是1,右移後,都用0補空位

⑧,對兩個變量進行互換(不需要第三方變量):n=m+n; m=n-m; n=n-m; 或 n=n^m; m=n^m; n=n^m;

⑨,三元運算符與if…else…的區別:三元運算符必須返回一個值

⑩,if 和switch語句很像,具體什麼時候該用哪個語句呢?

如果判斷的具體值不多,而符合byte,short,int,char這四種類型,建議用switch,效率高;對於雙區間判斷,結果爲boolean類型建議使用 if 語句,適用範圍光。

無限循環的最簡單表示形式:for( ; ; ) ;默認循環條件爲truewhile(true) ;

標號:可以讓循環跳出到指定位置

十進制數轉換爲任意進制數

看下面代碼:

<span style="font-family:Arial;font-size:12px;">/**
需求|:定義一個方法,使其可將十進制轉換爲二進制、八進制及十六進制
思路|:查表法|:
	1定義一個表,存放十六進制的所有元素,此表也就包含了二進制和八進制的元素
	2通過十進制&15(或7,或1)的運算,得到進制最後一位數,倒序存入數組
	3然後移位(>>>4或3或1),得到一個新數
	4重複此過程,知道數值爲零,結束
	5將數組打印
*/
import java.util.*;
class Trans
{
	public static int scan()
	{
		Scanner in = new Scanner(System.in);
		System.out.print("請輸入十進制數字:");
		int num = in.nextInt();
		return num;
	}
	public static void trans(int num,int base,int offset)
	{
		if(num ==0)
		{
			System.out.println("\n轉換後的數爲:" + 0);
			return ;
		}
		StringBuffer sa = new StringBuffer();
		char[] ch =  {  '0','1','2','3',
						'4','5','6','7',
						'8','9','A','B',
						'C','D','E','F'};
		char[] arr = new char[32]; 
		int pos = arr.length;
		while(num!=0)
		{
			int temp = num & base;
			arr[--pos] = ch[temp];
			num >>>=offset;
		}

		for(int i=pos;i<arr.length;i++)
		{
			sa.append(arr[i]);
		}
		System.out.println("後的數爲:" + sa);
	}
	//轉換爲二進制
	public static void toBin(int num)
	{
		System.out.print("轉換成二進制");
		trans(num,1,1);
	}
	//轉換爲八進制
	public static void toBa(int num)
	{
		System.out.print("轉換成八進制");
		trans(num,7,3);
	}
	//轉換爲十六進制
	public static void toHex(int num)
	{
		System.out.print("轉換成十六進制");
		trans(num,15,4);
	}
	public static void main(String [] args)
	{
		int x = 0;
		x = scan();
		toBin(x);
		toBa(x);
		toHex(x);
	}
}</span>

內存管理

Java程序在運行時,需要在內存中的分配空間。爲了提高運算效率,有對空間進行了不同區域的劃分,因爲每一片區域都有特定的處理數據處理方式和內存管理方式

棧內存:用於存儲局部變量,當數據使用完,所佔空間會自動釋放。

堆內存:數組和對象,通過new建立的實例都存放在堆內存中;每一個實體都有內存地址值;實體中的變量都有默認初始化值;實體不在被使用,會在不確定的時間內被垃圾回收器回收。

數組

定義:同一種類型數據的集合。其實數組就是一個容器

數組定義的格式:

一維數組: int[] x ; int x[] ;

二維數組:int[][] x ; int x[][] ;int[] x[] ;

例如:int[] x,y[]表示定義了兩個數組,x是一維的,y是二維的

數組操作常見的問題:

數組腳標越界異常(ArrayIndexOutOfBoundsException);.空指針異常(NullPointerException);

數組工具類

/**
這是一個可以對數組進行操作的工具類,該類中提供了獲取數組中最值和對數組進行排序的功能!
@author 土豆
@version V1.1
*/
public class ArrayTool 
{
	private ArrayTool(){}	
	/**
	獲取整形數組中的最大值
	@param arr 接受一個int類型的數組
	@retutn 返回數組中的最大值
	*/
	public static int getMax(int[] arr)			//獲取最大值
	{
		int max=0;
		for(int i=0;i<arr.length;i++)
		{
			if(arr[max]<arr[i])
				max=i;
		}
		return arr[max];
	}
	/**
	獲取整形數組中的最小值
	@param arr 接受一個int類型的數組
	@retutn 返回數組中的最小值
	*/
	public static int getMin(int[] arr)			//獲取最小值
	{
		int min=0;
		for(int i=0;i<arr.length;i++)
		{
			if(arr[min]>arr[i])
				min=i;
		}
		return arr[min];
	}
	/**
	用選擇法對數組進行排序
	@param arr 接受一個int類型的數組
	*/
	public static void selectSort(int[] arr)		//對數組進行排序
	{
		for(int i=0;i<arr.length-1;i++)
			for(int j=i+1;j<arr.length;j++)
			{
				if(arr[i]>arr[j])
					swap(arr,i,j);
			}
	}
	/**
	用冒泡法對數組進行排序
	@param arr 接受一個int類型的數組
	*/
	public static void bubbleSort(int[] arr)
	{
		for(int i=0;i<arr.length-1;i++)
			for(int j=0;j<arr.length-i-1;j++)
			{
				if(arr[j]<arr[j+1])
					swap(arr,i,j);
			}
	}
	/**
	給數組元素進行位置置換
	@param arr 接受一個int類型的數組
	@param a 要置換的位置
	@param b 要置換的位置
	*/
	private static void swap(int[] arr,int a,int b)			
	{
		int temp=arr[a];
		arr[a]=arr[b];
		arr[b]=temp;
	}
	/**
	打印數組中的元素,打印格式是:[elment,elment,……]
	@param arr 接受一個int類型的數組
	*/
	public static void printArray(int[] arr)			//打印數組
	{	
		System.out.print("[");
		for(int i=0;i<arr.length;i++)
		{
			if(i!=arr.length-1)
				System.out.print(arr[i]+",");
			else 
				System.out.println(arr[i]+"]");
		}
	}	
}

數組中元素的查找

<span style="font-family:Arial;font-size:12px;">/**需求|:查找數組中的元素
思路|:遍歷數組中的元素,並與要查找的內容比較,相同,則返回腳標
步驟
	1創建類FindArry
	2用for遍歷數組,如果查找到相同內容,記錄腳標並返回
	3如果未找到,就返回-1

	如果要在一個有序數組中插入一個數,之後仍有序
	就是先查找數組,用折中法:如果查找到有此數,則返回的中間值就是插入的地方,否則將返回的-1改成返回min,即爲插入的地方
	如:{1, 2, 3, 5, 6, 8, 11, 13}插入8,返回mid = 5;插入後爲{1, 2, 3, 5, 6, 8, 8, 11, 13}
	插入10,返回min = 6,插入後爲{1, 2, 3, 5, 6, 8, 10, 11, 13}
*/

import java.util.*;
class FindArry
{
	//方法一:遍歷每一個元素查找
	public static int findarr(int[] arr,int key)
	{
		for(int i=0;i<arr.length;i++)
		{
			if(arr[i] == key)
			{
				return i;
			}
		}
		return -1;
	}

	//方法二:折半,前提是數組是按大小順序排列好的,
	//用查找的值和中間值比較,大則和下一半中間值比依次,小則和上一半中間值比,找到則返回。
	//        小值的編號在左移或大值的編號在右移。要判斷是否大小值的編號相遇,仍若未找到,則不再循環,返回-1
	public static int FindArry1(int[] arr,int key)
	{
		int min,max,mid;
		min = 0;
		max = arr.length-1;
		mid = (min + max)/2;
		
		//循環,查找中間值與要查找的值比較
		while(key != arr[mid])
		{
			if (key > arr[mid])
				min = mid +1;
			else 
				max = mid - 1;
			if (min > max)
				return -1;
			mid = (min + max)/2;
		}
		return mid;
	}

	//方法三:折半第二種
	//while的條件改變
	public static int FindArry2(int[] arr,int key)
	{
		int min,max,mid;
		min = 0;
		max = arr.length-1;
		
		
		//循環,查找中間值與要查找的值比較
		while(min <= max)
		{
			mid = (min + max)>>1;
			if (key > arr[mid])
				min = mid +1;
			else if(key<arr[mid])
				max = mid - 1;
			else
				return mid;
		}
		return -1;
	}

	public static void main(String [] args)
	{
		int[] arr = {1,6,11,2,8,5,3,13};
		int m = findarr(arr,3);
		System.out.println("m=" + m);
		Arrays.sort(arr);
		System.out.println(Arrays.toString(arr));
		int x = FindArry1(arr,13);
		int y = FindArry2(arr,25);
		System.out.println("查找13的結果x=" + x + "\n查找25的結果y=" + y);
	}
}</span>



---------------------- JavaEE+Android、Java培訓、期待與您交流! ----------------------

詳細請查看: http://edu.csdn.net

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