java 数组的使用

数组

基本介绍

数组可以存放多个同一类型的数据,数组也是一种数据类型,是引用类型。

即:数组就是一组数据。

数组的使用

在这里插入图片描述

1、数组的定义

方法一 -> 单独声明
数据类型[] 数组名 = new 数据类型[大小]
说明:int[] a = new int[5]; //创建一个数组,名字a,存放5个int。没有具体数据,默认值为0方法一 -> 单独声明
单独声明: new 类型[]{1,2,3,4};  -> new int[]{1,2,3,4,5}; 方法二: -> 先声明,再new
int[] a;   //先声明
a = new int[5]; // 再new方法三 静态初始化:
数据类型 数组名[] = {元素值,元素值...}
int[] a = {2,3,4,5,6,7}声明空数组: new int[0]
//上面指定数字的,都是赋默认值,只有大括号中的,才是真正的赋值。// 方式一:
int[] x = new int[3];
// 方式二:
int[] y;
y = new int[3];
// 方式三:
int[] z = new int[]{1, 2, 3, 4, 5, 6};
// 方式四:
int[] a = {13, 2, 3, 32, 325, 13, 25};

2、数组的引用

数组名[下标/索引]

注意细节

1、数组是多个相同数据类型的组合,实现对这些数据的同意管理。【或者满足自动转换】

double[] array1 = {1.1, 2.2, 3.3, 4};  // 4可以自动转换为小数。   

2、数组中的元素可以是任何数据类型,包括基本类型和引用类型。但是不能混用。

3、数组创建后,如果没有赋值,则有默认值。

int、short、byte、long: 0

boolean: flase

String:null

float、double: 0.0

char:\u0000

4、数组的下标是从 0 开始的。

5、数组的下标必须在范围内调用。否则报:下标越界异常

6、数组是引用类型,数组型数据是对象(object)

数组赋值机制

1、基本数据类型赋值,这个值是具体的数据,而且相互不影响,赋的是值。

2、数组在默认情况下是引用传递,赋的值是地址。

值传递/值拷贝 和 引用传递/地址拷贝 的区别在这里插入图片描述

数据拷贝

public class Array01{public static void main(String[] args){int[] arr1 = {10, 20, 30};// 1、创建一个新的数组arr2,开辟新的空间,大小为arr1.lengthint[] arr2 = new int[arr1.length];for (int i=1; i<arr2.length; i++) {arr2[i] = arr1[i];}arr2[0] = 100;//修改arr2不会对arr1产生影响for (int i=0; i<arr2.length; i++) {System.out.println(arr2[i]);}}
}

数组反转

将数组中的元素前后转换

public class Array01{public static void main(String[] args){int[] arr1 = {11,22,33,44,55,66,77};int len = arr1.length;for (int i=0; i <= len/2-1; i++) {int temp = arr1[i];arr1[i] = arr1[len-1-i];arr1[len-1-i] = temp;}for (int i=0; i<len; i++) {System.out.println(arr1[i]);}}
}

总结:这种反转的,从中间往两边扩的问题,全部的中间判断都是 i<(arr.length / 2)

数组添加

实现动态的给数组添加元素,实现对数组的扩容

1、原始数组使用静态分配: int[] arr = {1,2,3};

2、增加元素,直接放在数组的最后:arr = {1,2,3,4}

3、用户可以通过如下方法来决定是否继续添加。添加成功,是否继续添加? Y\N

import java.util.Scanner;
public class Array01{public static void main(String[] args){int[] arr1 = {1,2,3};while(true){System.out.println("是否添加? y/n");Scanner myScanner = new Scanner(System.in);char answer = myScanner.next().charAt(0);if (answer == 'y'){System.out.println("请输入添加的值");int addNum = myScanner.nextInt();// 创建新的数组用于添加元素。int[] arr2 = new int[arr1.length + 1];for (int i=0; i < arr1.length; i++) {arr2[i] = arr1[i];}arr2[arr2.length-1] = addNum;arr1 = arr2;System.out.println("数据添加成功");for(int i=0; i<arr1.length; i++){System.out.print(arr1[i] + "\t");}} else{break;}	}}
}

排序

排序是将一组数据,按照指定的顺序进行排列的过程。【之后详细介绍】

排序的分类:

1、内部排序

指将需要处理的所有数据都加载到内部存储器中进行排序,包括(交换式排序法,选择式排序法和插入式排序法)

2、外部排序法

数据量过大,无法全部加在到内存中,需要借助外部存储进行排序。包括(合并排序法和直接合并排序法)

冒泡排序:

冒泡排序的特点:

在这里插入图片描述

方法一:

public class Array01{public static void main(String[] args){int[] arr1 = {1,8,7,4,6,5};for (int i=0; i<(arr1.length-1); i++) {for (int z = i; z<arr1.length; z++) {if (arr1[i] > arr1[z]){int temp = arr1[z];arr1[z] = arr1[i];arr1[i] = temp;}} }for (int i=0; i<arr1.length; i++) {System.out.println(arr1[i]);}}
}

方法二

public class Array01{public static void main(String[] args){int[] arr1 = {1,8,7,4,3,5};for (int x=0; x<arr1.length-1; x++) {for (int i=0; i<arr1.length-1-x; i++) {if (arr1[i] > arr1[i+1]){int temp = arr1[i+1];arr1[i+1] = arr1[i];arr1[i] = temp;}}for (int z=0; z<arr1.length; z++) {System.out.print(arr1[z] + "\t");}System.out.println();}}
}

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

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

相关文章

上海亚商投顾:沪指震荡微涨 金融、地产午后大幅走强

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 市场情绪 三大指数早盘震荡&#xff0c;午后集体拉升反弹&#xff0c;创业板指涨超1%。券商等大金融板块午后再度走强&#…

学习线性表:掌握基本操作和应用

线性表 前言 欢迎来到本博客的线性表部分&#xff01;&#x1f604;&#x1f389;在这篇博文中&#xff0c;我将带您深入探索数据结构中的线性表&#xff0c;这是计算机科学中最基础也是最重要的数据结构之一。 线性表是一种线性数据结构&#xff0c;它由一组连续的元素组成…

socket server服务器开发常见的并发模型

两种高效的事件处理模式 服务器程序通常需要处理三类事件&#xff1a;I/O 事件、信号及定时事件。有两种高效的事件处理模式&#xff1a;Reactor和 Proactor&#xff0c;同步 I/O 模型通常用于实现Reactor 模式&#xff0c;异步 I/O 模型通常用于实现 Proactor 模式。 无论是 …

Flink开发环境准备: centos-jdk8

linux-jdk8 - Flink开发环境准备 一、基本介绍二、环境准备1.1 JDK环境1.2 开发工具1.3 Maven环境 三、flink下载安装配置3.1 Flink下载3.2 flink本地模式安装 - linux3.3 常用配置3.4 日志的查看和配置 四、单机 Standalone 的方式运行 Flink 一、基本介绍 Flink底层源码是基于…

python+django+mysql项目实践二(前端及数据库)

python项目实践 环境说明&#xff1a; Pycharm 开发环境 Django 前端 MySQL 数据库 Navicat 数据库管理 前端模板 添加模板 在templates下创建 views文件中添加 创建数据库 连接数据库 在setting文件中进行配置 创建表

Redis持久化机制

AOF 把对redis的写操作记录下来&#xff0c;先执行命令&#xff0c;再执行写入&#xff0c;优势在于&#xff1a; 当然也有风险&#xff1a;丢失和对下一个命令造成阻塞 丢失的原因是执行写操作和记录日志是两个过程 下一个命令造成阻塞的原因是两个过程是同步的 第二个问…

python GUI nicegui初识一(登录界面创建)

最近尝试了python的nicegui库&#xff0c;虽然可能也有一些不足&#xff0c;但个人感觉对于想要开发不过对ui设计感到很麻烦的人来说是很友好的了&#xff0c;毕竟nicegui可以利用TailwindCSS和Quasar进行ui开发&#xff0c;并且也支持定制自己的css样式。 这里记录一下自己利…

【在英伟达nvidia的jetson-orin-nx上使用调试can基础收发-硬件连接-开机自启动can-初步调试】

【在英伟达nvidia的jetson-orin-nx上使用调试can基础收发-硬件连接-开机自启动can-初步调试】 1、概述2、实验环境3、自我学习4-1、实验过程1、硬件原理图焊接连接模块2、输入命令3、测试过程 4-2、目前遗留问题# 1-1、发送可以发送&#xff0c;但是PC发送数据收不到。# 1-2、接…

Maven项目中Lifecycle和Plugins下的install的区别

在Maven中&#xff0c;如果你的web和service在不同的模块下&#xff0c;如果直接用用tomcat插件运行web层&#xff0c;那么运行时会报错 Failed to execute goal org.apache.maven.plugins:maven-install-plugin:2.5.2:install (default-cli) on project springboot: The pack…

ResNet-残差网络二

文章目录 残差结构的一般表达形式残差结构中的信息传播clean path propagation前向传播反向传播 h(x)为恒等映射的重要性h(x)的实验证明 激活层的位置 和其他网络的对比 上一篇讲了 ResNet 论文中的第一篇&#xff1a;Deep Residual Learning for Image Recognition&#xff0c…

每日一题——反转单链表

反转单链表 题目链接 下面主要介绍两种方法&#xff1a; 方法一&#xff1a; 利用三个指针变量进行反转 具体过程如图所示&#xff1a; 注意&#xff1a;循环的结束的条件为cur NULL而不是next NULL 实现代码&#xff1a; struct ListNode* reverseList(struct ListNode* …

【C++】——内存管理

目录 回忆C语言内存管理C内存管理方式new deleteoperator new与operator delete函数new和delete的实现原理定位new表达式(placement-new)malloc/free和new/delete的区别 回忆C语言内存管理 void Test() {int* p1 (int*)malloc(sizeof(int));free(p1);int* p2 (int*)calloc(4…

解决Linux下PyCharm无法新建文件

一、问题描述 如图&#xff0c;在Ubuntu Linux系统中使用pycharm管理项目时&#xff0c;提示无法新建.py源文件&#xff1a; 二、问题解决 将问题定性为文件夹&#xff08;目录&#xff09;权限问题&#xff0c;在终端中打开项目文件夹的上级目录&#xff0c;将整个项目目录的…

mysql按照日期分组统计数据

目录 前言按天统计按周统计按月统计按年统计date_format参数 前言 mysql的date_format函数想必大家都使用过吧&#xff0c;一般用于日期时间转化 # 例如 select DATE_FORMAT(2023-01-01 08:30:50,%Y-%m-%d %H:%i:%s) # 可以得出 2023-01-01 08:30:50# 或者是 select DATE_FOR…

【vue】vue-image-lazy图片懒加载使用与介绍【超详细+npm包源代码】

简介 当前插件是基于vue3&#xff0c;写的一个图片懒加载&#xff0c;文章最下方是npm包的源码&#xff0c;你可以自己拿去研究和修改&#xff0c;如有更好的想法可以留言&#xff0c;如果对你有帮助&#xff0c;可以点赞收藏和关注&#xff0c;谢谢。 后续会添加图片放大和切…

98. Python基础教程:try...except...finally语句

【目录】 文章目录 1. try...except...finally语法介绍2. try...except...finally执行顺序3. 捕获特定类型的异常4. 捕获所有类型的异常5. 实操练习-打开txt文件并输出文件内容 【正文】 在今天的课程中&#xff0c;我们将学习Python中的异常处理语句try...except...finally。 …

Mock.js的基本使用方法

官网网址&#xff1a;Mock.js (mockjs.com) 当前端工程师需要独立于后端并行开发时&#xff0c;后端接口还没有完成&#xff0c;那么前端怎么获取数据&#xff1f; 这时可以考虑前端搭建web server自己模拟假数据&#xff0c;这里我们选第三方库mockjs用来生成随机数据&#xf…

IDEA偶尔编译的时候不识别lombok

偶尔IDEA启动项目的时候会识别不到lombok,识别不到get()跟set()方法 方案 在settings添加下面代码 -Djps.track.ap.dependenciesfalse

数据安全治理的关键-数据分类分级工具

强大的资产发现能力 多种资产发现方式的组合应用&#xff0c;能够最大程度地提高资产发现能力。 灵活的敏感数据分类分级规则 内置丰富的敏感数据分类分级规则&#xff0c;支持正则表达式、关键词组、非结构化指纹、结构化指纹、机器聚类等多种匹配方式&#xff0c;并且规则…

HDFS的QJM方案

Quorum Journal Manager仲裁日志管理器 介绍主备切换&#xff0c;脑裂问题解决---ZKFailoverController&#xff08;zkfc&#xff09;主备切换&#xff0c;脑裂问题解决-- Fencing&#xff08;隔离&#xff09;机制主备数据状态同步问题解决 HA集群搭建集群基础环境准备HA集群规…