0
点赞
收藏
分享

微信扫一扫

学习数组小结

小猪肥 2022-03-17 阅读 51
java

这里写目录标题

数组越界错误

一个小小的疏忽引出一个未曾见过的错误
在这里插入图片描述
这个错误出现在编译通过之后,错因是数组在被引用时超过了原本定义的长度,由于if后的双引号而使得s一直增大

public class Throw
{
	public static void main(String[] agrs)
	{
		int i;
		int s=0;
		int[] oldArr={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
		for(i=0;i<oldArr.length;i++)                 //计算0的个数
		{
			if(oldArr[i]==0)
			        s++;//引起错因的地方时if后多出了;
		}
		int[] newArr=new int [oldArr.length-s];         //新数组的长度为旧数组长度减去0的数量
		int j=0;                                          //j不能放在for循环内,否则会一直为0
		for(i=0;i<oldArr.length;i++)
		{
			if(oldArr[i]!=0)                                //将旧数组中的非零元素给新数组
			{
				newArr[j]=oldArr[i];
				j++;
			}
		}
		for(i=0;i<newArr.length;i++)
			System.out.print(newArr[i]);
	}
}

二维数组

初始化
在二维数组的初始化时不能在[]定义行或列中的任何一个来确定数组的长度
在这里插入图片描述
在这里插入图片描述
而是通过赋值来给定数组的大小

  1. 静态赋值(通过参数来确定):例如int b[][]={{1,2,3},{4,5,6},{7,8,9}}为一个3行3列的二维数组
  2. 动态赋值(给定大小而不赋给参数):例如int b[][]=new int[i][j]或int b[][]=new int[i][].注意可以省列但不可省行

char型数组

初始化
由一个简单的选择题引起的测试
在这里插入图片描述

  1. char型数组同样不能在[]内直接定义数组长度
  2. char数组中的每个参数需用单引号‘’包围

不能是双引号""

不能没有
在这里插入图片描述

数组保存位置

  1. Java在内存1中会先将class存入方法区内存保存代码片段(值得一提的是String作为特殊常量保存在常量池中,而常量池在JDK1.8后由方法区内存转到堆中)
  2. 数组对象是储存在内存当中的.
  3. 栈(stack)遵循后进先出规则时弹栈出的是所存储的对象的引用(内存地址).

可参照下图
在这里插入图片描述

图片引用于https://blog.csdn.net/Hurricane_m/article/details/89504445

做题小结

  1. 构造数组时必须指定长度,因为JVM需要知道该为它分配多少空间
  2. 数组复制时,"="传递的是数组的位置
  3. Java要求所有的数组元素具有相同的数据类型。

未完
在付出更多汗水收获更多知识后应该保持更新,无知需要努力弥补


  1. 内存可分为栈,堆,方法区内存(Java) ↩︎

举报

相关推荐

0 条评论