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>
詳細請查看: http://edu.csdn.net