一、数组概念

​ 数组:是一种容器,可以同时存放多个数据值;

​ 特点:数组是一种引用类型;数组中多个数据,类型必须统一;数组的长度在程序运行期间不可改变;

二、数组初始化

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个部分:

  1. 栈内存(stack):存放的都是方法中的局部变量。方法的运行一定要在栈当中

    • 局部变量:方法的参数,或者方法{ }内部变量
    • 作用域:一旦超出作用域,立刻从栈内存中消失
  2. 堆内存(heap):凡是new出来的东西,都在堆当中。
    • 堆内存里面的东西都有一个地址值:16进制
    • 堆内存里面的数据,都有一个默认值。规则如上
  3. 方法区(method area):存储 .class相关信息,包含方法的信息
  4. 本地方法栈(native method stack):与操作系统相关
  5. 寄存器(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 数组概念的更多相关文章

  1. java数组---概念

    1.数组的定义 数组是相同类型数据的有序集合.数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成.其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们. 2.数组的建 ...

  2. java 数组的基本概念

    1.数组的基本概念 数组指的是一组相关变量的集合.例如:如果说现在要定义100个整型变量,如果按照我们以前的思路,我们可能这样定义: public class demo { public static ...

  3. java 基础概念 -- 数组与内存控制

    问题1: Java在声明数组的过程中,是怎样分配内存的? 在栈内存中 建一个数组变量,再在堆内存中 建一个 数组对象.至于详细的内存分配细节,还得看 该初始化是 数组动态初始化 还是 数组静态初始化. ...

  4. java数组学习

    1. java数组的静态特性:          java是静态语言,java中数组的长度是固定的.还有,数组元素的类型也是在定义时指定了的. 2. java数组里的关键词:          数组变 ...

  5. 【Java学习笔记之五】java数组详解

    数组 概念 同一种类型数据的集合.其实数组就是一个容器. 数组的好处 可以自动给数组中的元素从0开始编号,方便操作这些元素. 格式1: 元素类型[] 数组名 = new 元素类型[元素个数或数组长度] ...

  6. 有关JVM处理Java数组方法的思考

    在Java中,获取数组的长度和String的长度是两种不同的方法,这引起了本文作者的一番思考.本文从JVM的角度,探讨了Java数组在JVM中是什么对象,有哪些成员,以及声明方法. 作者:jarfie ...

  7. 七、java数组

    目录 一.一维数组 声明方式 数组对象的创建 元素为引用数据类型的数组 数组初始化 数组元素默认初始化 数组元素的引用 二.二维数组 概念 初始化 二维数组举例 三.数组的拷贝 四.练习 数组可以堪称 ...

  8. Java数组的基本讲解

    由于Java数组涵盖的内容比较多,这里从个人的角度对主要的内容进行相关的讲解. 如有不足,欢迎批评指正~ 1)Java数组是动态还是静态的啊?     Java语言是典型的静态语言,由此推断Java数 ...

  9. Java数组定义及初始化

    数组定义及初始化 数组这玩意是一种用于存放数据最常见数据结构. 数组的的概念及注意点 数组要求所有的数组元素具有相同的数据类型,且只能存在一种数据类型,要多专一有多专一. 数据类型既可以是基本类型也可 ...

随机推荐

  1. React 组件的生命周期方法

    React 组件的生命周期方法 按渲染顺序: 1: componentWillMount() – 在渲染之前执行,在客户端和服务器端都会执行. 2: componentDidMount() – 仅在第 ...

  2. Dubbo学习系列之十(Sentinel之限流与降级)

    各位看官,先提个问题,如果让你设计一套秒杀系统,核心要点是啥???我认为有三点:缓存.限流和分离.想当年12306大面积崩溃,还有如今的微博整体宕机情况,感觉就是限流降级没做好,"用有限的资 ...

  3. python 调试大法

    说在前面 我觉得没有什么错误是调试器无法解决的,如果没有,那我再说一遍,如果有,那当我没说 一.抛出异常 可以通过 raise 语句抛出异常,使程序在我们已经知道的缺陷处停下,并进入到 except ...

  4. [css display],table待续

    昨天复习了flex布局,今天打算继续,才发现有display:table,今天有的点,别的先写上,其他的后补吧 css display // none 此元素不会被显示. // block 此元素将显 ...

  5. Dynamics 365客户端编程示例:两个选项集字段的联动

    我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...

  6. 数据库三,exec内置函数

    数据库三,exec内置函数 一.数据库查询与执行顺序 必备知识 查询语句的基本操作 - select - from - where - group by - having - distinct - o ...

  7. Ubuntu下配置IP地址

    17.10版本之前: Ubuntu的网卡配置文件跟CentOS的不一样,Ubuntu的网卡配置文件是/etc/network/interfaces.我们用vi /etc/network/interfa ...

  8. centos8 安装 nginx

    http://nginx.org/ NGINX官网 创建文件夹mkdir nginx进入创建的文件夹 根据自己需要下载合适版本 通过 wget http://nginx.org/download/ng ...

  9. LuaSocket 学习笔记

    --- LUA SocketLib 和 协程 前言: 这是一篇译文(The LUA SocketLib and the Coroutines),有删改,原文见下方链接. 简介 目标读者:会使用 LUA ...

  10. 误区以为父组件render一次,子组件会重新初始化

    初学react的时候我有一个误区,以为父组件render的一次,会将子组件先卸载,再将子组件重新初始化,事实证明不是. 这是对react生命周期函数不太清楚. 父子组件都初始化后,父组件再render ...