day05【数组】
day05【数组】
1.数组
- 概念:是一种容器,可以同时存放多个数据。
- 特点:
- 数组是一种引用数据类型
- 数组当中的多个数据,类型必须统一
- 数组的长度在程序的运行期间不可改变
- 初始化:在内存当中创建一个数组,并且向其中赋予一些默认值。
- 两种常见的初始化方式:
- 动态初始化(指定长度):在创建数组的时候,直接指定数组当中的多个元素。
- 静态初始化(指定内容):在初始话的时候,不直接指定数据多少个,而是直接将数据的内容进行指定。
2.动态初始化
动态初始化数组的格式:
数据类型【】 数组名称 = new 数据类型【数组长度】;
解析含义:
左侧数据类型:也就是数组当中保存的数据,全都是统一的数据类型。
左侧的中括号:代表我是一个数组。
左侧数组名称:给数组取一个名字
右侧的new:代表创建数组的动作
右侧的数据类型:必须和左侧的数据类型保持一致。
右侧中括号的长度:也就是数组当中可以存多好个数据,是一个int数字。
3.静态初始化
基本格式:
数据类型 数组名称 = new 数据类型[]{元素1,元素2,.....};
注意事项:
虽然静态初始化没有直接告诉长度,但是根据大括号里面的元素具体内容,也可以自动推算出长度。
4.省略格式
使用静态初始化数组的时候,格式可以省略
静态初始化标准格式:
数据类型【】 数组名称 = new 数据类型【】{元素1,元素2,。。。。}
省略格式:
数据类型【】 数组名称 = {元素1,元素2、、}
注意事项:
- 静态初始化没有直接指定长度,但是仍然会自动推算长度。
- 静态初始化的标准格式可以拆分为两个步骤。
- 动态初始化也可以拆分为两个步骤。
- 静态初始化一旦使用省略格式,就不能拆分为两个步骤。
使用建议:
如果不确定数组当中的具体内容,用动态初始化;否则,已经确定了具体内容,用静态初始化.
5.访问数组元素
直接打印数组名称,得到的是数组对应的:内存地址哈希值。
二进制:01
十进制:0123456789
十六进制:0123456789abc
访问数组元素的格式:数组名称【索引值】
索引值:就说一个int数字,代表数组当中元素的编号。
【注意】索引值从0开始。一直到“数组的长度减一”为止。
6.访问数组元素进行赋值
使用动态初始化数组的时候,其中的元素将会自动拥有一个默认值。规则如下:
- 如果是正数类型,那么默认值为0;
- 如果是浮点类型,那么默认值为0.0;
- 如果是字符类型,那么默认值为‘\u0000’;
- 如果是布尔类型,那么默认值为false;
- 如果是引用类型,那么默认值为null;
注意事项:
静态初始化其实也有默认值的过程,系统自动马上将默认值替换成了大括号当中的具体内容。
7.java中内存的划分
栈(stack):存放的都是方法中的局部变量。方法的运行一定要在栈当中运行。
局部变量:方法的参数,或者是方法{}内部的变量
作用域:一旦超出作用域,立刻从占内存当中消失。
堆(Heap):凡是new出来的东西,都在堆当中。
堆内存中的东西都有一个地址值:16进制
堆内存里的数据,都有默认值。规则:
如果是整数 默认值为0
如果是浮点数 默认值为0.0
如果是字符 默认值为'\u0000'
如果是布尔 默认值为false
如果是引用类型 默认值为null
方法区(Method Area):存储 .class相关信息,包含方法的信息。
本地方法栈(Native Method Stack):与操作系统相关。
寄存器(pc Register):与CPU相关。
8.一个数组内存图
9.两个数组的内存图
10.两个引用指向同一个数组
11.常见问题_数组索引越界
数组的索引编号从0开始,一直到"数组长度-1"为止.
如果访问数组元素的时候,索引编号并不存在,那么将会发生数组索引越界异常
ArrayIndexOutOfBoundsException
原因:索引编号写错了.
解决:修改成为存在的正确索引编号.
12.空指针异常
所有引用类型变量,都可以赋值为一个null值,但是代表其中什么都没有。
数组必须通过new初始化才能使用其中元素。
如果只是赋值了一个null,没有进行new创建。
那么将会发生:
空指针异常 NullPointerException
原因:忘了new
解决:补上new
13.获取数组的长度
如何获取数组的长度,格式:
数组名称.Length
这将会得到一个int数字,代表数组长度。
数组一旦创建,程序运行期间,长度不可改变。
14.数组遍历输出
for循环快捷输入x(循环次数).fori
动态初始化(指定长度)数组的格式
数据类型[] 数组名称 = new 数据类型[数组长度] ;
静态初始化(指定内容)数组的格式:
数据类型[] 数组名称 = new 数据类型[]{指定内容} ;
17.数组作为方法参数
数组可以作为方法参数。
当调用方法的时候,向方法的小括号进行传参,传递进去的其实是地址值。
18.数组作为方法的返回值
一个方法可以有0、1、多个参数;但是只有0或者1个返回值,不能有多个返回值。
如果希望一个返回值当中产生多个数据类型并进行返回,怎么办?
解决方案:使用一个数组作为返回值类型即可
任何数据类型都能作为方法的参数类型,或者返回值类型。
数组作为方法的参数,传递进去的其实就是数组的地址值。
数组作为方法的
day05【数组】的更多相关文章
- day05:数组与字典常识(20170217)
#1:数组功能的使用:print ("a4A".isdecimal()) #print ("18".isdigit()) #判断是否是数字print (&quo ...
- day05<Java语言基础--数组>
Java语言基础(数组概述和定义格式说明) Java语言基础(数组的初始化动态初始化) Java语言基础(Java中的内存分配以及栈和堆的区别) Java语言基础(数组的内存图解1一个数组) Java ...
- Day05:循环问题 / 数组
循环嵌套 循环结构中包含完整的循环结构. 注意: 循环嵌套不限层次 各种循环语句都可以互相嵌套 内层循环中出现的break和continue只作用在内层循环中 外层循环循环一次 内层循环循环一遍 Ja ...
- JAVAEE学习day05学习,数组
容器及元素的概念 容器:是将多个数据存储到一起 元素:每个数据称为该容器的元素 数组的概念 数组:数组是长度固定,存储数据的容器,保证多个数据的类型要一致 数组定义格式及其描述 动态定义: 数据类型 ...
- day05 Java_循环_基本类型数组
精华笔记: 循环结构: for结构:应用率高.与次数相关的循环 三种循环结构的选择规则: 先看循环是否与次数相关: 若相关----------------------------直接上for 若无关, ...
- day05-java-(循环问题,数组)
day05-java-(循环问题,数组) 1.三种循环结构的更佳适用情况: 1)while: "当..."循环 2)do...while: "直到..."循 ...
- 005.数组、for、foreach
1.方法的传输传递 值参数:传递的是副本 引用参数:自身 保留自定义的方法中对值的改变 形参影响实参ref:对应的形参和实参都用ref修饰 输出参数:实参不用赋值,但是自定义方法内必须对此参数赋值!! ...
- day05(Object,tostring(),equals(),System,Date,SimpleDateFormat,拆装箱,正则表达式)
Object类, 是所应类的父类: 拥有自己的方法:常用的 红颜色标记的为常用的方法 toString() 用法:打印对象的地址值 getClass() 获取当前类的字节码文件getName() ...
- Day05 xml详解
day05总结 今日内容 XML语法 XML约束之DTD XML解析器介绍 XML解析之JAXP( DOM.SAX ) DOM4J Schema 一.XML语法 XML概述 1 什么是XML ...
随机推荐
- Vue____实现本地代码推送到云端仓库的相关操作
项目初始化搭建完毕,每进行一个功能模块开发的必备操作,目的是方便协同开发以及备份代码 一.每开发一个新功能,都应该创建一个新分枝,待该功能模块开发完成以后,再合并到主分支master中,具体步骤如下: ...
- 第二阶段:4.商业需求文档MRD:6.PRD-其他需求
- APP数据采集--基础配置
一.首先需要下载fiddler,可以直接在官网下载最新版呢 二.设置允许抓取HTTPS数据: 打开已经下载好了的fiddler,打开在工具栏中的Tools,之后在HTTPS的工具栏下面进行如下的设置 ...
- yum回滚至Kubernetes1.15.7版本
背景:升级Kubernetes版本从1.14.1-->1.17.0,官方说明不能跨版本升级,所以只好一个版本一个版本升级.最终升到1.17.0后发现API的格式有改动,之前的中间件版本很多不支持 ...
- JavaScript | ES6 新增
Evernote Export body, td { font-family: 微软雅黑; font-size: 10pt; } ES6 重点知识 this关键字以及bind let/const 变量 ...
- SqlBulkCopy批量插入和索引的关系
.net中批量插入基本都用SqlBulkCopy,速度很快,但是这几天发现个问题,2000数据居然15s,百思不得其解.经过大量测试,发现过多的索引和索引碎片会严重影响插入速度,表的数据量大小反而不会 ...
- Web 3D是否需要WebAssembly?
大家好,本文讨论了Web 3D是否需要WebAssembly,结论是: 对于使用原生3D技术的程序员,需要: 对于使用Javascript语言的前端程序员,不需要,有其它方法可以达到接近WebAssd ...
- Go Web 编程之 模板(一)
概述 模板引擎是 Web 编程中必不可少的一个组件.模板能分离逻辑和数据,使得逻辑简洁清晰,并且模板可复用.引用第二篇文章<程序结构>一文中的图示,我们可以看到模板引擎在 Web 程序结构 ...
- 搞定SpringBoot多数据源(2):动态数据源
目录 1. 引言 2. 动态数据源流程说明 3. 实现动态数据源 3.1 说明及数据源配置 3.1.1 包结构说明 3.1.2 数据库连接信息配置 3.1.3 数据源配置 3.2 动态数据源设置 3. ...
- CentOS6.8 LAMP
第一次配置LAMP运行环境,上网查询了很多资料,一边试命令一边学习.服务器重置了很多次. 虽然有OneinStack这个方便的网站一键命令部署,但知道这个网站却是我自己踩坑之后的事情了,故此记录. 1 ...