7. java 数组概念
一、数组概念
数组:是一种容器,可以同时存放多个数据值;
特点:数组是一种引用类型;数组中多个数据,类型必须统一;数组的长度在程序运行期间不可改变;
二、数组初始化
1. 动态初始化(指定长度)
1. 格式
数组类型[] 数组名称 = new 数组类型[数组长度]
2. 解析含义
左侧数据类型:也就是数组当中保存的数据,全都是统一的什么类型
左侧中括号:代表我是一个数组
左侧数组名称:给数组取个名字
右侧new:创建数组的动作
右侧数据类型:必须和左侧数据类型保持一致
右侧中括号长度:也就是数组当中,到底可以保存多少个数据,是一个int数字
3. 创建数组
int[] arrayA = new int[300];
4. 拆分
int[] arrayC;
arrayC = new int[5];
2. 静态初始化(指定内容)
1. 格式
数据类型[] 数组名称 = new 数据类型[]{元素1, 元素2,...};
2. 创建数组
int[] arrayA = new int[]{5, 15};
1. 省略静态初始化
int[] arrayA = {10, 20};
2. 静态标准初始化,拆分
int[] arrayB;
arrayB = new int[]{19, 2, 0};
3. 注意事项
- 静态初始化没有直接指定长度,但是仍然会自动推算得到长度
- 静态/动态初始化标准格式可拆分两个步骤
- 静态初始化一旦使用省略格式,就不能才分成两个步骤
- 建议,不确定数组中的具体内容,使用动态初始化;否则,已确定了具体内容使用静态;
三、数组访问
int[] array = {10, 20, 30};
System.out.println(array); // [I@7498736 数组的内存地址
// 访问数组元素格式:数组名称[索引值]
System.out.println(array[0]);
// 使用动态初始化数组时,其中元素会自动拥有一个默认值;静态初始化时页有默认值过程,只是系统自动将默认值替换了大括号中的具体值。
// 整数 0;浮点 0.0;字符 '\u0000';布尔 false;引用类型 null;
int[] array = new int[3];
四、java的内存
java 的内存划分为5个部分:
- 栈内存(stack):存放的都是方法中的局部变量。方法的运行一定要在栈当中
- 局部变量:方法的参数,或者方法{ }内部变量
- 作用域:一旦超出作用域,立刻从栈内存中消失
- 堆内存(heap):凡是new出来的东西,都在堆当中。
- 堆内存里面的东西都有一个地址值:16进制
- 堆内存里面的数据,都有一个默认值。规则如上
- 方法区(method area):存储 .class相关信息,包含方法的信息
- 本地方法栈(native method stack):与操作系统相关
- 寄存器(pc register):与CPU相关
五、数组常见异常
1. 数组长度越界异常:ArrayIndexOutOfBoundsException
2. 空指针异常:NullPointerExcetion
数组必须进行new初始化才能使用其中的元素;
如果只是赋值了一个null,没有进行new创建,那么会发生空指针异常。
六、数组方法
1. 获取数组长度
数组名称.length;
int[] arrayA = {1, 2, 3};
int len = arrayA.length;
数组一旦创建,程序运行期间,长度不可改变。
2. 遍历数组
int[] arrayA = {1, 2, 3, 4, 5};
for(int i = 0; i < arrayA.length; i++){
System.out.println(arrayA[i]);
}
// 求最大值
public class ArrayDemo3 {
public static void main(String[] args) {
//定义一个数组存放指定元素
int[] arr = {1,2,3,4,5,6,6};
//假设第一个元素是最大值
int sum = arr[0];
//for循环遍历数组中元素,每次循环跟数组索引为0的元素比较大小
for (int i = 0; i < arr.length; i++){
if (sum < arr[i]){
//数组中的元素跟sum比较,比sum大就把它赋值给sum作为新的比较值
sum = arr[i];
}
}
System.out.println(sum);
}
}
3. 数组元素反转
public class ArrayDemo {
public static void main(String[] args) {
for(int min=0, max=array.length-1; min < max; min++, max--){
int temp = array[min];
array[min] = array[max];
array[max] = temp;
}
}
}
4. 数组作为返回值
public class ArrayDemo {
public static void main(String[] args) {
int[] result = calculate(1, 2, 3);
System.out.println(result[0]);
}
public static int[] calculate(int a, int b, int c){
int sum = a + b + c;
int avg = sum / 3;
int[] array1 = {sum, avg};
return array1;
}
}
7. java 数组概念的更多相关文章
- java数组---概念
1.数组的定义 数组是相同类型数据的有序集合.数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成.其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们. 2.数组的建 ...
- java 数组的基本概念
1.数组的基本概念 数组指的是一组相关变量的集合.例如:如果说现在要定义100个整型变量,如果按照我们以前的思路,我们可能这样定义: public class demo { public static ...
- java 基础概念 -- 数组与内存控制
问题1: Java在声明数组的过程中,是怎样分配内存的? 在栈内存中 建一个数组变量,再在堆内存中 建一个 数组对象.至于详细的内存分配细节,还得看 该初始化是 数组动态初始化 还是 数组静态初始化. ...
- java数组学习
1. java数组的静态特性: java是静态语言,java中数组的长度是固定的.还有,数组元素的类型也是在定义时指定了的. 2. java数组里的关键词: 数组变 ...
- 【Java学习笔记之五】java数组详解
数组 概念 同一种类型数据的集合.其实数组就是一个容器. 数组的好处 可以自动给数组中的元素从0开始编号,方便操作这些元素. 格式1: 元素类型[] 数组名 = new 元素类型[元素个数或数组长度] ...
- 有关JVM处理Java数组方法的思考
在Java中,获取数组的长度和String的长度是两种不同的方法,这引起了本文作者的一番思考.本文从JVM的角度,探讨了Java数组在JVM中是什么对象,有哪些成员,以及声明方法. 作者:jarfie ...
- 七、java数组
目录 一.一维数组 声明方式 数组对象的创建 元素为引用数据类型的数组 数组初始化 数组元素默认初始化 数组元素的引用 二.二维数组 概念 初始化 二维数组举例 三.数组的拷贝 四.练习 数组可以堪称 ...
- Java数组的基本讲解
由于Java数组涵盖的内容比较多,这里从个人的角度对主要的内容进行相关的讲解. 如有不足,欢迎批评指正~ 1)Java数组是动态还是静态的啊? Java语言是典型的静态语言,由此推断Java数 ...
- Java数组定义及初始化
数组定义及初始化 数组这玩意是一种用于存放数据最常见数据结构. 数组的的概念及注意点 数组要求所有的数组元素具有相同的数据类型,且只能存在一种数据类型,要多专一有多专一. 数据类型既可以是基本类型也可 ...
随机推荐
- PHP命令执行漏洞初探
PHP命令执行漏洞初探 Mirror王宇阳 by PHP 命令执行 PHP提供如下函数用于执行外部应用程序:例如:system().shell_exec().exec().passthru() sys ...
- Linux中jar包启动和jar包后台运行
Linux 运行jar包命令如下: 方式一: java -jar shareniu.jar 特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出 那如何让窗口不锁定? ...
- java程序猿工具
1.做为一个程序员打字最重要 指法打字练习软件:http://home.bdqn.cn/thread-11142-1-1.html 2.JDK必不可少 JDK6.X下载 JDK ...
- s3c2440裸机-代码重定位(2.编程实现代码重定位)
代码重定位(2.编程实现代码重定位) 1.引入链接脚本 我们上一节讲述了为什么要重定位代码,那么怎么去重定位代码呢? 上一节我们发现"arm-linux-ld -Ttext 0 -Tdata ...
- Codeforces Round #604(Div. 2,
// https://codeforces.com/contest/1265/problem/D /* 感觉像是遍历的思维构造题 有思路就很好做的 可以把该题想象成过山车或者山峰...... */ # ...
- java之集合工具类Collections
Collections类简介 java.utils.Collections 是集合工具类,用来对集合进行操作.此类完全由在 collection 上进行操作或返回 collection 的静态方法组成 ...
- core-js@3带来的惊喜
core-js 这个名词肯定很多人没听过,今天也是在配置babelpolyfill方法发现的 起因 在使用useBuiltIns:usage按需加载polyfill时,npm run build,就出 ...
- java之封装
java中通过将成员变量声明为private,再提供公共的public方法:setXxx()和getXxx()实现对该属性的操作,以实现以下目的: 隐藏一个类中不需要对外提供的实现: 使用者只能通过事 ...
- 【docker部署】基于linux的centos操作系统部署安装docker容器
一.docker介绍 容器是轻量级的,包含应用运行所需所有东西(代码.库.运行时环境.系统设置,以及依赖关系)的独立的包.每个容器都部署于它自己的 CPU.内存.块 I/O,以及网络资源上,所有这些都 ...
- PHP 将内容写入word pdf 换行符不生效咋办
答:把单引号换成双引号就能解析换行符(\n)了,