[Java视频笔记]day04

数组定义格式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_第1张图片


另一种初始化

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

 

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

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





你可能感兴趣的:([Java视频笔记]day04)