数组定义格式2:
Int[] arr = new int[]{1,2,3,4,5};
Int[] arr = {1,2,3,4,5};
ArrayIndexOutOfBoundsException: 操作数组时,访问到了数组中不存在的角标
NullPointerException:空指针异常:当引用没有任何指向值为null的情况,该引用还在用于操作实体。比如: int[] arr = new int[4]; arr= null; System.out.println(arr[1]);
数组中可以直接获取数组元素个数 .length 比如arr.length
public static void printArray(int[] arr) { }; //传参
System.out.println(arr); 输出 [I@de6ced [是指数组 I 是指数组类型是int @de6ced是指数组内存地址
Arrays.sort(arr); //排序方法,真实开发时用它
public static int getIndex(int[] arr, int key)<p>//在有序数组arr中插入一个关键字key,返回key插入的位置</p> { int min = 0,max = arr.length - 1,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 min; }
StringBuffer sb = new StringBuffer();
sb.append(3);
sb.append2);
System.out.println(sb.reverse()); //反转输出 23
/* 十进制-->十六进制 */ public static void toHex(int num) { StringBuffer sb = new StringBuffer(); while(num > 0) { int temp = num & 15; //获取低四位 if(temp > 9) //System.out.println((char)(temp - 10 + 'A')); sb.append((char)(temp - 10 + 'A')); else //System.out.println(temp); sb.append(temp); num >>= 4; } System.out.println(sb.reverse()); }
有局限性,num不能是负数
下面这个num可以是负数
/* 十进制-->十六进制 */ public static void toHex(int num) { StringBuffer sb = new StringBuffer(); while(num != 0)//改动1 { int temp = num & 15; //获取低四位 if(temp > 9) //System.out.println((char)(temp - 10 + 'A')); sb.append((char)(temp - 10 + 'A')); else //System.out.println(temp); sb.append(temp); num >>>= 4;//改动2 } System.out.println(sb.reverse()); }
Num >>>= 4 ; 意思是num不论是正数还是负数,右移4位,高位都补0
通用代码:正负数都可以
public static void main(String[] args) { toHex(-60); toBin(10); } //转成2进制 public static void toBin(int num) { trans(num, 1, 1); } //转成16进制 public static void toHex(int num) { trans(num, 15, 4); } //进制转换,num需要转换的树,base进制的基数,如果转成8进制 //则base等于7,offset是偏移量,及每次移动几位,7是111,移动3位即可 public static void trans(int num, int base, int offset) { 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'}; char[] arr = new char[32];//存放转后的每位 int pos = arr.length; while(num != 0) { int temp = num & base; arr[-- pos] = chs[temp]; num = num >>> offset; } for(int x = pos; x<arr.length; ++ x) { System.out.println(arr[x]); } }
二维数组
int[][] arr = new int[3][4];//二维数组中有3个一维数组
int[][] arr = new int [3][]; System.out.println(arr[0]); 则输出为null
一开始arr[0] = arr[1] = arr[2] = null
arr[0] = new int [4];//单独初始化
System.out.println(arr.length);//打印二维数组的长度 3
System.out.println(ar[0].length);//打印二维数组中第一个一维数组的长度
另一种初始化
int[][] arr = {{1,2,4}, {2,1,111,45},{3,45}};
一维数组: int[] x; int x[];
二维数组: int[][] y; int y[][]; int[] y[];//都可以