一、数组概念

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

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

二、数组初始化

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. C#面向对象-多态

    面向对象的三大特性(封装,继承,多态)大多少人都应该知道.前两个的话比较容易理解.本文主要说一下面向对象中的多态. 什么是多态?不同的对象对同一操作,产生不同的执行结果.这就是多态.那么多态又包含了: ...

  2. 搭建自己的企业级镜像仓库-Harbor

    网上资料很多,在这记录一下思路 1 安装Docker 2 安装Docker Compose apt-get install docker-compose3 下载最新版Harbor在线安装包,例如 ha ...

  3. VueUI -- iView4.0简单使用

    一.iView(View UI) 1.简介 官网:https://www.iviewui.com/ 仓库:https://github.com/view-design/ViewUI iView 与 V ...

  4. Android8.1 SystemUI源码分析之 Notification流程

    代码流程 1.先看UI显示,StatuBar加载 CollapsedStatusBarFragment 替换 status_bar_container(状态栏通知显示区域) SystemUI\src\ ...

  5. VUE组件 之 Drawer 抽屉

    注:因为项目中用的是 element-ui 框架,而这个框架并没有抽屉组件,所以自己实现一个. 一.源码地址 https://github.com/imxiaoer/DrawerForVue 二.效果 ...

  6. MySQL 8.0部分弃用的参数整理

    最近整理了一下MySQL 8.0的自动化安装,其中用到了一个MySQL 5.7版本的自定义配置文件,由于没有对(MySQL 8.0)做针对性修改,导致安装过程中出现了一些错误其中部分原因就是MySQL ...

  7. web攻击与防御技术--SQL注入

    sql注入是WEB安全中比较重要而复杂的一个东西.而且危害性比较大. 一般来讲SQL注入的话首先要识别注入点.一个是看能不能注入另外一个是看是什么类型的注入比如说字符,数字,搜索(?)等等 GET.P ...

  8. error: (-210:Unsupported format or combination of formats) [Start]FindContours supports only CV_8UC1 images when mode != CV_RETR_FLOODFILL otherwise supports CV_32SC1 images only in

    问题: error: (-210:Unsupported format or combination of formats) [Start]FindContours supports only CV_ ...

  9. Java学习笔记之面向对象、static关键字

    一周Java学习总结 今天就总结理清一下关于面向对象和面向过程的程序设计的一些不同特点,以及讲下static关键字. 面向对象 现在接触的Java是面向对象的,现在的程序开发几乎都是以面向对象为基础的 ...

  10. ROS基础-基本概念和简单工具(1)

    1.什么是ROS? Robot operating System ,简单说机器人操作系统,弱耦合的分布式进程框架,通过进程间的消息传递和管理.实现硬件抽象和设备控制. 2.节点(node) node ...