[Java视频笔记]day04

时间:2023-02-25 18:36:43

数组定义格式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);//打印二维数组中第一个一维数组的长度

[Java视频笔记]day04


另一种初始化

int[][] arr = {{1,2,4}, {2,1,111,45},{3,45}};

 

一维数组: int[] x;  int x[];

二维数组: int[][] y; int y[][]; int[] y[];//都可以