数组
概念
同一种类型数据的集合.其实数组就是一个容器.
数组的好处
可以自动给数组中的元素从0开始编号,方便操作这些元素
格式1
元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
示例: int[] arr = new int[5];
格式2
元素类型[] 数组名 = new 元素类型[]{元素,元素,....};
int[] arr = new int[]{3,5,1,7};
int[] arr = {4,5,1,6};
例子:
public class ArrayDemo { public static void main(String[] args) { //元素类型[] 数组名 = new 元素类型[元素个数或数组长度]; int[] arr = new int[3]; //打印出来的都是0,因为只定义该数组的长度和个数(角标长度)并没有向具体角标中赋值 //打印出来的数据都是默认值0 System.out.println(arr[0]); System.out.println(arr[1]); //给数组第0个角标赋值 arr[0]=89; //打印结果为89 System.out.println(arr[0]); } }
数组内存空间的划分
1.寄存器(CPU来处理不用管)
2.本地方法区(不详解由所在系统相关的)
3.方法区(后面章节会讲)
4.栈内存(重点)
5.堆内存(重点)
理解局部变量和全局变量区别
public class ArrayDemo2 { static int a = 27; // 全局变量 static void test() { boolean flag = false;// flag局部变量有效范围市整方法体 if (!flag) { int a = 20;// 局部变量a必须进行初始化且只if块有效 System.out.println("a1=" + a); } } public static void main(String[] args) { int a = 23;// 局部变量a test(); System.out.println("a3=" + a); } }
1.对于局部变量要先赋值后使用
2.局部变量局部有效,在定义着个变量的代码块就是在{}中有效
3.成员变量只在加载的时候初始化一次 局部变量每次调用方法的时候都会被初始化
4.成员变量存在堆中 局部变量存在栈中
栈内存
存储的都是局部变量
局部变量所属的作用域(方法)一旦调用结束,该变量就自动释放.
堆内存
存储是数组和对象(其实数组就是对象)凡是new出来的都放在堆中
如图:
下面这个是给引用数据类型进行设置为null,如果基本数据类型都是null,它也就指向null了,那堆中没有引用指向的数据就成为垃圾数据,由于java垃圾收集器不定时回收,就向办公室中有阿姨来不定时回收垃圾道理一样
特点:
1.每个实体都有首地址值
2.堆内存中的每一个变量都有默认初始化值,根据类型的不同而不同.整数是0,小数是0.0.或者0.0f.boolean false char '\u0000'
3.垃圾回收机制
堆栈内存分析
数组-第二种定义格式
元素类型[] 数组名 = new 元素类型[]{元素,元素,....};
int[] arr = new int[]{3,5,1,7};
int[] arr = {4,5,1,6};
public static void main(String[] args) { /*格式一 * 第一种用法: * 需要一个容器,但是不明确容器中的具体数据 * */ int[] arr=new int[3]; /**格式二 * 第二种用法: * 需要一个容器,存储已知的具体数据. * 元素类型[] 数组名 = new 元素类型[]{元素,元素,....}; int[] arr = new int[]{3,5,1,7}; int[] arr = {4,5,1,6}; */ int[] arr1 = new int[]{1,2,3,4}; int[] arr2 = {1,2,3,4}; }
数组-常见操作-遍历
int[] arr1 = new int[]{1,2,3,4}; int[] arr2 = {1,2,3,4,5}; for (int i = 0; i < arr2.length; i++) { System.out.println(arr2[i]); }
反向遍历
for (int i = arr2.length-1; i >=0; i--) { System.out.println(arr2[i]); }
获取数组中最大或最小的值
public static void main(String[] args) { int[] arr = { 11, 33, 23, 6, 5, 88 }; System.out.println(getMaxNumber_2(arr)); } //通过元素比较 public static int getMaxNumber(int[] arr){ int maxElement = arr[0]; for(int i = 0 ;i<arr.length;i++){ if(arr[i]>maxElement){ maxElement=arr[i]; } } return maxElement; } //通过角标比较 public static int getMaxNumber_2(int[] arr){ int maxElement = 0; for(int i = 0 ;i<arr.length;i++){ if(arr[i]>arr[maxElement]){ arr[maxElement]=arr[i]; } } return arr[maxElement]; }
查询数组指定的值
//数组查询 public static void main(String[] args) { int[] arr = { 11, 33, 23, 6, 5, 88 }; System.out.println(getMaxElement(arr,5)); } //普通查询数组中指定的元素 public static int getMaxElement(int[] arr,int key){ for(int i = 0;i<arr.length;i++){ if(arr[i]==key){ return arr[i]; } } return -1; }
二维数组
int[][] arr = new int[3][2]; System.out.println(arr);//打印二维数组 [[I@15db9742 System.out.println(arr[0]);//打印二维数组中角标为0的一维数组 [I@6d06d69c System.out.println(arr[0][0]); //打印二维数组中角标为0的一维数组为0的值 0 int[][] arr2 = new int[3][]; System.out.println(arr2);//打印二维数组 [[I@15db9742 System.out.println(arr2[0]);//打印二维数组中角标为0的一维数组 null System.out.println(arr2[0][0]); //打印二维数组中角标为0的一维数组为0的值java.lang.NullPointerException int[] arr3 = new int[3]; System.out.println(arr3); System.out.println(arr3[0]);
//二维数组 public static void main(String[] args) { int[] arr1 = new int[3]; //System.out.println(arr13); //System.out.println(arr1[0]); int[][] arr2 = new int[3][2]; //System.out.println(arr2);//打印二维数组 [[I@15db9742 //System.out.println(arr2[0]);//打印二维数组中角标为0的一维数组 [I@6d06d69c //System.out.println(arr2[0][0]); //打印二维数组中角标为0的一维数组为0的值 0 int[][] arr3 = new int[3][]; //System.out.println(arr3);//打印二维数组 [[I@15db9742 //System.out.println(arr3[0]);//打印二维数组中角标为0的一维数组 null //System.out.println(arr3[0][0]); //打印二维数组中角标为0的一维数组为0的值java.lang.NullPointerException int sum = 0; int[][]arr4={{3,1,7},{9,3,6,7},{445,7,3,1,7}}; for(int x= 0;x<arr4.length;x++){ for (int i = 0; i < arr4[x].length; i++) { sum+=arr4[x][i]; System.out.print(arr4[x][i]); } System.out.println( ); } System.out.println(sum); }
相关推荐
在Java编程语言中,数组是一种特殊的数据结构,用于存储...通过这个实例,我们可以深入理解Java中一维数组的创建、初始化和遍历的基本概念,这对于后续学习更复杂的数组操作,如多维数组和数组操作函数,奠定了基础。
在Java编程语言中,数组是一种特殊的数据结构,用于存储同类型元素的集合。它们提供了一种方式来组织和管理大量数据,使得我们...同时,掌握好数组和方法的交互也是Java编程的基础,对于理解和编写复杂程序至关重要。
1. **访问元素**:通过索引来访问数组元素,如arr[0]获取第一个元素。 2. **遍历数组**:通常使用for循环遍历数组的所有元素,如for (int i = 0; i ; i++) { System.out.println(arr[i]); }。 3. **数组复制**:...
- 上述例子中,数组`a`的第一行有2个元素(1和2),第二行有4个元素(3、4、5和6),第三行有3个元素(7、8和9)。 - 每个内部数组的长度可以不同,这使得二维数组能够更加灵活地存储数据。 **访问元素**: - 二...
总结起来,Java中的数组操作是编程的基础,掌握如何定义、初始化、访问、修改、遍历、排序和置换数组元素对于编写高效的Java程序至关重要。通过熟练运用这些技巧,开发者可以更好地解决实际问题,并提高代码的可读性...
总之,理解和掌握二维数组、三维数组及其遍历方法是Java编程的基础。通过徐培成老师的讲解,学习者可以深入理解数组的运用,为后续复杂的程序设计打下坚实基础。在实际编程中,数组的应用无处不在,无论是简单的数据...
这通常涉及到使用第三方库如`fastjson`、`Jackson`或`org.json`等。这里以`org.json`为例进行说明: ```java import org.json.JSONArray; PricingRangeDTO[] shuzu = {new PricingRangeDTO("asd"), new ...
Java中的数组操作是编程的基础,包括初始化、访问、修改和遍历。选择排序是一种简单的排序算法,适合理解排序的基本原理,但在处理大量数据时效率不高。学习这些基础知识有助于提升Java编程能力,为后续的编程实践...
【IT十八掌徐培成】Java基础第04天的课程涵盖了多个重要的Java编程知识点,主要分为以下几个部分: 1. **Byte范围变换**: 在Java中,`byte`是基本数据类型之一,它的取值范围是-128到127。在处理二进制数据时,...
初始化一个变量为数组的第一个元素,然后逐个比较数组中的其他元素,如果发现更大的值就更新这个变量。 ```java public static int getMax(int[] arr) { int max = arr[0]; for (int x = 0; x ; x++) { if (max ...
Java数组的索引从0开始,到数组长度减1结束。如果尝试访问超出这个范围的索引,就会抛出`ArrayIndexOutOfBoundsException`,这是一个运行时异常。例如,以下代码会导致该异常: ```java int[] myArray = new int[5]...
"accp5.0 java第八章 数组(改)"着重讲解了Java编程中的数组概念及其应用,这是一份经过修订和完善的知识资料,旨在帮助学习者修正之前的理解偏差,并提供最新的学习内容。 数组在Java中是一系列相同类型的数据的...
一维数组是Java程序设计的基础知识之一。在Java中,数组是一组数据的集合,每个数据被称为元素,在数组中可以存放任意类型的元素,但同一个数组中存放的元素类型必须一致。 数组的定义方式有多种,包括静态初始化和...
首先,我们要明确一点,Python的标准库中并没有直接提供像C或Java那样的数组类型。不过,Python提供了列表(list)作为等效的数据结构,它能够满足我们对数组的所有基本需求。列表是动态大小的,可以容纳不同类型的...
Java数组实验 本实验的主要目的是掌握数组相关常用算法和方法的定义和调用。通过本实验,学生将学习如何使用Java语言生成随机整数数组,并将其写入文本文件中。同时,学生还将学习如何从文本文件中读取数据并将其...
print(arr[1][2]) # 访问第二行第三列的元素,输出6 ``` 二维数组的操作包括遍历、查找、修改元素、矩阵运算等。在遍历二维数组时,通常使用两重循环,外层循环控制行,内层循环控制列。例如,打印所有元素: ```...
第三种形式是静态初始化与动态初始化的结合,即在声明数组时提供初始值。 数组的访问是通过索引来完成的,索引是从0开始的。例如,对于数组`intArray`,`intArray[0]`将获取或设置第一个元素的值。 数组类和字符串...
"java数组资料"这个主题涵盖了Java基础知识的核心技术,特别是关于数组的知识。数组允许程序员在单个变量中存储一组相同类型的数据,这对于处理批量数据或者执行批量操作非常有用。 1. **数组的概念与定义** - ...
在本章"武汉大学JAVA教程 第02章-Java语法基础"中,我们将深入探讨以下几个关键知识点: 1. **词法规则**: - Java程序的运行流程包括源代码(.java文件)→javac编译器(词法分析和类型检查)→字节码文件(....
13. 数组`a`的第三个元素表示为_D_,即`a[2]`。 14. 当访问无效的数组下标时,会发生_B_,即抛出异常`ArrayIndexOutOfBoundsException`。 15. 使用`arraycopy()`方法将数组`a`复制到`b`的正确写法是_A_,从源数组...