JavaSE(基础篇)——数组(一)

简介: JavaSE(基础篇)——数组(一)

数组概述

1.数组的定义:

数组是类型相同的有序集合。


数组是描述相同类型的若干个数据,按照一定的先后次序排列组合而成。


其中每一个数据称作数组元素,可以通过下标来访问其元素。


2.数组的四个基本的特点:

1.数组的长度是确定的,一旦被创建,他的大小就是不能被改变的。


2.其元素类型必须相同,不能出现混合类型。


3.数组中的元素可以是任何的数据类型,可以是基本类型也可以是引用类型。


4.数组是引用类型,数组也可以看作对象,数组中的成员变量相当于该对象的成员变量,数组本身就是对象,Java对象是在堆中的,所以数组无论是保存原始类型还是其他类型,数组本身就是在堆里。


数组声明创建

1.声明数组:

dataType[] arrayRefVar; // 首选的方法 
dataType arrayRefVar[]; // 效果相同,但不是首选方法
double[] myList; // 首选的方法 
double myList[]; // 效果相同,但不是首选方法

2.创建数组

Java语言使用new操作符来创建数组 ,语法如下:


arrayRefVar = new dataType[arraySize];

以上语法做了两件事:


1.使用dataType[arraySize]创建了一个数组。


2.把数组赋值给变量arrayRefVar。


数组是通过索引访问的,从0到array.length-1.


获取数组的长度语法为:


arrayRefVar = new dataType[arraySize];

【演示创建一个数组,并赋值和进行访问】


public class java1 {
    public static void main(String[] args) {
        int[] nums = new int[5];
        nums[0] = 1;
        nums[1] = 2;
        nums[2] = 3;
        nums[3] = 4;
        nums[4] = 5;
        int sum = 0;
        for (int l = 0; l < nums.length; l++) {
            sum += l;
        }
        System.out.println("总和为"+sum);
    }
}

结果:

image.png



3.内存分析

Java内存分析:

image.png



1.声明的时候并不会实例化任何对象,只有在实例化数组对象的时候,JVM才会分配空间,这是才和长度有关,因此声明数组的时候不能指定其长度,错误示范: int a[5]。


2.声明一个数组的时候,数组并没有被真正的创建。


3.构造一个数组必须声明其长度。


//1.声明一个数组 
int[] myList = null;

image.png


//2.创建一个数组
myList = new int[10];

image.png


//3.像数组中存值 
myList[0] = 1; 
myList[1] = 2; 
myList[2] = 3; 
myList[3] = 4; 
myList[4] = 5; 
myList[5] = 6; 
myList[6] = 7; 
myList[7] = 8; 
myList[8] = 9; 
myList[9] = 10;

image.png


4.三种初始化

静态初始化

除了用 new 关键字来产生数组以外 , 还可以直接在定义数组的同时就为数组元素分配空间并赋值。

int[] a = {1,2,3}; 
Man[] mans = {new Man(1,1),new Man(2,2)};

动态初始化

数组定义、为数组元素分配空间、赋值的操作、分开进行。

int[] a = new int[2]; 
a[0]=1; 
a[1]=2;

数组的默认初始化

数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化。

public static void main(String[] args) { 
int[] a=new int[2]; 
boolean[] b = new boolean[2]; 
String[] s = new String[2]; 
System.out.println(a[0]+":"+a[1]); //0,0 
System.out.println(b[0]+":"+b[1]); //false,false 
System.out.println(s[0]+":"+s[1]); //null, null
 }


目录
相关文章
|
存储 缓存 文件存储
如何保证分布式文件系统的数据一致性
分布式文件系统需要向上层应用提供透明的客户端缓存,从而缓解网络延时现象,更好地支持客户端性能水平扩展,同时也降低对文件服务器的访问压力。当考虑客户端缓存的时候,由于在客户端上引入了多个本地数据副本(Replica),就相应地需要提供客户端对数据访问的全局数据一致性。
33076 80
如何保证分布式文件系统的数据一致性
|
前端开发 容器
HTML5+CSS3前端入门教程---从0开始通过一个商城实例手把手教你学习PC端和移动端页面开发第8章FlexBox布局(上)
HTML5+CSS3前端入门教程---从0开始通过一个商城实例手把手教你学习PC端和移动端页面开发第8章FlexBox布局
17818 24
|
设计模式 存储 监控
设计模式(C++版)
看懂UML类图和时序图30分钟学会UML类图设计原则单一职责原则定义:单一职责原则,所谓职责是指类变化的原因。如果一个类有多于一个的动机被改变,那么这个类就具有多于一个的职责。而单一职责原则就是指一个类或者模块应该有且只有一个改变的原因。bad case:IPhone类承担了协议管理(Dial、HangUp)、数据传送(Chat)。good case:里式替换原则定义:里氏代换原则(Liskov 
36801 22
设计模式(C++版)
|
存储 编译器 C语言
抽丝剥茧C语言(初阶 下)(下)
抽丝剥茧C语言(初阶 下)
|
机器学习/深度学习 人工智能 自然语言处理
带你简单了解Chatgpt背后的秘密:大语言模型所需要条件(数据算法算力)以及其当前阶段的缺点局限性
带你简单了解Chatgpt背后的秘密:大语言模型所需要条件(数据算法算力)以及其当前阶段的缺点局限性
24873 15
|
机器学习/深度学习 弹性计算 监控
重生之---我测阿里云U1实例(通用算力型)
阿里云产品全线降价的一力作,2023年4月阿里云推出新款通用算力型ECS云服务器Universal实例,该款服务器的真实表现如何?让我先测为敬!
36786 15
重生之---我测阿里云U1实例(通用算力型)
|
SQL 存储 弹性计算
Redis性能高30%,阿里云倚天ECS性能摸底和迁移实践
Redis在倚天ECS环境下与同规格的基于 x86 的 ECS 实例相比,Redis 部署在基于 Yitian 710 的 ECS 上可获得高达 30% 的吞吐量优势。成本方面基于倚天710的G8y实例售价比G7实例低23%,总性价比提高50%;按照相同算法,相对G8a,性价比为1.4倍左右。
|
存储 算法 Java
【分布式技术专题】「分布式技术架构」手把手教你如何开发一个属于自己的限流器RateLimiter功能服务
随着互联网的快速发展,越来越多的应用程序需要处理大量的请求。如果没有限制,这些请求可能会导致应用程序崩溃或变得不可用。因此,限流器是一种非常重要的技术,可以帮助应用程序控制请求的数量和速率,以保持稳定和可靠的运行。
29925 52

热门文章

最新文章