数组的概述和定义的格式

数组的作用:

  • 用来存储同种数据类型的多个值

数组的基本概念:

  • 数组是存储同一种数据类型多个元素的集合。就相当于一个容器。

注意:数组既可以存储基本数据类型,也可以存储引用数据类型。

数组的定义格式:

  • 数据类型[] 数组名 = new 数据类型[指定数组的长度]

数组的初始化

概念:

  就是为数组开辟连续的内存空间,并且为每个数的元素赋值

如何初始化:

  • 动态初始化:指定长度,有系统给出初始化值  int[] arr = new int[5]
  • 静态初始化:给出初始化的值
    • 格式:数据类型[] 数组名 = new 数据类型[数组长度]

如果打印一个数组的话,你会发现很好玩的事情

int[] arr = new int[5];
System.out.println(arr)
//结果:【I@一个十六进制的内存地址

[I@754e9654的解释:

  • 【代表是一个数组,有几个就代表是几维的
  • I代表的是int类型
  • @一个固定的写法
  • 那一串的十六进制数字则是数组所在的内存地址

数组的赋值和取值

数组是通过下标、索引进行赋值和取值的

当我们使用动态初始化时,系统会默认的给出一个默认值:

  • 整数类型:bytes,short,int,long默认的初始化的数值为0
  • 浮点类型:float,double的默认初始化值都是0.0
  • 布尔类型:boolean默认的初始化值为false

Java中内存的分配

在Java中,我们将内存分为了5个部分:

  • 栈:存储局部变量的部分
  • 堆:存储new出来的对象的部分
  • 方法区:类中的方法,想要调用一个方法的前提就是方法要在方法区
  • 本地方法区:?
  • 寄存器:给CPU使用的

我们去创建一个数组:

int[] arr = new int[5]

其实计算机的内部会把arr这个变量名放在栈区,new int[5]放在堆区,在堆区中开辟了5个连续的空间,默认的int为0

当我们将arr重新赋值给一个新的变量的时候,其实只是把他的内存地址又给了新的变量

数组的静态初始化

 动态初始化: int[] arr = new int[5]

静态初始化:

格式:数据类型[] 数组名 = new 数据类型[]{元素......}

简化:数据类型[] 数组名 = {元素....}

数组的遍历

这要是在Python,分分钟,一个for,啥条件都不用

Java中:

  数组的最大索引:array.length-1

//java中for循环数组

int[] arr = new int[5];

for(int i=0;i<=arr.length-1;i++){
System.out.println(arr[i]);
}

二维数组的概述和定义

定义:

  • 本质上是以数组作为数组元素的数组,即“数组的数组”

二维数组的格式:

  • 数据类型[][] 数组名 = new 数据类型[m][n]
  • 数据类型 数组名[][] = new 数据类型[m][n]
  • 数据类型[] 数组名[] = new 数据类型[m][n]

数组的声明:

  int[][] arr = {{1,2},{3,4}}

补充:

  • 基本数据类型的值传递,不改变原值,因为调用后就会弹栈,局部变量会随之消失
  • 引用数据类型的值传递,改变原值,因为即使方法弹栈,但是堆内的数组还在,可以继续通过地址继续访问
1.Java中的数组到时是传值还是传地址?
//1.即使传值,也是传地址,基本数据类型传递值,引用数据类型传递地址。
//2.Java中只有传地址,应为地址值也是值(官方说法)

Java学习之路(三):Java中的数组的更多相关文章

  1. Java学习之路(一) —— Java命名规范

    Package 的命名 Package 的名字应该都是由一个小写单词组成. Class 的命名 Class 的名字必须由大写字母开头而其他字母都小写的单词组成 Class 变量的命名 变量的名字必须用 ...

  2. Java学习之路(三)

    1:面向对象

  3. java学习之路之javaSE基础2

    java学习之路之javaSE基础2 所有的代码都是引用他人写的. 1.逻辑运算符 //&,|,^,! //int x = 10; //5 < x < 15 //x > 5 ...

  4. java学习之路之javaSE基础1

    <h2>java学习之路之javaSE基础1</h2> <div> ###01.01_计算机基础知识(计算机概述)(了解)* A:什么是计算机?计算机在生活中的应用 ...

  5. 新篇章之我的java学习之路下

    昨天写下了人生的第一篇博客,今天接着写我的java学习之路有关开发及框架的学习过程. 想要学好java语言,只学习一些java的基本语法对实际开发中的用处还是不大的,所以我们还要掌握一些有关javaW ...

  6. Java学习之路(转)

    Java学习之路(书籍推荐)   一.基础类 1.<Thinking in java>(阅读2遍),入门第一位是建立正确的概念 2.<Core Java>这本书更贴近实践,更多 ...

  7. JAVA学习之路与大家分享

    这是我四年以前总结的JAVA学习之路,希望对初学者或想从事JAVA开发的人有帮助. 本人是软件工程专业出身,先后学过C.C++.JAVA.VB.delphi等等开发语言以及网络相关管理技术.哎,好久不 ...

  8. Java 学习之路 -- day00

    Java 学习之路 -- day00 Typora 快捷键操作 标题:#+空格 2. *斜体* 3. **加粗** 4. **斜体加粗*** 5. ~~删除线~~ 6. > 引用 7. ···分 ...

  9. 学习之路三十九:新手学习 - Windows API

    来到了新公司,一开始就要做个程序去获取另外一个程序里的数据,哇,挑战性很大. 经过两周的学习,终于搞定,主要还是对Windows API有了更多的了解. 文中所有的消息常量,API,结构体都整理出来了 ...

随机推荐

  1. 【Linux】程序、进程和线程的区别

    程序.进程和线程的区别 程序是一组指令及参数的集合,指令按照既定的逻辑控制计算机运行.进程则是运行着的程序,是操作系统执行的基本单位.线程则是为了节省资源而可以在同一个进程中共享资源的一个执行单位. ...

  2. Entity Framework Code First 遭遇mapping 不能识别map类问题

    EF在OnModelCreating方法中,使用DbModelBuilder注册EntityTypeConfiguration子类时,是不管namespace的, 所以如果出现class名字相同,则会 ...

  3. Linq分组操作之GroupBy,GroupJoin扩展方法源码分析

    Linq分组操作之GroupBy,GroupJoin扩展方法源码分析 一. GroupBy 解释: 根据指定的键选择器函数对序列中的元素进行分组,并且从每个组及其键中创建结果值. 查询表达式: var ...

  4. Android-监听操作系统短信

    想要访问Android操作系统的ContentProvider就需要明白以下原理: 在Android操作系统里面的 /packsges/目录: apps: 很多的系统应用,例如:联系人,浏览器,音乐播 ...

  5. MFC学习(三):项目学习

    1. 概述 MFC程序由CWinApp.MainFrm(含Menu,可用CSplitterWndEx分割).众多Dialog等组成. MFC既可以使用纯Dialog的形式,也可以使用Document+ ...

  6. DB2知识文档

    DB2知识文档 一.db2 基础 基本语法 注释:“--”(两个减号) 字符串连接:“||” 如set msg=’aaaa’||’bbbb’,则msg为’aaaabbbb’ 字符串的引用:‘’(一定用 ...

  7. Django-02路由层

    U RL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于客户端发来的某个URL调用哪一段逻辑代 ...

  8. 【OCP|052】OCP换题库,052最新题库及答案整理-第10题

    10.Which two are true about consistent database backups? A) They can only be taken when a RECOVERY C ...

  9. img标签中onerror用法

    <img src="/statics/bazi/images/150x100.jpg" alt="#" onerror="this.style. ...

  10. “全栈2019”Java第三十三章:方法

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...