本帖最后由 jing3133920 于 2015-4-30 18:53 编辑
一、数组
静态初始化:
int[] arr = new int[]{3,1,6,4}; 也可以写成这样的简化形式:int[] arr = {3,1,6,4};
如果你的数据明确的话,使用这种数组定义格式。
常见问题:
ArrayIndexOutOfBoundsException X:操作数组时,访问到了数组中不存在的角标。
NullPointerException:空指针异常:当引用没有任何指向值为null的情况,该引用还在用于操作实体。
数组的操作:
通过遍历来获取数组中的元素。这是需要运用for语句和数组中的一个属性length(使用方式:数组名称.length)
示例:
int[] arr=new int[]{1,2,3};
for(int i=0;i<3;i++)
{
System.out.print(arr);
}
练习:定义功能,用于打印数组中的元素。元素间用逗号隔开。
public static void arrayPrint(int[] arr)
{
for(int i=0 ;i< arr.length;i++)
{
if(i!=arr.length-1)
System.out.print("arr["+i+"]="+ arr+",");
else
System.out.print("arr["+i+"]="+ arr);
}
}
注:System.out.println(arr);如果直接通过print打印数组,将会输出数组地址(这个地址用哈希算法的十六进制形式输出的)。
二、选择排序和冒泡排序
选择排序:每一次从待排序数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置
public static void selectSort(int[] arr)//从小到大排
{
for(int i=0 ;i< arr.length-1;i++)
{
for(int j=i+1; j<arr.length; j++)//内循环结束一次,最值出现头角标位置上。
if(arr>arr[j])
{
int temp=arr;
arr=arr[j];
arr[j]=temp;
}
}
}
泡泡排序:相邻两个元素进行比较。如果第一个数比第二个数大,就交换两个数。
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++)//y<arr.length-x-1的目的有两个1.实现每循环一次减少一个元素。2.避免角标超出的问题。
{
if(arr[y]>arr[y+1])
{
int temp = arr[y];
arr[y] = arr[y+1];
arr[y+1] = temp;
}
}
}
}
注:Arrays.sort(arr);java中已经定义好的一种排序方式。开发中,对数组排序。要使用该句代码。
三、折半查找
折半查找可以提高效率,但是必须要保证该数组是有序的数组。
public static int harfSearch(int[] arr,int key)
{
int min=0, max=arr.length-1, mid;//min头角标,max尾角标,mid中间角标
while(min<=max)//只要min小于max说明满足折半条件
{
mid=(min+max)>>1;//相当于mid=(min+max)/2
if(key>arr[mid])
min=mid+1;
else if(key<arr[mid])
max=max-1;
else
return mid;
}
return -1;//如果key这个数在数组中不存在,就返回-1。如果我们想插入一个数,只要将-1改为min,并返回就可以。
}
四、进制转换
StringBuffe方法用来存储和操作字符串:
StringBuffer.append();添加数据
StringBuffer.reverse();将字符串翻转
public static void onBin(int num)//二进制置换
{
zhiHuan(num,1,1);
}
public static void onBa(int num)//八进制置换
{
zhiHuan(num,7,3);
}
public static void onHex(int num)//十六进制置换
{
zhiHuan(num,15,4);
}
public static void zhiHuan(int num,int base,int offset)
{
char[] chs ={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};//置换时对应的元素
char[] arr = new char[32];//用来存放置换后的数据
int pos = arr.length;//数组最后的角标值,目的是让数据在数组中从后往前存。
while(num!=0)
{
int temp=num&base;//获取要置换数的最低位
arr[--pos]=chs[temp];//通过num&base的值(角标)在数组chs[]中找到对应的值。
num=num>>>offset; //根据进制数向右位移
}
for(int x=pos; x<arr.length;x++)//遍历输出
{
System.out.print(arr[x]);
}
}
五、二维数组
二维数组就是数组中的数组。也就是在二维数组存的是若干个一维数组
二维数组的简写方式:int[][] arr={{1,2,3},{4,5,6},{7,8,9}};
格式1:
int[][] arr = new int[3][2];里面的3表示有3个一维数组,2表示的是每个一维数组有2个元素
一维数组的名称分别是:arr[0],arr[1],arr[2]
如果给第一个数组的1角标赋值位12的写法是:int[0][1]=12;
格式2:
int[][] arr = new int[3][];里面的3表示有3个一维数组,[]表示的是每个一维数组默认初始化值位null。
这种格式可以对三个一维数组分别进行初始化
arr[0] = new int[3];\\为第一个数组定义3个长度的数组
arr[1]= new int[2];\\为第二个数组定义2个长度的数组
注:
一维数组定义方式:
int[] x; int x[];
二维数组定义方式:
int [][] y; int y[][]; int[] y[];
System.out.println(arr[]);在二维数组中如果直接通过print打印arr[],将会输出一维数组地。 |
|