初识java中数组、数组在内存中、越界异常、空指针异常

数组:

当存储多个数据时,此时可能会使用多个变量,这样不断声明变量会很麻烦,而这些变量都有相似的特性,因此我们可以将它们存放到一个容器中,统一处理。

容器:是将多个数据存储到一起,每个数据称为该容器的元素。

数组概念: 数组是存储数据的容器,多个数据的数据类型一致。

数组特性:数组是一种引用类型数据、数组中多个数据的类型一致、数组的长度在程序运行期间不可改变、

数组初始化:在内存中创建一个数组,并向其中赋些默认的值;初始化数组的方式有两种:动态初始化(指定数组长度)、静态初始化(不指定数组长度,自动推算长度,直接指定内容)。

public class Arrays {public static void main(String[] args){// 1.动态初始化数组的格式:数据类型[] 数组名 = new 数据类型[数组长度];// 左侧数据类型:数组当中保存的数据的类型,且数据类型一致。// 左侧中括号:代表一个数组// 左侧数组名:给初始化的这个数组一个变量名。// 右侧的关键字new:表示创建的动作。// 右侧数据类型:和左侧数据类型保持一致// 右侧中括号中数组长度:一个整数型数字,表示数组中元素的个数。int[] arrInt = new int[5];//创建了一个数据类型为int数组长度为5的数组arrString[] arrString = new String[10];//创建了一个数据类型为String数组长度为10的数组arrString// 2.静态初始化数组的格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...};其简写格式:数据类型[] 数组名 = {元素1,元素2,...};int[] arrnum = new int[]{1,2,3,4,5};//创建了一个数组元素为:1,2,3,4,5的数组arrnum,其数组长度为5String[] arrHello = {"hello","world","my","name","is","kuhai"};//使用数组的简写格式定义一个数组arrHello,简写方式不支持将数组拆分后再赋值给变量的形式定义数组,如:int arr;arr = {1,2},编译器无法解析;System.out.println(arrHello);//[Ljava.lang.String;@6d1e7682,直接打印数组会的到一个内存地址哈希值。// 3.访问数组中的元素:直接打印数组会得到一个内存地址哈希值,想要访问到数组中的具体元素,其方法是:数组名[索引],索引为整型从0开始到数组长度-1,0表示数组的第一个元素,后面的因此类推,如:int[] arraynum =new int[]{1,2,3,4};System.out.println(arraynum[0]);//1System.out.println(arraynum[arraynum.length-1]);//4,arraynum.length表示数组的长度,length表示长度,通过点.访问数组的这个属性。// 4.动态初始化的数组默认每一项都有相同的值(int类型默认值为:0、浮点型默认为:0.0、字符型默认为:'/u0000'、布尔型默认为:false、引用型默认为:null),如:int[] arrayone = new int[2];System.out.println(arrayone[0]);//0System.out.println(arrayone[1]);//0// 给动态初始化的数组元素赋值后,可以修改默认值,其格式为:数组名[索引]=值,如:arrayone[0] = 2;arrayone[1] = 5;System.out.println(arrayone[0]);//2,赋值后,默认值被修改了System.out.println(arrayone[1]);//5}
}

Java虚拟机的内存划分:

为了提高运算效率,对空间进行不同区域的划分,每一片区域都有特定的处理数据方式和内存管理方式。

JVM的内存划分:
在这里插入图片描述
在这里插入图片描述
数组存储在内存中:
在这里插入图片描述
两个数组在内存中

public static void main(String[] args) {int[] arr = new int[3];int[] arr2 = new int[2];System.out.println(arr);System.out.println(arr2);
}

在这里插入图片描述

两变量指向同一地址

public static void main(String[] args) {// 定义数组,存储3个元素int[] arr = new int[3];//数组索引进行赋值arr[0] = 5;arr[1] = 6;arr[2] = 7;//输出3个索引上的元素值System.out.println(arr[0]);System.out.println(arr[1]);System.out.println(arr[2]);//定义数组变量arr2,将arr的地址赋值给arr2int[] arr2 = arr;arr2[1] = 9;System.out.println(arr[1]);
}

在这里插入图片描述
遍历数组及越界异常、空指针异常

public class Arraytest {public static void main(String[] args){// 1.两个变量指向同一地址:当两个变量指向同一地址时,这两个变量都可以修改内存中的数据,如:int[] arr1 = new int[]{1,2};int[] arr2 = arr1;System.out.println(arr2[1]);//2arr2[1] = 5;System.out.println(arr1[1]);//5arr1[0] = 3;System.out.println(arr2[0]);//3// 2.遍历数组:for(int i = 0; i < arr1.length; i++){System.out.println("arr1中第" + (i+1) + "个元素为:" + arr1[i]);}// 3.数组越界访问异常:访问一个数组中超出数组长度-1的索引的元素时会报:ArrayIndexOutOfBoundsException,表示数组索引越界异常,异常后面的代码将不再执行System.out.println(arr1[2]);//Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 at Arraytest.main(Arraytest.java:13)// 4.数组空指针异常:当给一个数组变量没有初始化,而是给null值,null表示什么也没有,此时会发生空指针异常,异常后面的代码将不再执行int[] arr3 = null;System.out.println(arr3[2]);//Exception in thread "main" java.lang.NullPointerException at Arraytest.main(Arraytest.java:17)System.out.println("arr3[2]");//Exception in thread "main" java.lang.NullPointerException at Arraytest.main(Arraytest.java:17)}
}

提示:本文图片等素材来源于网络,若有侵权,请发邮件至邮箱:810665436@qq.com联系笔者删除。
笔者:苦海

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/575222.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

异常处理python 空气质量问题_python的异常处理

异常处理什么是异常&#xff1f;首先要清楚&#xff0c;什么是异常&#xff0c;异常就是程序运行时发生错误的信号(在程序出现错误时&#xff0c;则会产生一个异常&#xff0c;若程序没有处理它&#xff0c;则会抛出该异常&#xff0c;程序的运行也随之终止)&#xff0c;在pyth…

cad小插件文字刷_文字狗最佳排版神器 小恐龙公文排版助手Office WPS插件

文字狗最佳排版神器文字狗最佳排版神器 小恐龙公文排版助手Office WPS插件1.85最新版 无需注册、无需其他费用、无广告。相信大家所需要提交的各种论文、报告等Word文档都对格式有着非常严格的要求&#xff0c;对标题、目录、正文都有不同的要求。尤其是对于公文&#xff0c;要…

Java中的对象、private关键字、this关键字、构造方法

面向对象 概述&#xff1a;Java一种面向对象的程序设计语言&#xff0c;面向对象思想是一种程序设计思想&#xff0c;在面向对象思想的指引下&#xff0c;使用Java语言去设计、开发计算机程序。 这里的对象泛指现实中一切事物&#xff0c;每种事物都具备自己的属性和行为。 …

2060显卡驱动最新版本_教程:怎么安装更新NVIDIAAMD显卡驱动?

PART-1:装驱动这么简单的事情真的需要写教程吗&#xff1f;我自己都理解不了我为什么要写这样一个教程&#xff0c;但是如你所见&#xff0c;他确实被我写出来了&#xff0c;而且对大部分人都挺有用。首先&#xff0c;使用鲁大师以及驱动精灵这类软件的同学自己喜欢就好&#x…

mysql 两个时间相差大于24小时的数据_MySQL 主从同步延迟的原因及解决办法(仅学习)...

原文链接&#xff1a;https://blog.csdn.net/hao_yunfeng/article/details/82392261Mysql主从基本原理&#xff0c;主要形式以及主从同步延迟原理 (读写分离)导致主库从库数据不一致问题的及解决方案 一、主从数据库的区别 从数据库(Slave)是主数据库的备份&#xff0c;当主数据…

分形之万花筒

万花筒是一种光学玩具&#xff0c;只要往筒眼里一看&#xff0c;就会出现一朵美丽的“花”样。将它稍微转一下&#xff0c;又会出现另一种花的图案。不断地转&#xff0c;图案也在不断变化&#xff0c;所以叫“万花筒”。万花筒的图案是靠玻璃镜子反射而成的。它是由三面相交成…

mysql同步数据到另一张表_mysql:Otter跨机房数据同步(单向)

重要说明&#xff1a;需要同步的表必须要有主键 主键 主键otter是一款基于Java且免费、开源基于数据库增量日志解析&#xff0c;准实时同步到本机房或异地机房的mysql/oracle数据库的解决方案。Otter目前支持了什么1. 单向同步&#xff0c; mysql/oracle互相同步2. 双向同步&am…

04day1

无穷的数列 找规律 【问题描述】 有一个无穷序列如下&#xff1a; 110100100010000100000… 请你找出这个无穷序列中指定位置上的数字。 【输入】 第一行一个正整数 N&#xff0c;表示询问次数&#xff1b;接下来的 N 行每行一个正整数 Ai&#xff0c;Ai 表示在序列中的位置。 …

【转】Eclipse+CDT+Gcc编译选项控制

原文地址&#xff1a;http://www.oschina.net/question/4873_19441 如果我们的程序调用动态链接库&#xff0c;当在cdt中运行的时候&#xff0c;可以通过run-->enviroment-->添加LD_LIBRARY_PATH 环境变量来设置查找动态链接库文件的路径。但是在运行的时候&#xff0c;程…

apt ubuntu 指定ipv4_macOS 下使用 Docker 搭建 ubuntu 环境

学习网络开发过程中不想“污染”macOS&#xff0c;考虑到之后部署网络应用主要是与linux打交道&#xff0c;所以安装了 ubuntu 虚拟机以满足短期的知识学习需求。十里安装了 ubuntu 虚拟机&#xff0c;一般就是在 mac 中 ssh 连接 ubuntu 虚拟机在终端下进行操作学习&#xff0…

float去掉小数点之后_float类型的存储方式

在c语言中float函数是单精度的。它在内存中以二进制的形式存储。分为符号位&#xff0c;阶码与尾数三部分。 符号位最为简单&#xff0c;如果你存储的是正数那么符号数就是0。如果是负数&#xff0c;则为1。下面&#xff0c;我以13.625为例说明阶码与尾数的表示方法。首先&…

idea 2020.2 如何设置classpath_开发属于自己的第一款IDEA插件!

作者&#xff1a;木杉 http://imushan.com/写Java代码的时候&#xff0c;经常会涉及到重复性的操作&#xff0c;这个时候就会想要是有这样一个插件就好了&#xff0c;如果是大家都会遇到的场景&#xff0c;IDE或许已经提供了&#xff0c;再不然也有可能有人编写了相关的插件。要…

按15分钟取数据_Python爬取猫眼电影《飞驰人生》4万多条评论并对其进行数据分析...

前言文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。作者&#xff1a; Yura不说数据说 &#xff0c;PYuraLPS&#xff1a;如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http://note.youdao.c…

c++获取当前时间戳_python开发:python时间模块的使用

前言&#xff1a;今天元宵节&#xff0c;祝福大家元宵节快乐。今天在元宵节给各位朋友分享一下python时间模块。我们在开发中经常会与时间打交道&#xff0c;如&#xff1a;获取事件戳&#xff0c;时间戳的格式化等&#xff0c;这里简要记录一下python操作时间的方法。ython中常…

python 获取向上两级路径_Python学习第171课--相对路径和绝对路径

【每天几分钟&#xff0c;从零入门python编程的世界&#xff01;】这节我们补充2个概念&#xff1a;相对路径和绝对路径。●绝对路径就像一棵大树一样&#xff0c;从它的根开始&#xff0c;往上会有大的枝干&#xff0c;在大的枝干上面又会有小一点的树枝&#xff0c;小树枝上面…

百度热力图颜色说明_大数据下的龙港、鳌江人口热力图

大数据下的龙港、鳌江人口热力图--趋势显示&#xff0c;人口逐步集中于区域中心地区与城市 2020-08-25 大数据(big data)&#xff0c;是指无法在一定时间内用常规软件工具对其内容进行抓取、管理和处理的数据集合。大数据有五大特点&#xff0c;即大量(Volume)、高速(Velocity)…

python语言的单行注释以井号开头_【学习】Python语言入门

Python是一门具有强类型(即变量类型是强制要求的)、动态性、隐式类型(不需要做变量声明)、大小写敏感(var和VAR代表了不同的变量)以及面向对象(一切皆为对象)等特点的编程语言。 语法 Python中没有强制的语句终止字符&#xff0c;且代码块是通过缩进来指示的。缩进表示一个代码…

python 参数个数 同名函数_Python——函数的参数

函数的参数定义函数的时候&#xff0c;我们把参数的名字和位置确定下来&#xff0c;函数的接口定义就完成了。对于函数的调用者来说&#xff0c;只需要知道如何传递正确的参数&#xff0c;以及函数将返回什么样的值就够了&#xff0c;函数内部的复杂逻辑被封装起来&#xff0c;…

webview的

问题描述我给WEBVIEW加了等待的圆圈,怎么不起作用?布局文件:<?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:orientation"vertical"android:lay…