6、Java入门教程【数组】

news2024/11/27 6:26:43

数组是用于存储同种类型的多个数据的容器。

一、声明

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

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

二、创建数组

//语法
dataType[] arrayRefVar = new dataType[arraySize];
dataType[] arrayRefVar = new dataType[]{value0, value1, ..., valuek};
dataType[] arrayRefVar = {value0, value1, ..., valuek};  

数组的元素是通过索引访问的。数组索引从 0 开始,所以索引值从 0 到 arrayRefVar.length-1

//示例
public class TestArray {
   public static void main(String[] args) {
      // 数组大小
      int size = 10;
      // 定义数组
      double[] myList = new double[size];
      myList[0] = 5.6;
      myList[1] = 4.5;
      myList[2] = 3.3;
      myList[3] = 13.2;
      myList[4] = 4.0;
      myList[5] = 34.33;
      myList[6] = 34.0;
      myList[7] = 45.45;
      myList[8] = 99.993;
      myList[9] = 11123;
      // 计算所有元素的总和
      double total = 0;
      for (int i = 0; i < size; i++) {
         total += myList[i];
      }
      System.out.println("总和为: " + total);
   }
}

java数组结构说明

注:采用new dataType[arraySize]的方式创建的数组,每一项都会有默认值,不同的类型默认值不一样:

  • byte、short、int、char、long类型数组的元素默认值都是0
  • float、double类型数组元素的默认值都是0.0
  • boolean类型数组的元素默认值是falseString类型数组的元素的默认值是null

三、数组遍历

使用myList.length可以获取数组的长度,结合for循环,我们可以对数组进行遍历,以便对数组中的每一项进行处理。

//方式一
public class TestArray {
   public static void main(String[] args) {
      double[] myList = {1.9, 2.9, 3.4, 3.5};
 
      // 打印所有数组元素
      for (int i = 0; i < myList.length; i++) {
         System.out.println(myList[i] + " ");
      }
      // 计算所有元素的总和
      double total = 0;
      for (int i = 0; i < myList.length; i++) {
         total += myList[i];
      }
      System.out.println("Total is " + total);
      // 查找最大元素
      double max = myList[0];
      for (int i = 1; i < myList.length; i++) {
         if (myList[i] > max) max = myList[i];
      }
      System.out.println("Max is " + max);
   }
}
//方式二
for(type element: array)
{
    System.out.println(element);
}

四、函数参数是数组

public static void printArray(int[] array) {
  for (int i = 0; i < array.length; i++) {
    System.out.print(array[i] + " ");
  }
}

五、函数的返回值是数组

public static int[] reverse(int[] list) {
  int[] result = new int[list.length];
 
  for (int i = 0, j = result.length - 1; i < list.length; i++, j--) {
    result[j] = list[i];
  }
  return result;
}

六、多维数组

String[][] str = new String[3][4];

七、工具类Arrays

1、判断相等-equals

如果两个数组以相同顺序包含相同的元素,则两个数组是相等的。

package com.itfeiniu.hello;
import java.util.Arrays;

public class HelloWorld {
    public static void main(String[] args) {
        int[] a1 = {12, 56, 42};
        //声明创建一个数组
        int[] a2 = new int[3];//先定义数组长度
        a2[0] = 12;
        a2[1] = 56;
        a2[2] = 42;
        //给数组赋值
        int[] a3 = {42, 56, 12};//a3元素和a1相同,顺序不同
        if (Arrays.equals(a1, a2)) {
            System.out.println("a1和a2相等");
        } else {
            System.out.println("a1和a2不相等");
        }
        if (Arrays.equals(a1, a3)) {
            System.out.println("a1和a3相等");
        } else {
            System.out.println("a1和a3不相等");
        }
    }
}
//a1和a2相等
//a1和a3不相等

2、正序排序-sort

package com.itfeiniu.hello;

import java.util.Arrays;

public class HelloWorld {
    public static void main(String[] args) {
        int[] myList = new int[3];
        myList[0] = 3;
        myList[1] = 1;
        myList[2] = 2;
        Arrays.sort(myList);
        for (int i = 0; i < myList.length; i++) {
            System.out.println(myList[i]);
        }
    }
}
//1
//2
//3

3、填充-fill

package com.itfeiniu.hello;
import java.util.Arrays;

public class HelloWorld {
    public static void main(String[] args) {
        int[] myList = new int[3];
        Arrays.fill(myList, 10);
        for (int i = 0; i < myList.length; i++) {
            System.out.println(myList[i]);
        }
    }
}
//10
//10
//10

4、查找-binarySearch

package com.itfeiniu.hello;

import java.util.Arrays;

public class HelloWorld {
    public static void main(String[] args) {
        int[] myList = new int[3];
        myList[0] = 30;
        myList[1] = 10;
        myList[2] = 20;
        Arrays.sort(myList);//必须先做排序
        System.out.println(Arrays.binarySearch(myList, 20));
        System.out.println(Arrays.binarySearch(myList, 1));
    }
}
//1
//-1

用二分查找算法在给定数组中搜索给定值的对象(Byte,Int,double等)。数组在调用前必须排序好的。如果查找值包含在数组中,则返回搜索键的索引;否则返回 (-(插入点) - 1)。

5、转换成字符串-toString

package com.itfeiniu.hello;

import java.util.Arrays;

public class HelloWorld {
    public static void main(String[] args) {
        int[] myList = new int[3];
        myList[0] = 30;
        myList[1] = 10;
        myList[2] = 20;
        Arrays.sort(myList);
        System.out.println(Arrays.toString(myList));
    }
}
//[10, 20, 30]

八、数组存储

JVM中包含三种内存区域:

  • 方法区
  • 栈内存
  • 堆内存

变量和数组的存储案例说明:int a=20;int[] arr=new int[3];

  • a是变量,直接放在【栈中】,a变量中存储的数据就是20这个值
  • new int[3]是创建一个数组对象,会在【堆内存】中开辟区域存储3个整数
  • arr是变量,在【栈中】,arr中存储的是数组对象在堆内存中的地址值

多个变量指向同一个数组:

package com.itfeiniu.hello;
public class HelloWorld {
    public static void main(String[] args) {
        int[] arr1 = {11, 22, 33};
        int[] arr2 = arr1;
        arr2[1] = 222;//改了arr2,arr1也同时改变。引用类型。
        System.out.println(arr1[1]);
        System.out.println(arr2[1]);//引用类型,arr2存储在栈中,存储了arr1的内存地址值
    }
}
//222
//222

如果某个数组变量存储的地址是 null ,那么该变量将不再指向任何数组对象。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/769899.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

7.6Java EE——Bean的生命周期

Bean在不同作用域内的生命周期 Bean的生命周期是指Bean实例被创建、初始化和销毁的过程。在Bean的两种作用域singleton和prototype中&#xff0c;Spring容器对Bean的生命周期的管理是不同的。在singleton作用域中&#xff0c;Spring容器可以管理Bean的生命周期&#xff0c;控制…

2023 年最全的 5 款免费 PDF 编辑器

这里&#xff0c;我们回顾并比较了一些最好的开源 PDF 编辑器&#xff0c;以及每个编辑器的主要功能和优缺点&#xff1a; 寻找免费的 PDF 编辑器很困难&#xff0c;特别是如果您正在寻找开源 PDF 编辑器。但您不必担心在线搜索 PDF 编辑器的研究和分析&#xff0c;因为我们已…

Apikit 自学日记:测试模板

在 APIKIT 中&#xff0c;你可以将重复的测试步骤添加到测试模板库中&#xff0c;并且在测试用例中引用测试模板来实现复用测试步骤的目的。如将用户登录、清理数据库等操作作为测试模板&#xff0c;并将该用例引入到多个测试用例中&#xff0c;减少不必要的工作。 添加测试模板…

通达信组合副图指标公式-通达信公式

A:REF((C>O),2); A1:REF((C>O),1); A2:C>O OR CO; A3:REF(O,1)<REF(C,2); A4:O<REF(C,1); A5:REF((C-O),1)<REF((C-O),2); A6:(C-O)<REF((C-O),1); A7:REF(C,2)>REF(O,7)*1.05; 节奏1:A AND A1 AND A2 AND A3 AND A4 AND A5 AND A6 AND A7; 节奏2:A AN…

FTP与HTTP: 哪种协议更适合大文件传输?

随着互联网技术的发展&#xff0c;网络传输已成为了现代社会中不可或缺的一部分。无论是文本、图像、音频、视频等各种类型的数据&#xff0c;相应的传输协议也在不断地发展和更新。FTP&#xff08;File Transfer Protocol&#xff09;和HTTP&#xff08;Hyper Text Transfer P…

手写IOC

IOC原理(手写IOC) Spring框架的IOC是基于反射机制实现的。 反射回顾 Java反射机制是在运行状态中&#xff0c;对于任意一个类&#xff0c;都能够知道这个类的所有属性和方法&#xff0c;对于任意一个对象&#xff0c;都能够调用它的任意方法和属性&#xff1b;这种动态获取信息…

开放式蓝牙耳机推荐哪款?开放式蓝牙耳机排行榜推荐

​说到开放式耳机&#xff0c;想必很多人听着还是陌生&#xff0c;普通耳机久戴&#xff0c;会出现耳朵疼痛问题&#xff0c;而开放式蓝牙耳机没有&#xff0c;不入耳的设计更加的干净&#xff0c;不会对耳道造成的伤害&#xff0c;下面我给大家推荐几款很不错的开放式耳机&…

C++学习——类和对象(二)

紧接着我们上一部分类和对象的讲解之后&#xff0c;我们再来学习一下类当中的几大特点&#xff0c;以及使用方法。 一&#xff1a;实例化对象赋初值 首先我们需要学习的就是该如何为我们实例化出的对象赋初值。 1.外部赋值 对于对象赋初值我们有很多的形式&#xff0c;我们甚至…

【lesson1】Linux发展史

文章目录 推动技术进步的基本模式为什么科技一直在进步&#xff1f;科技进步动力是什么&#xff1f; 理解操作系统的发展计算机的发明操作系统的发展Linux的发展 开源为什么有人愿意参加开源项目呢&#xff1f;开源的好处 Linux的应用为什么Windows更好用&#xff1f;OS(操作系…

CGT Asia嘉年华|2023第四届亚洲细胞与基因治疗 创新峰会(广州站)10月升级启航

近年来&#xff0c;全球CGT发展突飞猛进&#xff0c;为遗传罕见病、难治性慢性病和肿瘤患者带来了新的希望&#xff0c;也成为整个国际领域科技竞争的未来焦点。国家发改委发布的《“十四五”生物经济发展规划》明确指出要重点发展基因诊疗、干细胞治疗、免疫细胞治疗等新技术&…

ROS学习——通信机制(常用命令)

2.4 常用命令 Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程088常用命令简介_Chapter2-ROS通信机制_哔哩哔哩_bilibili 机器人系统中启动的节点少则几个&#xff0c;多则十几个、几十个&#xff0c;不同的节点名称各异&#xff0c;通信时使用话题、服务、消息、参…

Leetcode刷题4

⼆叉树、BFS、堆、Top K、⼆叉搜索树、模拟、图算法 一、二叉树 二叉树的前序中序后序 二叉树节点定义 为了方便演示&#xff0c;我们先定义一个二叉树节点类。 class TreeNode:def __init__(self, val0, leftNone, rightNone):self.val valself.left leftself.right r…

keil5汇编实现1-100累加

.text 用于声明下面的代码都存放在.text文本段 .globl _start 声明_start代码内容属于全局内容_start: 汇编语言的标签&#xff0c;类似于c语言中的函数mov r0,#0 总和mov r1,#1 比较累加的值&#xff0c;次数bl fun 跳转&#xff0c;下一个指令地址保存到lr中cmp r1,#…

LLM微调 | LoRA: Low-Rank Adaptation of Large Language Models

&#x1f525; 发表于论文&#xff1a;(2021) LoRA: Low-Rank Adaptation of Large Language Models &#x1f604; 目的&#xff1a;大模型预训练微调范式&#xff0c;微调成本高。LoRA只微调新增的小部分参数。 文章目录 1、背景2、动机3、LoRA原理4、总结 1、背景 adapter…

【UE4 塔防游戏系列】11-多种类型敌人

目录 效果 前言 步骤 一、创建多种不同类型敌人 二、创建波次 &#xff08;修改游戏模式&#xff09; 效果 前言 我们之前使用的敌人都是同一种敌人&#xff0c;都是名为“Crossbowman”敌人 这里我们根据&#xff08;【UE4 塔防游戏系列】03-创建第一个敌人&#xff09…

学会在重装系统前如何备份软件,再也不怕失去珍贵的应用!

​Windows系统是电脑的重要组成部分&#xff0c;它不仅提供了友好的用户界面&#xff0c;还承担着许多关键的功能和任务&#xff0c;为我们提供了一个稳定、安全和效率的工作环境&#xff0c;使我们能够充分发挥电脑的潜力&#xff0c;优化工作效率和生活品质。 随着系统使…

软件测试面试及笔试题

1、什么是软件测试&#xff1f; 【要点】 在规定条件下对程序进行操作&#xff0c;以发现错误&#xff0c;对软件质量进行评估&#xff0c;包括对软件形成过程的文档、数据以及程序进行测试。 【详解】 软件测试就是在软件投入运行前对软件需求分析、软件设计规格说明书和软…

网络安全/黑客技术—学习笔记

一、什么是网络安全 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域&#xff0c;都有攻与防两面…

【产品经理】小型团队通用工作流程SOP方案

&#xff1a;所谓SOP&#xff0c;即标准作业程序&#xff0c;指将某一事件的标准操作步骤和要求以统一的格式描述出来&#xff0c;用于指导和规范日常的工作。实际执行过程中sop核心是符合本企业并可执行&#xff0c;不流于形式。 一、跨部门工作流程 跨部门流程及职能如下图展…

2.6Checkbutton勾选项

2.6Checkbutton勾选项 运行之后的效果将会像下面的图片一样&#xff0c;此时不作任何操作. 如果只选中第一个选项&#xff0c;即图中的python, 效果就会如下. 如果只选中第二个选项&#xff0c;即图中的c, 效果就会如下. 如果两个选项都选中, 效果就会如下. Checkbutton部…