5、Java入门教程【数组】

news2024/10/6 8:37:24

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

一、声明

//语法
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/768113.html

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

相关文章

服务机器人应用

随着时代的发展&#xff0c;机器人技术在各个领域越来越普及。在服务领域&#xff0c;服务机器人的应用也越来越受到人们的欢迎。服务机器人将会在商业、医疗、教育、酒店等领域得到应用&#xff0c;并成为未来发展的趋势。 在商业领域中&#xff0c;服务机器人可以承担很多工作…

分类预测 | MATLAB实现LSTM(长短期记忆神经网络)分类预测

分类效果 基本介绍 长短期记忆网络Q通常被称为LSTM,是一种特殊的RNN,能够学习长期依赖性。由Hochreiter和Schmidhuber(1997)提出的,并且在接下来的工作中被许多人改进和推广。 LSTM在各种各样的问题上表现非常出色,现在被广泛使用。LSTM被明确设计用来避免长期依赖性问…

vue3基础+进阶(一、Vue3项目创建并相比vue2熟悉项目结构)

目录 第一章、认识create-vue 1.1 简介 1.2 使用create-vue创建项目 1.2.1 创建步骤以及注意事项 1.2.2 注意事项 1.2.3 熟悉项目&#xff0c;与vue2区分 第一章、认识create-vue 1.1 简介 create-vue是Vue官网新的脚手架工具&#xff0c;底层切换到了vite(下一代前端工…

苍穹外卖-【day03】-【公共字段自动填充】-【新增】-【分页】-【删除】-【修改】

苍穹外卖-day03 课程内容 公共字段自动填充新增菜品菜品分页查询删除菜品修改菜品 **功能实现&#xff1a;**菜品管理 菜品管理效果图&#xff1a; 1. 公共字段自动填充 1.1 问题分析 在上一章节我们已经完成了后台系统的员工管理功能和菜品分类功能的开发&#xff0c;在…

SeLa:Self Labeling Via Simultaneous Clustering and Representation Learning

方法论 有监督的分类任务实现 给定一个将数据I映射至特征向量 x ∈ R D x ∈ R^D x∈RD 的深度神经网络 Φ Φ Φ &#xff0c;即 x Φ ( I ) x Φ ( I ) xΦ(I)。使用有N个样本 I 1 , … , I N I_1 , … , I_N I1​,…,IN​, 且具有标签 y 1 , … , y N ∈ { 1 , … , K }…

线性DP———最长公共子序列问题(LCS)

LCS问题 求两序列具有相同元素的最长子序列&#xff0c;我们可以用到动态规划的方法来解决问题 我们用 来表示序列 与序列 能组成的LCS的长度&#xff0c;的状态转移方程如下&#xff1a; 使用两层for循环就可以解决此问题&#xff0c;时间复杂度为,可以处理n<7000左右…

pycharm里debug时torch数组显示不全

pycharm里查看torch数组全部值 一、在Pycharm运行torch数组时&#xff0c;通常只能看到数组的一部分二、解决办法1、debug后&#xff0c;鼠标右键想要查看完整的数组&#xff0c;选择Evaluate Expression2、输入np.array(x0.data)&#xff0c;x0为想要查看的数组名&#xff0c;…

C#中的抽象类(abstract)

C#中的抽象类&#xff08;abstract&#xff09;。 1&#xff1a;抽象方法只作声明&#xff0c;而不包含实现&#xff0c;可以看成是没有实现体的虚方法 2&#xff1a;抽象类不能被实例化 3&#xff1a;抽象类可以但不是必须有抽象属性和抽象方法&#xff0c;但是一旦有了抽象方…

HTML5学习简记(更新中~)

HTML定义 HTML是一种超文本标记语言&#xff0c;超文本即我们在网页中看到的链接&#xff0c;标记指的是语言中的标签 标签 标签一般成对出现&#xff0c;结束标签比开始标签多一个/ 此外标签一般分为单标签与双标签 HTML基本骨架 其中,HTML标签代表整个网页&#xff0c;hea…

ubuntu迁移anaconda到另外的目录,完美解决问题

背景&#xff1a;anaconda放在/home/下&#xff0c;但是太大了&#xff0c;需要迁移到/data/&#xff0c;找了很多资料&#xff0c;都没解决问题。 一、你可以先做一下尝试&#xff1a; ①拷贝anaconda到你想要的新目录 cp -r /home/anaconda3 /data/ ②将原来的anaconda备…

我国开设大数据相关专业的大学有哪些?

社会对大数据相关专业的人才有着巨大的需求&#xff0c;据预测&#xff0c;到2030年&#xff0c;大数据及相关产业规模达到上万亿元&#xff0c;大数据产业将成为重要的经济增长点。数据是企业最宝贵的资源&#xff0c;大数据分析技术在提升企业经营管理、提高销售业绩、降低管…

微服务组件Sentinel

什么是Sentinel Sentinel 是一种用于流量控制、熔断降级和系统负载保护的开源框架。它由阿里巴巴集团开发并开源&#xff0c;旨在帮助开发人员构建可靠和稳定的分布式系统。 Sentinel 提供了以下主要功能&#xff1a; 流量控制&#xff1a;Sentinel 可以通过限制请求的速率或…

怎么学习Java I/O相关的知识和技术? - 易智编译EaseEditing

要学习Java I/O&#xff08;输入输出&#xff09;相关的知识和技术&#xff0c;可以按照以下步骤进行&#xff1a; 理解Java I/O基础知识&#xff1a; 首先&#xff0c;了解Java I/O的基本概念和术语&#xff0c;包括输入流和输出流、字节流和字符流、文件读写等。掌握Java中…

1.12 springboot 整合log4j打印日志

1.除去springboot自带的日志 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><exclusions><!-- 除去springboot自带的日志 --><exclusion><groupId>org.sprin…

vxe 行编辑自动加载行级别的下级下拉框数据

效果&#xff1a;进入编辑的时候自动根据ID带出下级下拉框 实现思路&#xff1a;行编辑进入之前&#xff0c;调用加载下拉框的方法 activeRowMethod({ row, rowIndex }) {this.getSpecsList(row.wlid);return ret; }, :edit-config"{trigger: click,mode: row,autoClear…

LT8619B 是一款HDMI转TTL或者2 PORT LVDS的芯片。

LT8619B 1. 概述 LT8619B是龙迅基于清除边缘技术的高性能HDMI接收芯片&#xff0c;符合HDMI 1.4&#xff08;高清多媒体接口&#xff09;规范。RGB 输出端口可支持 RGB888/RGB666/RGB565 格式&#xff0c;输出分辨率最高可支持 4Kx2K 分辨率。凭借可编程标量&#xff0c;LT86…

Python爬虫之Scrapy框架系列(23)——分布式爬虫scrapy_redis浅实战【XXTop250部分爬取】

目录&#xff1a; 1.实战讲解&#xff08;XXTop250完整信息的爬取&#xff09;&#xff1a;1.1 使用之前做的完整的XXTOP250项目&#xff0c;但是设置为只爬取一页&#xff08;共25个电影&#xff09;,便于观察1.2 配置settings文件中使用scrapy_redis的必要配置&#xff0c;并…

git -- SSL certificate problem

SSL certificate problem 1.问题描述 新建一个仓库&#xff0c;在向里面上传文件时&#xff0c;出现SSL证书问题 2.解决方法 这个问题是由于没有配置信任的服务器HTTPS验证。默认&#xff0c;cURL被设为不信任任何CAs&#xff0c;就是说&#xff0c;它不信任任何服务器验证。…

概率论的学习和整理--番外12:一个经典dubo模型的概率计算等

目录 1 经典模型知识科普 1.1 知识来源 1.2 下面是摘取的部分规则 2 这个经典dubo的概率和期望 2.1 网上计算的概率&#xff0c;期望全是负&#xff0c;赌徒悲剧 2.2 为什么会这样呢 3 假设把下注庄家不抽水&#xff0c;获得100%收益而不是95&#xff0c;多少次后可以赢…

Java对日志文件进行加密

最近碰到了一个新的需求&#xff0c;生产环境中Java程序部署的服务器会定期清理数据&#xff0c;需要将保存在程序所在服务器上的日志文件挂载到网盘上&#xff0c;但又不想让用户看到日志文件中的信息&#xff0c;因此需要对日志文件中的内容进行加密。 这里&#xff0c;并不是…