java(3)数组的定义与使用


目录

1.前言

2.正文

2.1数组的概念

2.2数组的创建与初始化

2.2.1数组的创建

2.2.1数组的静态初始化

2.2.2数组的动态初始化

2.3数组是引用类型

2.3.1引用类型与基本类型区别

2.3.2认识NULL

2.4二维数组

2.5数组的基本运用

2.5.1数组的遍历

2.5.2数组转字符串

2.5.3矩阵的转置

2.5.4查找某元素

3.小结


1.前言

大家好,欢迎大家继续前来学习java的基本语法,今天要分享的内容是数组的定义与使用,数组在代码的实现过程中是非常常见的,因此我们需要熟练掌握数组的相关应用。

2.正文

2.1数组的概念

在Java中,数组是一种引用数据类型,用于存储固定大小的同类型元素的集合。数组可以存储任何类型的数据,比如整数、浮点数、字符、对象甚至其他数组。

数组的有以下三个特点:

  • 存放的数据类型均相同。
  • 空间是连续存放的。
  • 每一个空间都有自己对应的地址编号

2.2数组的创建与初始化

2.2.1数组的创建

创建数组时,需要指定数组的大小。数组的大小在创建时确定,之后不能改变。例如,创建一个包含10个整数的数组:

int[] Array = new int[10];

2.2.1数组的静态初始化

静态初始化是在声明数组的同时,直接指定数组中每个元素的初始值。静态初始化时,数组的大小是确定的,并且每个元素都会被初始化为指定的值。如果初始化的元素少于数组的长度,那么未指定的元素会被默认初始化为其类型的默认值(例如,整数默认为0,对象引用默认为null)。如果初始化的元素多于数组的长度,编译器会报错。

int[] myArray = new int {10, 20, 30, 40, 50}; // 静态初始化

2.2.2数组的动态初始化

动态初始化是在声明数组时,只指定数组的大小,而不指定每个元素的初始值。在动态初始化时,数组的大小是确定的,但是数组中的每个元素都会被自动初始化为其类型的默认值。

int[] myArray = new int[5]; // 动态初始化,数组大小为5

至于究竟选择那种初始化方式取决于每个人的代码习惯或者运用场景,这里再讲几个需要注意的点:

  •  静态初始化虽然没有指定数组长度,但在编译执行的过程中会根据元素数量来确定数组长度。
  • 初始化时数组内的数据类型一定要放置相同。
  • 静态初始化可以简写成int[] myArray ={10, 20, 30, 40, 50};,不影响结果。

2.3数组是引用类型

2.3.1引用类型与基本类型区别

数组是我们在java中接触到的一个引用数据类型,接下来我们就来详细讲解引用数据类型与基本数据类型的练习与区别。

基本数据类型:

  • 内存分配:基本数据类型直接存储在栈上,它们的大小是固定的。
  • 直接操作:基本数据类型直接存储数据值,不需要通过引用来访问。

引用数据类型:

  • 内存分配引用数据类型存储在堆上,而引用变量本身(即对象的地址)存储在栈上。
  • 间接操作:引用数据类型通过引用(即内存地址)来访问数据,而不是直接存储数据。

引用变量并不直接存储对象本身,可以简单理解成存储的是对象在堆中空间的起始地址。通过该 地址,引用变量便可以去操作对象。有点类似C语言中的指针,但是Java中引用要比指针的操作更简单。

2.3.2认识NULL

null Java 中表示 " 空引用 " , 也就是一个不指向对象的引用。
  • 引用数据类型null 只能用于引用数据类型(如类、接口、数组),不能用于基本数据类型。

  • 默认值:引用类型的变量在声明时,如果没有显式初始化,那么它的默认值就是 null

2.4二维数组

二维数组由多个一维数组组成,可以视为数组的数组,下面是二维数组的基础概念与操作。

声明二维数组需要指定两个维度,即行数和列数。例如,声明一个整型的二维数组:

int[][] myArray;

二维数组的初始化与一维数组相同,也有静态初始化与动态初始化:

int[][] myArray = {{1, 2, 3},{4, 5, 6},{7, 8, 9}
};

int[][] myArray = new int[3][3]; // 创建一个3行3列的二维数组

至于二维数组的运用,相信你看完下文的应用就会有所了解了。

2.5数组的基本运用

2.5.1数组的遍历

int[] array = {1,2,3,4,5};
for(int i = 0;i<array.length;i++){System.out.println(array[i]);
}

2.5.2数组转字符串

int[] array = {1,2,3,4,5};
String array1 = Arrays.toString(array);
System.out.println(array1);

 这里我们使用Arrays.toString()方法使得数组被我们转换成字符串类型方便打印。

2.5.3矩阵的转置

int[][] array = {{1,2,3},{4,5,6},{7,8,9}};
for (int i = 0;i < 3;i++){for(int j = 0;j < 3;j++){System.out.print(array[i][j]+" ");}system.out.println();
}//打印原数组
System.out.println();
for (int i = 0;i < 3;i++){for(int j = 0;j < 3;j++){System.out.print(array[j][i]+" ");}System.out.println();
}//转置

2.5.4查找某元素

public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int[]array = {1,2,3,4,5,6,7,8,9};System.out.println("请输入待查找的数字");int n = scanner.nextInt();int flag = 0;//判断是否找到for(int i = 0;i < array.length;i++){if(n==array[i]){flag = 1;System.out.println("该数在"+ i + "个位置");break;}}if(flag==0){System.out.println("未找到该数");}}

3.小结

今天关于java数组的分享到这里就结束了,过几天就该到java的一个重难点,类和对象了,觉得有收获的小伙伴以及想要继续学习的朋友可以点点关注,让我们一起加油喔。

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

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

相关文章

面向对象程序设计——set容器の简析

1.set的介绍 • 序列式容器和关联式容器 • 我们已经接触过STL中的部分容器如&#xff1a;string、vector、list、deque、array、forward_list等&#xff0c;这些容器统称为序列式容器&#xff0c;因为逻辑结构为线性序列的数据结构&#xff0c;两个位置存储的值之间⼀般没有紧…

图片马赛克处理(Java)

1.需求 给图片的指定区域打码给整张图片打码马赛克方格取色支持中心点取色和随机取色马赛克支持灰度处理 2.源码 package com.visy.utils;import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOE…

(k8s)Kubernetes部署Promehteus

转载&#xff1a;Kubernetes&#xff08;k8s&#xff09;部署Promehteus 一、概述 在1.8版本以后heapster由metrics-server替代&#xff1b;从k8s的v1.11版本开始已经全面转向以Prometheus为核心的新监控体系架构&#xff1b;kube-prometheus 中包含了 prometheus 监控所用到的…

pg入门18—如何使用pg gis

1. 下载postgre gis镜像 2. 运行镜像 docker run -p 15432:5432 -d -e POSTGRES_PASSWORDAb123456! postgis/postgis:12-3.4-alpine 3. 使用gis # 进入容器&#xff0c;登录pgdocker exec -it bash# 登录数据库psql -U postgres# 创建数据库CREATE DATABASE mygeotest;# 使用…

算法:双指针题目练习

文章目录 算法:双指针移动零复写零快乐数盛最多水的容器有效三角形的个数查找总价格为目标值的两个商品三数之和四数之和 总结 算法:双指针 移动零 定义两个指针,slow和fast.用这两个指针把整个数组分成三块. [0,slow]为非零元素,[slow1,fast-1]为0元素,[fast,num.length]为未…

【Web】御网杯信息安全大赛2024 wp(全)

目录 input_data admin flask 如此多的FLAG 一夜醒来之全国CTF水平提升1000倍&#x1f60b; input_data 访问./.svn后随便翻一翻拿到flag admin dirsearch扫出来 访问./error看出来是java框架 测出来是/admin;/路由打Spring View Manipulation(Java)的SSTI https:/…

基于ECC簇内分组密钥管理算法的无线传感器网络matlab性能仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于ECC簇内分组密钥管理算法的无线传感器网络matlab性能仿真&#xff0c;对比网络通信开销&#xff0c;存活节点数量&#xff0c;网络能耗以及数据通信量四个指标…

【Linux篇】TCP/IP协议(笔记)

目录 一、TCP/IP协议族体系结构 1. 数据链路层 &#xff08;1&#xff09;介绍 &#xff08;2&#xff09;常用协议 ① ARP协议&#xff08;Address Resolve Protocol&#xff0c;地址解析协议&#xff09; ② RARP协议&#xff08;Reverse Address Resolve Protocol&…

华为为什么要做三折叠屏手机?

前些天我做了一条视频&#xff0c;关于讲华W的新的三折叠屏手机。我说我有点失望&#xff0c;结果引起了华W的同事的一些关注。于是&#xff0c;华W几位高管都跑过来&#xff0c;跟我解释为什么会出现这样的一个状态。 我才知道&#xff0c;这款手机他们其实是亏着钱在卖的。因…

C++速通LeetCode中等第1题-字母异位词分组

思路要点&#xff1a;对字符串排序&#xff0c;排序结果存放在map的key中&#xff0c;排序结果相同的字符串存放到map的value中 。 class Solution { public:string keys;vector<vector<string>> groupAnagrams(vector<string>& strs) {vector<vecto…

EECS498 Deep Learning for Computer Vision (一)软件使用指南

#最近开始学习深度学习的相关基础知识&#xff0c;记录一下相关笔记及学习成果# learning&#xff1a;building artificial systems that learn from data and experience deep learning(a set of machine learning): hierarchical learning algorithms with many "laye…

海洋大地测量基准与水下导航系列之二国外海底大地测量基准和海底观测网络发展现状(上)

海底大地控制网建设构想最先由美国斯克里普斯海洋研究所(Scripps Institution of Oceanography,SIO)提出&#xff0c;目前仅有少数发达国家具备相应技术条件。美国、日本、俄罗斯和欧盟等发达国家通过布测先进的海底大地控制网&#xff0c;不断完善海洋大地测量基准基础设施&am…

6、等级保护政策内容

数据来源&#xff1a;6.等级保护政策内容_哔哩哔哩_bilibili 信息安全产品管理与响应 等级管理 对信息系统中使用的信息安全产品实行按等级管理&#xff0c;信息安全事件应分等级响应与处置。 预测评服务由测评公司和咨询公司提供预测评服务&#xff0c;根据技术要求和测评要…

深度学习01-概述

深度学习是机器学习的一个子集。机器学习是实现人工智能的一种途径&#xff0c;而深度学习则是通过多层神经网络模拟人类大脑的方式进行学习和知识提取。 深度学习的关键特点&#xff1a; 1. 自动提取特征&#xff1a;与传统的机器学习方法不同&#xff0c;深度学习不需要手动…

前端工程化4:从0到1构建完整的前端监控平台

前言 一套完整的前端监控系统的主要部分&#xff1a; 数据上报方式数据上送时机性能数据采集错误数据采集用户行为采集定制化指标监控sdk 监控的目的&#xff1a; 一、数据上报方式 本文的方案是&#xff0c;优先navigator.sendBeacon&#xff0c;降级使用1x1像素gif图片…

Python3网络爬虫开发实战(17)爬虫的管理和部署(第一版)

文章目录 一、 Scrapyd 分布式部署1.1 了解 Scrapyd1.2 准备工作1.3 访问 Scrapyd1.4 Scrapyd 的功能1.5 ScrapydAPI 的使用 二、Scrapyd-Client 的使用2.1 准备工作2.2 Scrapyd-Client 的功能2.3 Scrapyd-Client 部署 三、Scrapyd 对接 Docker3.1 准备工作3.2 对接 Docker 四、…

Linux网络工具:用于查询DNS(域名系统)域名解析信息的命令nslookup详解

目录 一、概述 二、基本功能 1、查询域名对应的IP地址 2、查询IP地址对应的主机名 3、查询特定类型的DNS记录 三、用法 1、命令格式 2、常用选项 五、nslookup的安装 1. 打开终端 2. 更新的系统包列表 3. 安装 bind-utils 软件包 &#xff08;1&#xff09;对于Ce…

Vue点击按钮生成pdf文件/Vue点击按钮生成png图片

本次案例是vue的点击生成pdf文件和png格式的图片 一、生成pdf文件案例 看代码之前&#xff0c;我们肯定得需要看看&#xff0c;效果图是什么的啦&#xff0c;这样子才能先看看自己想要实现的效果是不是这样子的&#xff01;上效果图嘿嘿嘿~ A、实现的效果图 这是页面&#…

java intellij idea开发步骤,使用指南,工程创建与背景色字体配置,快捷键

intellij idea2021 配置背景色&#xff0c;字体大小&#xff0c;主题 快捷键

JACM23 - A New Algorithm for Euclidean Shortest Paths in the Plane

前言 如果你对这篇文章感兴趣&#xff0c;可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」&#xff0c;查看完整博客分类与对应链接。 本文关注的问题为计算几何学中的经典问题&#xff0c;即「在平面上给定一组两两不相交的多边形障碍物&#xff0c;寻找两点…