数组-一维数组

1.数组概念

数组(Array),是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的
方式对这些数据进行统一管理。

变量:在内存开辟一块空间。
数组:也是变量,在内存中开辟一串连续的空间。数组长度一旦确定,就不能修改
数组的常见概念

  • 数组名
  • 下标(或索引)
  • 元素
  • 数组的长度

1.1 基本用法

  1. 格式
  • 格式 1. 数据类型[] 数组名,属于只创建了数组引用名, 并未在内存创建数组空间
  • 格式 2. 数据类型[] 数组名称 = new 数据类型[数组长度];
  • 格式 3. 数据类型[] 数组名称 = {数组内容 1,数组内容 2,数组内容 3…数组内容 n};
  • 格式 4. 数据类型[] 数组名称 = new 数据类型[]{内容 1,内容 2,内容 3…内容 n}
  1. 代码
public static void main(String[] args) {
// 1、声明数组

//1.1 先声明,后开辟空间:数据类型[] 数组名称;
int[] arr1;//声明
arr1=new int[4];//开辟空间:数组名称=new 数据类型[数组长度]; 数组的长度一旦
确定,不可以改变

//1.2 声明数组的同时开辟空间
double[] arr2=new double[5];
System.out.println(arr1);
System.out.println(arr2);

//1.3 声明数组
String[] arr3;//只是声明,没有在内存中开辟数组空间
//System.out.println(arr3);

//1.4 声明数组的同时赋值 数据类型[] 数组名称=new 数据类型[]{数组值1,数组值2,
数组值3,数组值4......数组值n};
//此时数组的长度由赋值的个数决定
int[] arr4=new int[]{1,2,3,4,5};
System.out.println(arr4);

//1.5 声明数组的同时赋值 数据类型[] 数组名称={数组值1,数组值2,数组值3,数组值
4......数组值n};
//此时数组的长度由赋值的个数决定
double[] arr5= {1.5,3.6,5.8,4.0};
}

1.2 内存结构

1.2.1JVM内存结构

根据《Java虚拟机规范》的规定,运行时数据区通常包括这几个部分:程序计数器(Program Counter Register)、Java栈(VM Stack)、本地方法栈(Native Method Stack)、方法区(Method Area)、堆(Heap)。
在这里插入图片描述

1.2.2 数组创建时内存状态

int[] arr1 的内存状态
声明一个数组会在栈中声明

在这里插入图片描述
2.

arr1=new int[4] 的内存状态
new运算符会在堆内存中创建一个数组,分配一个能够存储4个int对象的连续的存储空间,并把这块存储空间的地址给 arr1;arr1会指向这块存储空间。

在这里插入图片描述
3.
在栈内存中定义一个名字为arr1的int型数组,在堆内存中开辟一个能存放4个int对象的连续的内存空间,arr1指向这个地址。初始值为0;将数组下标为0的数组值修改为10,将数组下标为2的数组值修改为20。
在栈内存中定义一个名字为arr2的String型数组,在堆内存中开辟一个能存放3个iString对象的连续的内存空间,arr2指向这个地址。初始值为null;将数组下标为1的数组值修改为刘杰。开辟一个新的能存放5个String对象的连续的内存空间,修改arr2的指向,指向新的地址。
在这里插入图片描述

1.2.3常量池

在这里插入图片描述
JDK 1.7时候,常量池在方法区中
JDK 1.8时候,常量池在堆内存中

1.3 数组实战

public static void main(String[] args) {
//1、声明数组并开辟空间
int[] arr1=new int[4];
//2、给数组赋值:数组名称[下标索引]=值;下标索引从0开始,最大比数组长度小1
//数组长度:数组名称.length获取
//原始赋值方式:
/*
* arr1[0]=2;
* arr1[1]=4;
* arr1[2]=6;
* arr1[3]=8;
*/
//推荐使用循环的方式数组
for(int i=0;i<arr1.length;i++) {
arr1[i]=i+1;
}
//3、使用数组
for(int i=0;i<arr1.length;i++) {
System.out.println(arr1[i]);
}
}

2.数组默认值

public static void main(String[] args) {
//int类型数组元素的默认值是0
int[] arr1=new int[4];
for(int i=0;i<arr1.length;i++) {
System.out.println(arr1[i]);
}
//double类型数组元素的默认值是0.0
double[] arr2=new double[4];
for(int i=0;i<arr2.length;i++) {
System.out.println(arr2[i]);
}
//String类型数组元素的默认值是null
String[] names=new String[5];
for(int i=0;i<names.length;i++) {
System.out.println(names[i]);
}
//char类型数组元素的默认值是' '
char[] genders=new char[5];
for(int i=0;i<genders.length;i++) {
System.out.println(genders[i]);
}
//boolean类型数组元素的默认值是false
System.out.println("over");
}

3.求极值问题

public static void main(String[] args) {
//找出指定数组{12,43,-45,567,13}中的最大值和最小值
int[] arr= {12,43,-45,567,13};
//定义极值:一定数组元素,一般把第一个元素作为最大值的初始值
int max=arr[0];//12
int min=arr[0];
//循环比对
for(int i=1;i<arr.length;i++) {
if(arr[i]>max) {
max=arr[i];
}
if(arr[i]<min) {
min=arr[i];
}
}
System.out.println("最大值是:"+max);
System.out.println("最小值是:"+min);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值