----------------------
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]);
}
}