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.mzph.cn/news/18065.shtml

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

相关文章

C/C++算法——散列表

1、散列表介绍 散列表的英文叫Hash Table&#xff0c;我们平时也叫它哈希表或者Hash 表。散列表用的是数组支持按照下标随机访问数据的特性&#xff0c;所以散列表其实就是数组的一种扩展&#xff0c;由数组演化而来。可以说&#xff0c;如果没有数组&#xff0c;就没有散列表。…

【SpringBoot】85、SpringBoot中Boolean类型数据转0/1返回序列化配置

在 SpringBoot 中,前端传参数 0,1,后端可自动解析为 boolean 类型,但后端返回前端 boolean 类型时,却无法自动转换为 0,1,所以我们需要自定义序列化配置,将 boolean 类型转化为 0,1 1、类型对应 boolean 类型有false,true对应的 int 类型0,12、序列化配置 import com.f…

iOS——锁与死锁问题

iOS中的锁 什么是锁锁的分类互斥锁1. synchronized2. NSLock3. pthread 递归锁1. NSRecursiveLock2. pthread 信号量Semaphore1. dispatch_semaphore_t2. pthread 条件锁1. NSCodition2. NSCoditionLock3. POSIX Conditions 分布式锁NSDistributedLock 读写锁1. dispatch_barri…

MySQL优化

目录 一. 优化 SQL 查询语句 1.1. 分析慢查询日志 1.2. 优化 SQL 查询语句的性能 1.2.1 优化查询中的索引 1.2.2 减少表的连接&#xff08;join&#xff09; 1.2.3 优化查询语句中的过滤条件 1.2.4 避免使用SELECT * 1.2.5 优化存储过程和函数 1.2.6 使用缓存 二. 优化表结构…

超全整理,Jmeter性能测试-常用Jmeter第三方插件详解(超细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 Jmeter作为一个开…

React(4)

1.属性&#xff08;props&#xff09;初始 状态state都是组件内部写的&#xff0c;也就是A组件内的state就只能A组件里面用&#xff0c;其他组件复用不了。因此属性props就可以。 比如一个导航栏&#xff0c;首页有&#xff0c;购物车有&#xff0c;我的有&#xff0c;他们三个…

Vue使用QrcodeVue生成二维码并下载

生成二维码 1、安装qrcode.vue组件 npm install --save qrcode.vue<template><div id"app"><qrcode-vue :valuevalue :sizesize></qrcode-vue><br /></div> </template><script> //导入组件 import QrcodeVue fro…

《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(20)-Fiddler精选插件扩展安装让你的Fiddler开挂到你怀疑人生

1.简介 Fiddler本身的功能其实也已经很强大了&#xff0c;但是Fiddler官方还有很多其他扩展插件功能&#xff0c;可以更好地辅助Fiddler去帮助用户去开发、测试和管理项目上的任务。Fiddler已有的功能已经够我们日常工作中使用了&#xff0c;为了更好的扩展Fiddler&#xff0c…

P4780 Phi的反函数

题目 思路 φ(x)n 当指数均为1时n最小 证明&#xff1a;容斥原理 代码 #include<bits/stdc.h> using namespace std; #define int long long const int maxn1e9; int ansINT_MAX,n; bool f; map<int,bool> mp; bool is_prime(int n){if(n<1) return false;fo…

Spring事务创建与使用

目录 前言Spring中事务的实现声明式事务Transactional 作⽤范围Transactional 参数说明对于事务不回滚的解决方案 前言 在数据库中我们提到了 事务, 事务的定义为, 将一系列操作封装成一个整体去调用 , 要么一起成功, 要么一起失败 Spring中事务的实现 在Spring中事务的操作…

发npm包

重点文件 .github -> workflow -> .yml文件 发自己的包 新建dev分支&#xff0c;合并到master后自动执行 fork别人的包 fork -> base dev新建本地rebase-dev分支 -> 提交push后合并至dev -> dev合并至master后自动执行 值得注意的是&#xff0c;fork别人的…

flask 点赞系统

dianzan.html页面 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>点赞系统</title> </head> <body><h2>这是一个点赞系统</h2><table border"1"><…

学会Selenium元素定位

UI自动化测试的本质就是将手工测试的一系列动作转化成机器自动执行&#xff0c;可以简单概括为五大步骤&#xff1a;定位元素 - 操作元素 - 模拟页面动作 - 断言结果 - 生成报告。 所以很多同学在学习时&#xff0c;都是以元素定位作为入门导向&#xff0c;好的开始就是成功的…

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

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

蓝桥云课ROS机器人旧版实验报告-07外设

项目名称 实验七 ROS[Kinetic/Melodic/Noetic]外设 成绩 内容&#xff1a;使用游戏手柄、使用RGBD传感器&#xff0c;ROS[Kinetic/Melodic/Noetic]摄像头驱动、ROS[Kinetic/Melodic/Noetic]与OpenCV库、标定摄像头、视觉里程计&#xff0c;点云库、可视化点云、滤波和缩…

shell脚本部署springboot

#!/bin/bashecho "$1 jar包名称&#xff0c;$2 运行环境 " echo "reload jar: $1 env: $2 " if [ -z $1 ];thenecho "请输入jar包名称......." elseecho "停止开始......."IDps -ef | grep "$1" | grep -v "grep"…

Ansible自动化运维工具 —— Playbook 剧本

playbooks 本身由以下各部分组成 &#xff08;1&#xff09;Tasks&#xff1a;任务&#xff0c;即通过 task 调用 ansible 的模板将多个操作组织在一个 playbook 中运行 &#xff08;2&#xff09;Variables&#xff1a;变量 &#xff08;3&#xff09;Templates&#xff1a;模…

【JVM】(一)深入理解JVM运行时数据区

文章目录 一、JVM 运行流程二、虚拟机栈&#xff08;线程私有&#xff09;三、本地方法栈 &#xff08;线程私有&#xff09;四、方法区&#xff08;元数据区&#xff09;五、堆&#xff08;线程共享&#xff09;六、程序计数器&#xff08;线程私有&#xff09; 一、JVM 运行流…

React性能优化之Memo、useMemo

文章目录 React.memo两种方式参数应用场景 拓展useMemouseMemo(calculateValue, dependencies) 参考资料 React.memo React 的渲染机制&#xff0c;组件内部的 state 或者 props 一旦发生修改&#xff0c;整个组件树都会被重新渲染一次&#xff0c;即时子组件的参数没有被修改&…

华为华三思科 交换机基础配置一览

console密码修改 华为 user-interface console 0 authentication-mode password set authentication password cipher XXXXXXXXX华三 line aux 0 authentication-mode password set auth pass simple XXX思科 en configure terminal line console 0 password 123 login忘记…