Java学习笔记-数组

该博文是以下资料的学习笔记:

传智播客Java基础视频

该博文仅为个人学习使用,谢谢



同一种类型数据的集合,好处是可以自动给数组中的元素从0开始编号,格式:

第一种定义方式:

元素类型[] 数组名 = new 元素类型[元素个数或者数组长度];
int[] arr = new int[3];
double[] arr1 = new double[3];
System.out.println(arr1[0]);//0.0,不同类型的数组中的元素有默认的初始化值,Boolean型的默认初始化值是false,

内存的划分(有待完善补充):

1、寄存器

2、本地方法区

3、方法区

4、栈内存,存储的都是局部变量,而且变量所属的作用域一旦结束,该变量占用的空间就被释放,可用局部代码块限定局部变量的生命周期。

5、堆内存,存储的是数组和对象(数组也是对象),凡是new出来的东西 都存储在堆中,特点:

a、每一个实体都有地址值

b、每一个变量都有默认初始化值,整数是0,小数是0.0或0.0f,Boolean型是false,char是‘\u0000’,\u代表Unicode码表

c、垃圾回收机制


int[] arr = new int[3];
double[] arr1 = new double[3];
float[] arr2 = new float[3];
System.out.println(arr); //[I@15db9742
System.out.println(arr1);//[D@6d06d69c
System.out.println(arr2);//[F@7852e922

上述打印结果,@前边的部分代表数据类型,[代表arr是一个数组,I代表是int类型,D代表double类型...@后边是对象的地址值。


数组的第二种定义方式:

元素类型[] 数组名 = new 元素类型[]{元素,元素,元素, ...};
int[] arr3 = new int[]{2,3,26,78,5,34};
int[] arr4 = {2,3,26,78,5,34};//比较简化的方式,和上边的方式有区别,待补充...


数组的常见操作:

求最值:

private static int getMax(int[] arr) {
	/*int max = 0;
	for(int x = 0;x<arr.length;x++){
		max = max>arr[x]?max:arr[x];
	}*/
	//这种写法比上边一种少做一次判断
	int max = arr[0];
	for(int x = 1;x<arr.length;x++){
		max = max>arr[x]?max:arr[x];
	}
	return max;
}

选择排序、减少置换位置次数的判断方法:

冒泡排序:

其他的常用排序方法:

Java定义好的排序:Arrays.Sort(arr);

折半查找(二分查找):相关应用,把一个数插入有序数组保证插入后的数组还是有序的,

Java定义好的二分查找:Arrays.binarySearch(arr,13);//返回的就是指定数的应该插入点


数组的运用,获取一个整数的十六进制形式:

private static void toHex(int i) {
	if(i==0){
		System.out.println("0");
		return;
	}
	char[] chs = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
	/*
	for(int x = 0;x<8;x++){
		int num = i&15;//利用&运算的特点
		if(num>9){
			System.out.print((char)(num-10+'A'));//第一种方式,利用编码表的顺序
		}else{
			System.out.print(num);
		}
		i = i>>>4;
	}
	
	for(int x = 0;x<8;x++){
		int num = i&15;//利用&运算的特点
		System.out.print(chs[num]);//第二种方式,利用数组的特性
		i = i>>>4;
	}
	*/
	char[] arr = new char[8];
	int pos = arr.length;
	while(i!=0){
		int temp = i&15;
		arr[--pos] = chs[temp];
		i = i>>>4;
	}
	for(int x = pos;x<arr.length;x++){
		System.out.print(arr[x]);
	}
}

系统提供的进制转换API:Integer.toBinaryString(-6);



二维数组:

格式1:int[][] arr = new int[3][2];二维数组中有3个一维数组,每个一维数组中有两个元素

格式2:int[][] arr = new int[3][];二维数组中有3个一维数组,每个一维数组都是默认初始化值null,可以进行初始化:

arr[0] = new int[2];

int[][] arr6 = new int[3][2];
System.out.println(arr6);       //  [[I@15db9742
System.out.println(arr6[1]);   //  [I@6d06d69c


int [][] arr7 = new int[3][];
System.out.println(arr7);      //  [[I@15db9742
System.out.println(arr7[1]);  //  null 默认初始化值

System.out.println(arr7[1][1]);  //  NullPointerException


格式3:int[][] arr = {{1,67,3,900},{45,7,98},{-5,122,0,-9}}; 




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值