數組定義的[] 可以放在數組名前面或者後面
數組靜態初始化:
int []arr=new int[]{3,1,6,7,9};
int arr[]={2,5,6,4,8,9};
ArrayIndexOutOfBoundsException
數組下標越界異常,代碼操作的數組訪問到了沒有的角標
NullPointerException
空指針異常,當引用沒有任何指向,值爲null的情況,該引用還在用於操作實體
數組遍歷:
//數組有個屬性,獲取數組中元素的個數:length
/*
一維數組遍歷
*/
class Demo2
{
public static void main(String[] args)
{
int []arr=new int[]{1,2,3,4,5,6,7,89};
/*打印數組,用逗號隔開*/
for(int i=0;i<arr.length;i++){
if(i!=arr.length-1)
System.out.print(arr[i]+",");
else
System.out.print(arr[i]);
}
}
}
排序:常用的兩種:選擇排序, 冒泡排序
/*
排序測試
*/
import java.util.*;
class Demo1
{
public static void main(String[] args)
{
int []arr ={5,1,6,4,2,8,9,7};
printArr(arr); //排序前
//selectSort(arr);
//bubbleSort(arr);
//javaSort(arr);
printArr(arr); //排序後
int a=10,b=4,c=5,d=20;
System.out.println(a++*b+c--d);
}
/*java提供的排序*/
public static void javaSort(int []arr){
Arrays.sort(arr);
}
/*選擇排序*/
public static void selectSort(int []arr){
for (int i=0;i<arr.length ;i++ )
for (int j=i+1;j<arr.length ;j++ ) //加1 避免重複比較
if(arr[i]>arr[j])
change(arr,i,j);
}
/*冒泡排序*/
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++)//減i減少遍歷次數,減1防止角標越界
if(arr[j]>arr[j+1])
change(arr,j,j+1);
}
/*交換*/
public static void change(int []arr,int i,int j){
arr[i]=arr[i]^arr[j];
arr[j]=arr[i]^arr[j];
arr[i]=arr[i]^arr[j];
}
/*打印*/
public static void printArr(int []arr){
for(int i:arr)
System.out.print(i+" ");
System.out.println();
}
}
java提供一個排序的方法:Arrays.sort();
數組的查找:
普通查找,折半查找
//折半查找可以提高效率,但必須保證數組有序
//原理:通過不斷折半,找中間值
/*
查找測試
*/
import java.util.*;
class Demo3
{
public static void main(String[] args)
{
int []arr=new int[]{5,6,12,45,55,59,89,360};
//System.out.println(search(arr,10));
//System.out.println(halfSearch(arr,55));
System.out.println(insert(arr,80));
}
/*普通查找,返回下標*/
public static int search(int []arr, int key){
for (int i=0;i<arr.length ;i++ )
{
if(arr[i]==key)
return i;
}
return -1;
}
/*使用折半查找*/
public static int halfSearch(int []arr,int key){
int min=0,max=arr.length-1,mid;
mid=(min+max)>>>1;
if(key==arr[mid])
return mid;
else
while(min<=max){
if(arr[mid]<key)
min=mid+1;
else if(arr[mid]>key)
max=mid-1;
else
return mid;
mid=(min+max)>>>1;
}
return -1;
}
/*要插入一個數,50 請輸出插入位置,保持順序不變*/
public static int insert(int []arr, int key){
int min=0,max=arr.length-1,mid=(min+max)>>>1;
while(min<=max){
if(arr[mid]<key)
min=mid+1;
else if(arr[mid]>key)
max=mid-1;
else
return mid;
mid=(min+max)>>>1;
}
return min;
}
}
十進制轉二進制
十進制轉八進制
十進制轉十六進制
/*
進制轉換測試類
*/
class Demo4
{
public static void main(String[] args)
{
trans(60,15,4); //十進制轉十六進制
trans(60,7,3); //十進制轉8進制
trans(60,1,1); //十進制轉2進制
}
/*
進制轉化
*/
public static void trans(int num, int wei,int youyi){
char []chs={'0','1','2','3','4',
'5','6','7','8','9',
'a','b','c','d','e','f'};
char ch[]=new char[32];
int pos=ch.length;
while(num!=0){
int temp=num & wei;
ch[--pos]=chs[temp];
num=num>>>youyi;
}
for(int i=pos;i<ch.length;i++){
System.out.print(ch[i]);
}
System.out.println();
}
}
十六進制轉二進制
char默認值 \u0000 空格
二維數組:
格式1: int [][] arr=new int[3][4];//三個二維裏面各有個4個元素
格式2: int [][] arr=new int[3][];//三個爲指向爲null的二維數組
/*
二維數組測試
*/
class Demo5
{
public static void main(String[] args)
{
/*
//定義二維數組
int [][] arr=new int[3][4];
//遍歷數組
for (int i=0;i<arr.length ;i++ )
{
for (int j=0;j<arr[i].length ;j++ )
{
System.out.print(arr[i][j]);
}
System.out.println();
}
*/
/*
第二種定義方式
int [][]arr =new int[3][];
arr[0]=new int[1];
arr[1]=new int[2];
arr[2]=new int[3];
for (int i=0;i<arr.length ;i++ )
{
for (int j=0;j<arr[i].length ;j++ )
{
System.out.print(arr[i][j]);
}
System.out.println();
}
*/
/*
比較坑爹的定義方式
int []x,y[]=new int[3][4];
for (int j=0;j<y.length ;j++ )
{
for (int i=0;i<y[j].length ;i++ )
{
System.out.print(y[j][i]);
}
System.out.println();
}
*/
}
}
小細節這樣也可以定義:
int [][]數組名 例如:int [][]y
int 數組名[][] 例如:int y[][];
int []數組名[] 例如:int []y[]
int []x,y[];
定義了一個x一維數組,y是二維數組
[]在名稱前面,代表全部都有.
[]在名稱後面,代表在前面的名稱有效 —————————— ASP.Net+Android+IOS開發、.Net培訓、期待與您交流!——————————