A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 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[],将会输出一维数组地。

5 个回复

倒序浏览
赞一个!!!
回复 使用道具 举报
加油:victory:
回复 使用道具 举报
笔记很详细啊,遍历数组中,打印数组这个地方错了System.out.print(arr);应该改为arr[i]啊

点评

看的好仔细啊  发表于 2015-5-3 20:20
回复 使用道具 举报 1 0
下一页5 发表于 2015-4-30 18:04
笔记很详细啊,遍历数组中,打印数组这个地方错了System.out.print(arr);应该改为arr啊 ...

感谢纠正,忘打了。。。:P
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马