首页 > 编程语言 >java数组

java数组

时间:2024-09-04 23:50:38浏览次数:7  
标签:初始化 java int 数据类型 内存 数组 new

数组:是一种容器,可以用来储存同种数据类型多个值

注:数组容器子在存储数据的时候,需要结合隐式转换考虑,数组类型和存储的数据类型需保持一致。

初始化:就是在内存中,为数组容器开辟空间,并将数据存入容器的过程

地址值:数组的地址值就表示数组在内存中的位置

double [] arr1 ={11,12,13};
System.out.println(arr1)//运行结果为地址值[D@776ec8

//解释地址值的含义
//[:表示当前是一个数组
//D:表示当前数组里面的元素都是double类型的
//@:表示一个间隔符号(固定格式)
//776ec8:才是真正的地址值(十六进制)
//平时习惯性把整体叫做数组的地址值

数组的访问(查询,添加)

索引

:也叫做下标,角标

索引的特点:从0开始,逐个+1增长,连续不间断

//获取数据
int [] arr = {1,2,3,4};
//获取数组的第一个元素,就是获取索引为0的元素
int number = arr [0];
System.out.println(number);//1
System.out.println(arr[1]);//2



//存储数据
//格式:数据名[索引]=具体数据/变量
//细节:一旦覆盖后,原来的数据就不存在了
arr[0] = 100;
System.out.println(arr[0]);//100


数组的静态初始化

完整格式:数据类型 [] 数组名 = new 数据类型 [] {元素1,元素2,元素3.....};

简化格式: 数据类型 [] 数组名 =  {元素1,元素2,元素3.....};

范例:int [] array ={11,12,13};


数组的动态初始化 

动态初始化:初始化时只指定数组长度,由系统为数组分配初始值

格式:数据类型 [] 数组名 =new 数组类型[数组长度]

范例:int [] arr = new int [3]

当数组内没有内容时,数组默认初始化值的规律如下

整数类型:默认初始化值0

小数类型:默认初始化值0.0

字符类型:默认初始化值‘/u0000’(空格)

布尔类型:默认初始化值 flase

引用数据类型:默认初始化值 null


 数组的静态初始化与动态初始化的区别

 动态初始化:手动指定数组长度,由系统给出默认初始化值

用于:只明确元素个数,不明确具体数值,推荐使用动态初始化

静态初始化:手动指定数组元素,系统会根据元素个数,计算出数组长度

用于:需求中已经明确了要操作的具体数据,直接使用静态初始化就可


数组的遍历

数组的遍历:将数组中所有的内容取出来,取出来以后可以(打印,求和,判断.....)

注意:遍历指的是取出数据的过程,不要局限的理解为,遍历就是打印

int arr[]={1,2,3,4};
//在java当中,关于数组的一个长度属性,length
//调用方式:数组名.length
for(int i=0;i<arr.length;i++){
    System.out.println(arr[i]);
}


//扩展
//idea提供的快速生成数组遍历的方式
//数组名.fori

数值的内存图

说明:数据的内存图是你进阶的关键,以下内容为个人理解,可能存在误差,望见谅。

在讲数组的内存图前,需要介绍以下java的内存图

Java的内存图

在计算机中,每一个软件就相当于在电脑中开辟出一定大小的空间,再在这个空间中去运行

而java的内存又可以分为以下几块

:方法运行时使用的内存,比如main方法运行,进入方法栈中执行

:储存对象或者数组,new来创建的,都存储在堆内存

方法区:存储可以运行的class文件

本地方法栈:JVM在使用操纵系统功能的时候使用,和我们开发无关

寄存器:给CPU使用,和我们开发无关

但是值得注意的是,在JDK8以后就取消了方法区,将方法区变成了元空间,具体可以自行了解。

在了解完Java的内存分类后来介绍数组的内存图

在之前讲了,如果只引用数组名称,得到的是数组的地址,是因为java在定义数组的时候会将其分为两个部分,分为等号左边和右边。将new的内容写在了堆内存中,并会赋予一个地址码,而int什么什么的是写在了栈内存中,再将堆内存给的地址码给到栈中

当要调用数组内的内容时,其顺序为,栈内存先获得堆内存的地址码,再用地址码去堆内存中找具体的内容

总结:1.只要是new出来的一定是在堆里面开辟了一个小空间

           2.如果new了多次,那么在堆里面有多个小空间,每个小空间中都有各自的数据

而还会有另一种情况——两个数组指向同一个空间的内存图

其中两个数组会共用一个地址码

总结:当两个数组指向同一个小空间时,其中一个数组对小空间中的值发生了改变,那么其他数组再次访问的时候都是修改过后的结果了。

标签:初始化,java,int,数据类型,内存,数组,new
From: https://blog.csdn.net/2302_80090883/article/details/141901516

相关文章

  • JAVA面试题
    1|0必收藏的Java面试题2|0目录Java面试题一.容器部分二.多线程部分三.SpringMvc部分四.Mybatis部分五.MySQL部分六.Redis部分七.RabbitMQ部分八.JVM虚拟机部分九.算法知识部分十.其他面试部分2|1更新时间:2020/08/10内容:JVM虚拟机部分预更:算......
  • Java字节码文件、组成,jclasslib插件、阿里arthas工具,Java注解
    文章目录一、字节码文件1.1以正确的方式打开文件1.2字节码文件的组成1.2.1基础信息1.2.2常量池1.2.3方法1.3字节码常用工具1.4总结二、Java注解2.1什么是Java注解2.2注释和注解Annotation的区别(掌握)2.3如何使用注解(掌握)2.4Java中已经存在的注解(掌握)2.5自定义注解(了解)2.......
  • java基础知识-JVM知识详解
    一、JVM内存结构Java虚拟机(JVM)的内存结构主要分为几个不同的区域,每个区域都有其特定的目的和功能。以下是JVM内存结构的主要组成部分:先看一下总体的结构图程序计数器(ProgramCounterRegister)这是一个较小的内存块,用于存储当前线程所执行的字节码指令的地址。每......
  • Java毕业设计 基于Springboot+Vue的城市公交查询系统
    文末获取资源,收藏关注不迷路文章目录项目介绍技术介绍项目界面关键代码目录项目介绍近年来,科技飞速发展,在经济全球化的背景之下,互联网技术将进一步提高社会综合发展的效率和速度,互联网技术也会涉及到各个领域,而城市公交查询系统在网络背景下有着无法忽视的作用......
  • Java毕业设计 基于Springboot+Vue的设计企业公司官网网站系统
    文末获取资源,收藏关注不迷路文章目录项目介绍技术介绍项目界面关键代码目录项目介绍在当前的数字化时代背景下,企业公司官网网站系统的设计与开发显得尤为重要。随着互联网的普及和技术的不断进步,企业官网已不仅是展示企业形象和产品信息的窗口,更是企业与客户、合作......
  • Java毕业设计 基于Springboot+Vue的文献搜索系统
    文末获取资源,收藏关注不迷路文章目录项目介绍技术介绍项目界面关键代码目录项目介绍文献搜索系统采用B/S架构,数据库是MySQL。网站的搭建与开发采用了先进的java进行编写,使用了springboot框架。该系统从两个对象:由管理员和用户来对系统进行设计构建。主要功能包括:......
  • 删除有序数组中的重复项 II
    给你一个有序数组nums,请你原地删除重复出现的元素,使得出现次数超过两次的元素只出现两次,返回删除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(1)额外空间的条件下完成。示例1:输入:nums=[1,1,1,2,2,3]输出:5,nums=[1,1,2,2,3]解释:......
  • 计算机毕业设计 二手闲置交易系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解
    ......
  • 【Java】ApiPost请求返回 `406` 状态码(jackson)
    Java系列文章目录补充内容Windows通过SSH连接Linux第一章Linux基本命令的学习与Linux历史文章目录Java系列文章目录一、前言二、学习内容:三、问题描述3.1问题截图3.2错误简介3.2.1HTTP状态码`406NotAcceptable`3.2.2序列化和反序列化3.3后端问题位置四......
  • 计算机毕业设计:Java旅游景区订票售票系统开题报告+源代码效果图
     博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩。项目配有对应开发文档、开题报告、任务书、P......