本帖最后由 李培根 于 2012-12-8 15:51 编辑
进制转换 toHex(60); public static void toHex(int num){ if(num==0){ System.out.print('0'); return;//最好不要省略,提高程序性能,方法结束,下面代码不执行。 } //定义一个对应关系表。 char[] chs = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; /*查表会查到比较多的数据,数据多了就要存储起来,再进行操作。 定义一个数组存储,临时容器。*/ char[] arr =new char[8]; int pos = arr.length; while(num!=0){ int temp = num & 15; arr[--pos] = chs[temp];//temp作为角标 查表 chs 对应的是字符 num = num>>>4;//>>>无符号右移。 } for (int i = pos; i < arr.length; i++) { System.out.print(arr); } 进制转换 //十进制--->十六进制 public static void toHex(int num){ trans(num,15,4); } //十进制--->八进制 public static void toOctal(int num){ trans(num,7,3); } //十进制--->二进制 public static void toBinary(int num){ trans(num,1,1); } public static void trans(int num,int base,int offset){ if(num==0){ System.out.print('0'); return;//最好不要省略,提高程序性能,方法结束,下面代码不执行。 } //定义一个对应关系表。 char[]chs={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; /*查表会查到比较多的数据,数据多了就要存储起来,再进行操作。 定义一个数组存储,临时容器。*/ char[] arr =new char[8]; int pos = arr.length; while(num!=0){ int temp = num & base; arr[--pos] = chs[temp];//temp作为角标 查表 chs 对应的是字符 num = num>>>offset;//>>>无符号右移。 } for (int i = pos; i < arr.length; i++) { System.out.print(arr); } } 二维数组 格式一 int[][] arr = new int[3][2]; 定义了名称为arr的二维数组。 二维数组中有三个一维数组。 每个一维数组中有两个元素。 一维数组的名称分别为arr[0],arr[1],arr[2]。 给第一个一维数组角标1角标位赋值为7的写法是:arr[0][1] = 7; 格式二 int[][] arr = new int[3][]; 二维数组中有三个一维数组。 每个一维数组的默认初始化值是null。 可以对这三个一维数组分别进行初始化 arr[0] = new int[3]; arr[1] = new int[1]; arr[2] = new int[2];
格式三 int[][] arr = {{1,5,8},{6,6,36,58},{74}; int[][] arr = new int[3][2]; System.out.println(arr[0].length); System.out.println(arr);//直接打印二维数组 System.out.println(arr[0]);//直接打印二位数组中角标为0的,一维数组 System.out.println(arr[0][1]);//直接打印二位数组中角标为0的,一维数组中角标为1的元素 遍历二维数组 int[][] arr = {{15,56,78,95},{85,48,235},{49,69}}; for (int i = 0; i < arr.length; i++) { System.out.print('['); for (int j = 0; j < arr.length; j++) { if(j!=arr.length-1){ System.out.print(arr[j]+","); }else{ System.out.println(arr[j]+"]"); } } } 数组工具类和文档注释总结 public class ArrayToolDemo { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub //数组工具对象的建立 int[] arr = {4,3,6,8,9,5,30}; /*int maxIndex = 0; for (int i = 1; i < arr.length; i++) { if(arr>arr[maxIndex]) maxIndex = i; }*/ //ArrayTool tool = new ArrayTool();对象的建立无意义,浪费内存空间 int max = ArrayTool.getMax(arr);//int max = tool.getMax(arr); System.out.println("max="+max); int index = ArrayTool.getIndex(arr,4);//int index = tool.getIndex(arr,4); System.out.println("index=" + index); } } /** 建立一个 用于操作数组的工具类,其中包含着常见的对数组操作的函数,如:排序,获取最值,查找等 * @author peigen * @version v1.0 * */ public class ArrayTool{//一个类文档化的前提是:必须是public权限。 //加上public后文件名和类名要一致,否则会编译失败。 private ArrayTool(){}//强制其不允许创建对象。 //该类的方法都是静态的,所以该类是不需要创建对象的 , //为了保证不让其他程序创建该类对象,可以将该类的构造函数私有化。 /** 获取整型数组的最大值。 @param arr 接收一个元素为int类型的数组。 @return 返回该数组中最大的元素。 */ public static int getMax(int[] arr){//没有访问对象中的特有数据,所以静态化 int maxIndex = 0; for (int i = 0; i < arr.length; i++) { if(arr>arr[maxIndex]) maxIndex = i; } return arr[maxIndex]; } /** * 对数组进行选择排序 * @param arr 接收一个元素为int类型的数组。 */ 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]) { swap(arr, i, j); } } } } /** 用于给数组进行元素的位置置换。 @param arr 接收一个元素为int类型的数组。 @param i @param j */ private static void swap(int[] arr, int i, int j) { int temp = arr; arr = arr[j]; arr[j] = temp; } /** * 获取指定元素在指定数组中的索引。 * @param arr接收一个元素为int类型的数组。 * @param key 要找的元素 * @return 返回该元素第一次出现的位置,如果不存在返回-1 */ public static int getIndex(int[] arr,int key){ for (int i = 0; i < arr.length; i++) { if(arr == key) return i; } return -1; } /** * 将int数组装潢成字符串。格式是[e1,e2……] * @param arr 接收一个元素为int类型的数组 * @return 返回该数组的字符串表现形式。 */ public static String arrayToString(int[] arr){ String str = "["; for (int i = 0; i < arr.length; i++) { if(i !=arr.length-1) str = str + arr+ ", " else str = str + arr+ "]" } return str; } } |