首页 > 代码库 > Java学习之数组 <好程序员特训营>

Java学习之数组 <好程序员特训营>

<A href="http://www.goodprogrammer.org/" target="blank">android培训</a>------我的java笔记,期待与您交流!

 

1.数组内存----栈  堆

栈内存:数据使用完毕,会自动释放

堆内存:放的都是 new 出来的实体(对象或数组),有内存地址值,且数组都有默认值,例如:0,false,0.0,当堆内存中实体无引用后,一段时间内会被JVM的垃圾回收机制回收,释放内存

例如: (1) int x=1; 只在栈内存中生成 x=1

    (2) int[] x = new int[3]; 在栈内存中生成 x,在堆内存中生成 new int[3],并将new int [3]的首地址值(十六进制,如:0x0078)赋给x

2.两个引用指向同一地址

  int[] x = new int[3];

  int[] y = x;

  y[1]=1; --->x[1]=1

3.排序

//选择排序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]){				swap(arr,x,y);					}		}	}}//冒泡排序public static void bubbleSort(int[] arr){	for(int x=0;x<arr.length-1;x++){		for(int y=0;y<arr.length-1-i;y++){			if(arr[y]>arr[y+1]){				swap(arr,y,y+1);			}		}	}}//位置交换public static void swap(int[] arr,int x,int y){	int temp = arr[x];	arr[x]=arr[y];	arr[y]=temp;}//Java中定义好的一种排序方式Arrays.sort(arr);//Java中定义好的输出printArray(arr);

 4.查找

(1).折半查找(第一种方式)(前提是数组已经排序)public static int halfSearch(int[] arr,int key){	int min,max,mid;	min = 0;	max = arr.lenth-1;	mid = (max + min)/2;	while(arr[mid] != key){		if(key > arr[mid])			min = mid + 1; 		else if(key < arr[mid])			max = mid - 1;		if(min > max)			return -1;		mid = (max + min)/2;	}	return mid;}(2).折半查找(第二种方式)public static int halfSearch(int[] arr,int key){	int min = 0,max = arr.length-1,mid;	while(min<=max){		mid = (max + min)>>1;		if(key>arr[mid])			min = mid + 1;		else if(key < arr[mid])			max = mid - 1;		else			return mid;	}	return -1;}

 5.查表法:将所有元素临时存储起来,建立对应关系

//十进制--->二进制、八进制、十六进制public class Test {	public static void main(String[] args) {		toBin(12);		toBin(-7);		toBa(12);		toBa(-7);		toHex(12);		toHex(-7);	}		//十进制-->二进制	public static void toBin(int num){		trans(num,1,1);	}	//十进制-->八进制	public static void toBa(int num){		trans(num,7,3);	}	//十进制-->十六进制	public static void toHex(int num){		trans(num,15,4);	}	//转换函数	public static void trans(int num, int base, int offset) {		if(num == 0){			System.out.println(0);			return ;		}		char[] chs = { ‘0‘, ‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘, ‘6‘, ‘7‘,				       ‘8‘, ‘9‘, ‘A‘, ‘B‘, ‘C‘, ‘D‘, ‘E‘, ‘F‘ };		char[] arr = new char[32];// 默认值"\u0000",代表空字符		int pos = arr.length;		while (num != 0) {			int temp = num & base;			arr[--pos] = chs[temp];			num = num >>> offset;		}		for (int i = pos; i < arr.length; i++) {			System.out.print(arr[i]);		}		System.out.println();	}}

 

6.二位数组定义

(1).规则   int[][] arr = new int[2][3];

(2).不规则  int[][] arr = new int[3][];

            int[0] = new int[3];

                int[1] = new int[2];

                int[2] = new int[5];

(3).特殊   int[]arr[] = new int[2][3];  正确

         int[] x,y[]; 正确,定义的是一个x[]和一个y[][]

Java学习之数组 <好程序员特训营>