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();}}
}
相关文章:
java 数组的使用
数组 基本介绍 数组可以存放多个同一类型的数据,数组也是一种数据类型,是引用类型。 即:数组就是一组数据。 数组的使用 1、数组的定义 方法一 -> 单独声明 数据类型[] 数组名 new 数据类型[大小] 说明:int[] a new int…...
Jmeter(一) - 从入门到精通 - 环境搭建(详解教程)
1.JMeter 介绍 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序)。它可以用来测试静态和动态资源的性能,例如:静态文件,Java Servlet,CGI Scripts,Java Object,数据库和FTP服务器…...
外贸企业选择CRM的三大特点
外贸营销管理CRM云平台可以帮助外贸企业实现更高质量的营销管理和客户管理。无论是销售、市场营销或客户服务团队的成员,CRM都可以帮助企业更好地理解客户需求,并提供更好的服务。 1.便捷轻量级 云平台的一大优势是用户可以随时随地访问数据࿰…...
软件测试与游戏测试的区别
软件测试和游戏测试是两种不同领域的测试活动,它们之间存在一些区别,包括以下几个方面: 1. 测试目标 软件测试主要是验证和确认软件功能是否符合预期,通常关注软件的正确性、稳定性和兼容性等方面;而游戏测试则更关注游…...
Programming Abstractions in C阅读笔记:p72-p75
《Programming Abstractions In C》阅读P72-p75,每次阅读其实都有很多内容需要总结,这里摘抄其中一部分。 一、技术总结 1.字符串数组 学习《Programming Abstractions in C》第75页的时候,遇到一段代码: static string bigCitie…...
bash测试test详解
bash测试test详解 概述 任何相对完整的计算机语言都能够测试某个条件,然后根据测试的结果采取不同的动作。对于测试条件, Bash使用test命令、各种方括号和圆括号、if/then结构等来测试条件。 7.1. Test Constructs 一个if/then语句结构测试一个或多个命…...
你来问我来答,ChatGPT对话软件测试!主题互动
你来问我来答,ChatGPT对话软件测试! 大家好,我是聪明而有趣的ChatGPT。作为IT专家,我将竭尽全力为你解答技术问题,并提供适合各个级别人群理解的解决方案。无论你是初学者还是专业人士,我都会用智能、简单…...
无人机巢的作用及应用领域解析
无人机巢作为无人机领域的创新设备,不仅可以实现无人机的自主充电和电池交换,还为无人机提供安全便捷的存放空间。为了帮助大家更好地了解无人机巢,本文将着重解析无人机巢的作用和应用领域。 一、无人机巢的作用 无人机巢作为无人机技术的重…...
面试热题(环形链表II)
给定一个链表,返回链表开始入环的第一个节点。 从链表的头节点开始沿着 next 指针进入环的第一个节点为环的入口节点。如果链表无环,则返回 null。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引…...
策略模式:优雅地实现可扩展的设计
策略模式:优雅地实现可扩展的设计 摘要: 策略模式是一种常用的设计模式,它可以帮助我们实现可扩展的、灵活的代码结构。本文将通过一个计算器案例来介绍策略模式的概念、使用场景以及如何在实际项目中应用策略模式来提高代码的可维护性和可扩…...
从8个新 NFT AMM,聊聊能如何为 NFT 提供流动性
DeFi 的出现,开启了数字金融民主化的革命。其中,通过 AMM 自由创建流动性池极大地增加了 ERC-20 Token 的流动性,并为一些长尾 Token 解锁了价值的发现,因而今天在链上可以看到各种丰富的交易、借贷和杠杆等活动。 而另一方面&am…...
习题1.27
先写代码 (defn square [x] (* x x)) (defn expmod[base exp m](cond ( exp 0) 1(even? exp) (mod (square (expmod base (/ exp 2) m)) m):else (mod (* base (expmod base (- exp 1) m)) m)))(defn fermat-test[n](defn try-it [a](cond ( a n) (println "test end&qu…...
简单游戏截图_可控截取内容2
一个需求 我需要在场景中截取不同层级的截图(如只截模型或只截UI或只截外部相加看到的画面 或全都截或和Shader配合呈现人眼夜视仪热成像的画面切换) 将截图排到列表中,在场景UI中展示出来 如何做 相机要能够看到不同的画面 将当前帧画面存储下来 将存储的画面展示出…...
跨域+四种解决方法
文章目录 一、跨域二、JSONP实现跨域请求三、前端代理实现跨域请求四、后端设置请求头实现跨域请求五、Nginx代理实现跨域请求5.1 安装Nginx软件5.2 使用Ubuntu安装nginx 本文是在学习课程满神yyds后记录的笔记,强烈推荐读者去看此课程。 一、跨域 出于浏览器的同…...
RW-Everything的RwDrv.sys驱动调用
RW-Everything的RwDrv.sys驱动调用 一、RwDrv.sys二、示例代码三、总结 一、RwDrv.sys RW-Everything是一个硬件底层的工具,可用于物理内存、BIOS、PCI和IO端口的查看和修改,其基于驱动RwDrv.sys来实现,利用这个驱动可以实现系统的侵入。 二…...
0101docker mysql8镜像主从复制-运维-mysql
1 概述 主从复制是指将主数据库的DDL和DML操作通过二进制日志传到从库服务器,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。 Mysql支持一台主库同时向多台从库进行复制,从库同时可以…...
uC-OS2 V2.93 STM32L476 移植:系统启动篇
前言 前两篇已经 通过 STM32CubeMX 搭建了 NUCLEO-L476RG 的 STM32L476RG 的 裸机工程,下载了 uC-OS2 V2.93 的源码,并把 uC-OS2 的源文件加入 Keil MDK5 工程 本篇适配 uC-OS2 的 系统定时器(Systick)与 PendSV_Handler…...
redis 集群 1:李代桃僵 —— Sentinel
目前我们讲的 Redis 还只是主从方案,最终一致性。读者们可思考过,如果主节点凌晨 3 点突发宕机怎么办?就坐等运维从床上爬起来,然后手工进行从主切换,再通知所有的程序把地址统统改一遍重新上线么?毫无疑问…...
重置 Macbook 中MySQL 的 root 用户密码
Mac上好久前安装测试用的MySQL的Root密码忘记,猜了些常用密码都不对,只能重置密码。 重置密码 1、关闭MySQL服务,可以直接在系统偏好里关闭 sudo /usr/local/mysql/support-files/mysql.server stop 2、进入安装目录,启动安全…...
2308C++搞笑的概念化
前一篇的概念化,太搞笑 元<类 T>概念 可画要求(T&t,整 i){t.画(i);}; 构 方形{空 画(整 i){打印(2*i);} };元<可画 T>空 f(T&t,整 i){t.画(i);t.画(i); }空 主(){方形 e;f(e,33); }用得着那么复杂吗?...
观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...
淘宝扭蛋机小程序系统开发:打造互动性强的购物平台
淘宝扭蛋机小程序系统的开发,旨在打造一个互动性强的购物平台,让用户在购物的同时,能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机,实现旋转、抽拉等动作,增…...
