JAVA基础第四天学习日记_数组

---------------------- android培训 java培训 、期待与您交流! ----------------------

数组定义的常见报错:索引越界(访问数组中不存在的角标)。

                                    空指针异常(索引没有任何指向值,该引用还用于操作实体)。

二维数组的定义形式:int[][]y ; int y[][]; int[] y [];

遍历数组:

	public static void printArray(int[] arr)
	{
		for (int i = 0; i < arr.length; i++) 
		{
			if (i!=arr.length-1) 
			{
				System.out.print(arr[i]+",");
			}
			else 
			{
				System.out.println(arr[i]);
			}
		}
	}

获取数组最大值:

	public static int getMax(int[] arr)
	{
		int max=0;
		for (int i = 1; i < arr.length; i++) 
		{
			if (arr[i]>arr[max]) 
			{
				max=i;
			}
		}
		return arr[max];
	}

 数组选择排序:每个元素依次跟其后面的每个元素比较。

	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]) 
				{
					ChangePlace.changePlace(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-x-1; y++)//-x表示要减少循环次数,-1防止角标越界。
			{
				if (arr[y]>arr[y+1]) 
				{
					ChangePlace.changePlace(arr,y,y+1);
				}
			}
		}
	}

数组元素的交换:

public class ChangePlace 
{
	public static void changePlace(int[]arr,int a,int b)//传入int[]arr才能交换数组中的值。
	{
		int temp;
		temp=arr[a];
		arr[a]=arr[b];
		arr[b]=temp;
	}
	public static void changePlace2(int a,int b)
	{
		int temp=a;
		a=b;
		b=temp;
	}
}

数组元素的查找:

	public static int getIndex(int key,int[] arr)
	{
		for (int i = 0; i < arr.length; i++)
		{
			if (arr[i]==key)
				return i;
		}
		return -1;
	}

数组元素的折半查找:

	public static int halfIndex(int key,int[] arr)//这种方法更加效率,但是必须保证数组的有序。
	{
		int min=0,max=arr.length,mid;
		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;//此处返回min可以在min角标处插入元素,使数组保持有序。
	}

利用StringBuffer将十进制转换为十六进制:

	public static StringBuffer toHex(int num)
	{
		StringBuffer sb=new StringBuffer();
		for (int i = 0; i < 8; i++) 
		{
			int temp=num&15;
			if (temp<=9) 
			{
				sb.append(temp);
			}
			else
			{
				sb.append((char)(temp-10+'A'));
			}
			num=num>>>4;
		}
		return sb.reverse();//将缓冲器中的内容反转。
	}

查表法之进制间的转换:

	public static void trans(int num,int base,int offset)//要转换的十进制数;要参与与运算的参数二进制1,八进制7,十六进制15;移动的位数:二进制1,八进制3,十六进制4;
	{
		char[] arr=new char[32];//定义的最大容量的数组。因为int为4个字节,转换为二进制的话有32位。
		int pos=arr.length;
		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'};
		while (num!=0) //判断可以过滤掉前面无效的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]);
		}
	}



 

---------------------- android培训 java培训 、期待与您交流! ----------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值