码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2014-12-18 20:26:25      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:android   blog   http   ar   os   使用   sp   for   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学习之数组 <好程序员特训营>

标签:android   blog   http   ar   os   使用   sp   for   java   

原文地址:http://www.cnblogs.com/bye-2012lx/p/4172380.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!