一、数组概念

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

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

二、数组初始化

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. 小程序实现日期时间控件picker

    小程序自带的组件中有日期跟时间的picker,但就缺个日期时间picker组件,那没办法,只能自己弄一个,这个组件不是很难,比较难的地方是要根据不同年份(是否闰年)跟月份决定一个月里有多少天. 我直接 ...

  2. 关于for循环中使用setTimeout的四种解决方案

    我们先来简单了解一下setTimeout延时器的运行机制.setTimeout会先将回调函数放到等待队列中,等待区域内其他主程序执行完毕后,按时间顺序先进先出执行回调函数.本质上是作用域的问题. 因此 ...

  3. CVE-2019-0708漏洞复现

    前言: 该漏洞前段时间已经热闹了好一阵子了,HW期间更是使用此漏洞来进行钓鱼等一系列活动,可为大家也是对此漏洞的关心程度,接下里就简单的演示下利用此漏洞进行DOS攻击.当然还有RCE的操作,这只演示下 ...

  4. Windows下Kafka 2.3.0的下载和安装

    Kafka是由Apache软件基金会开发的一个开源流处理平台,是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据. 特性:(1)通过O(1)的磁盘数据结构提供消息的持久化 ...

  5. LeetCode刷题191126

    博主渣渣一枚,刷刷leetcode给自己瞅瞅,大神们由更好方法还望不吝赐教.题目及解法来自于力扣(LeetCode),传送门. 今天状态不好,划水第二天. 算法: 题号:20 给定一个只包括 '(', ...

  6. 深挖的Java源代码之Integer.parseInt()vs Integer.valueOf()

    Integer.parseInt()和Integer.valueOf()都是用来将String转换为Int的,但是为什么Java会提供两个这样的方法呢,他们如果是同样的操作,岂不是多此一举? 我们来深 ...

  7. 桶排序(C语言)

    #include <stdio.h> int main(void) { int arr[5]={2,5,1,3,3}; //定义需要排序的数组 int res[6]={0}; //初始化& ...

  8. [PHP]关于连接MySQL的问题

    概述 PHP中无论使用MySQL函数抑或PDO连接MySQL服务器,都允许有两种方式,一是通过TCP网络层,一是通过unix socket: PHP并没有给出指明用何种方式去连接数据库,决定使用何种方 ...

  9. FFT/NTT中档题总结

    被DeepinC%怕了,把一些题放到这里来 T1Normal 其实这道题放到中档题也不太合适,个人感觉真的很难,机房里好像都是颓的题解 因为期望的可加性,把每个点的贡献单独处理,即求期望深度 考虑$y ...

  10. 关于 Comparable 的使用

    作为一名刚上路的超初级程序员,今天终于可以迈开自己的第一步,写一篇博客.把我自己都感动哭了. 今天看面试题时看到了一个Comparable 的使用,才发现自己好像并没有使用过这个接口,具体这个接口是怎 ...