day05【数组】

1.数组

  • 概念:是一种容器,可以同时存放多个数据。
  • 特点:
    • 数组是一种引用数据类型
    • 数组当中的多个数据,类型必须统一
    • 数组的长度在程序的运行期间不可改变
  • 初始化:在内存当中创建一个数组,并且向其中赋予一些默认值。
  • 两种常见的初始化方式:
    • 动态初始化(指定长度):在创建数组的时候,直接指定数组当中的多个元素。
    • 静态初始化(指定内容):在初始话的时候,不直接指定数据多少个,而是直接将数据的内容进行指定。

2.动态初始化

动态初始化数组的格式:

数据类型【】 数组名称 = new 数据类型【数组长度】;

解析含义:

左侧数据类型:也就是数组当中保存的数据,全都是统一的数据类型。

左侧的中括号:代表我是一个数组。

左侧数组名称:给数组取一个名字

右侧的new:代表创建数组的动作

右侧的数据类型:必须和左侧的数据类型保持一致。

右侧中括号的长度:也就是数组当中可以存多好个数据,是一个int数字。

3.静态初始化

基本格式:

数据类型 数组名称 = new 数据类型[]{元素1,元素2,.....};

注意事项:

虽然静态初始化没有直接告诉长度,但是根据大括号里面的元素具体内容,也可以自动推算出长度。

4.省略格式

使用静态初始化数组的时候,格式可以省略

静态初始化标准格式:

数据类型【】 数组名称 = new 数据类型【】{元素1,元素2,。。。。}

省略格式:

数据类型【】 数组名称 = {元素1,元素2、、}

注意事项:

  1. 静态初始化没有直接指定长度,但是仍然会自动推算长度。
  2. 静态初始化的标准格式可以拆分为两个步骤。
  3. 动态初始化也可以拆分为两个步骤。
  4. 静态初始化一旦使用省略格式,就不能拆分为两个步骤。

使用建议:

如果不确定数组当中的具体内容,用动态初始化;否则,已经确定了具体内容,用静态初始化.

5.访问数组元素

直接打印数组名称,得到的是数组对应的:内存地址哈希值。

二进制:01

十进制:0123456789

十六进制:0123456789abc

访问数组元素的格式:数组名称【索引值】

索引值:就说一个int数字,代表数组当中元素的编号。

【注意】索引值从0开始。一直到“数组的长度减一”为止。

6.访问数组元素进行赋值

  1. 使用动态初始化数组的时候,其中的元素将会自动拥有一个默认值。规则如下:

    1. 如果是正数类型,那么默认值为0;
    2. 如果是浮点类型,那么默认值为0.0;
    3. 如果是字符类型,那么默认值为‘\u0000’;
    4. 如果是布尔类型,那么默认值为false;
    5. 如果是引用类型,那么默认值为null;
  2. 注意事项:

    静态初始化其实也有默认值的过程,系统自动马上将默认值替换成了大括号当中的具体内容。

7.java中内存的划分

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

    局部变量:方法的参数,或者是方法{}内部的变量

    作用域:一旦超出作用域,立刻从占内存当中消失。

  2. 堆(Heap):凡是new出来的东西,都在堆当中

    堆内存中的东西都有一个地址值:16进制

    堆内存里的数据,都有默认值。规则:

    如果是整数 默认值为0

    如果是浮点数 默认值为0.0

    如果是字符 默认值为'\u0000'

    如果是布尔 默认值为false

    如果是引用类型 默认值为null

  3. 方法区(Method Area)存储 .class相关信息,包含方法的信息。

  4. 本地方法栈(Native Method Stack):与操作系统相关。

  5. 寄存器(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【数组】的更多相关文章

  1. day05:数组与字典常识(20170217)

    #1:数组功能的使用:print ("a4A".isdecimal()) #print ("18".isdigit()) #判断是否是数字print (&quo ...

  2. day05<Java语言基础--数组>

    Java语言基础(数组概述和定义格式说明) Java语言基础(数组的初始化动态初始化) Java语言基础(Java中的内存分配以及栈和堆的区别) Java语言基础(数组的内存图解1一个数组) Java ...

  3. Day05:循环问题 / 数组

    循环嵌套 循环结构中包含完整的循环结构. 注意: 循环嵌套不限层次 各种循环语句都可以互相嵌套 内层循环中出现的break和continue只作用在内层循环中 外层循环循环一次 内层循环循环一遍 Ja ...

  4. JAVAEE学习day05学习,数组

    容器及元素的概念 容器:是将多个数据存储到一起 元素:每个数据称为该容器的元素 数组的概念 数组:数组是长度固定,存储数据的容器,保证多个数据的类型要一致 数组定义格式及其描述 动态定义: 数据类型 ...

  5. day05 Java_循环_基本类型数组

    精华笔记: 循环结构: for结构:应用率高.与次数相关的循环 三种循环结构的选择规则: 先看循环是否与次数相关: 若相关----------------------------直接上for 若无关, ...

  6. day05-java-(循环问题,数组)

    day05-java-(循环问题,数组) 1.三种循环结构的更佳适用情况:  1)while: "当..."循环  2)do...while: "直到..."循 ...

  7. 005.数组、for、foreach

    1.方法的传输传递 值参数:传递的是副本 引用参数:自身 保留自定义的方法中对值的改变 形参影响实参ref:对应的形参和实参都用ref修饰 输出参数:实参不用赋值,但是自定义方法内必须对此参数赋值!! ...

  8. day05(Object,tostring(),equals(),System,Date,SimpleDateFormat,拆装箱,正则表达式)

    Object类, 是所应类的父类: 拥有自己的方法:常用的    红颜色标记的为常用的方法 toString() 用法:打印对象的地址值 getClass() 获取当前类的字节码文件getName() ...

  9. Day05 xml详解

    day05总结 今日内容 XML语法 XML约束之DTD XML解析器介绍 XML解析之JAXP( DOM.SAX ) DOM4J Schema   一.XML语法 XML概述   1 什么是XML ...

随机推荐

  1. 第二阶段:4.商业需求文档MRD:1.PRD-产品功能列表

    这就是对功能清单的梳理已经优先级筛选

  2. OPEN GL

    https://blog.csdn.net/cdut100/article/details/45753227 https://www.jianshu.com/p/d22cf555de47 https: ...

  3. 使用git pull拉取代码的时候,无法拉取最新代码,报"unable to update local ref"错误。

    使用git pull拉取代码的时候,无法拉取最新代码,报"unable to update local ref"错误. 除了重新clone一份代码外,还可以使用如下解决方案: .切 ...

  4. 《美国纽约摄影学院摄影教材》PDF教材

        下载地址: 美国纽约摄影学院摄影教材(上册).pdf 美国纽约摄影学院摄影教材(下册).pdf 欢迎你到纽约摄影学院来,我们急切地等待着开课,你们也在 跃跃欲试了.那就让我们马上开始吧! 你已 ...

  5. php strcmp函数漏洞

    strcmp函数漏洞 适用5.3版本以前的php 函数作用:字符串比较 要求传入字符串.如果传入非字符串呢? 结果函数报错!但是函数返回“0”  . 虽然报错了但函数的判断却是“相等” 如何传入非字符 ...

  6. IDEA永久激活使用

    前言 今一早一打开IDEA发现秘钥到期了,提示秘钥被取消,不能用了,因为之前也是从网站找的秘钥,所以失效也是情理当中的,所以绞尽脑汁网上找各种破解方法,结果却是被我找到了,这里和大家分享下. 破解步骤 ...

  7. 解决mariadb字符级不是utf8问题

    解决方法:在my.cnf配置文件中添加如下几个指令 [client]  default-character-set=utf8 [mysqld] character-set-server=utf8 in ...

  8. kubernetes-dashboard部署

    参考资料: kubernetes官方文档 官方GitHub 创建访问用户 解决chrome无法访问dashboard 官方部署方法如下: kubectl apply -f https://raw.gi ...

  9. Windows 7 + Tiny Linux 4.19 + XFS + Vmware Workstation 15 (PRO) 下篇dockerの奥义

    美好的事物总是来自不易,而我是一个docker新手 从以上开场,请各位follow me站在一个初学者的角度,一步一步用最简单的视角审视docker和它的真实存在 上篇预告:Windows 7 + T ...

  10. 《图解机器学习-杉山将著》读书笔记---CH1

    CH1 什么是机器学习 重点提炼 机器学习的种类: 常分为:监督学习.无监督学习.强化学习等 监督学习是学生从老师那获得知识,老师提供对错指示 无监督学习是在没有老师的情况下,学生自习 强化学习是在没 ...