安全的集团网站建设人力资源外包服务公司

news/2025/10/8 6:19:23/文章来源:
安全的集团网站建设,人力资源外包服务公司,做电子商务网站公司,怎么修改错误 wordpress详解数组 数组的基本概念什么是数组数组的创建及初始化数组的使用 数组是引用类型基本类型变量与引用类型变量的区别引用变量认识 null 数组的应用场景数组练习二维数组 数组的基本概念 什么是数组 数组可以看成是相同类型元素的一个集合。在内存中是一段连续的空间。比如现实… 详解数组 数组的基本概念什么是数组数组的创建及初始化数组的使用 数组是引用类型基本类型变量与引用类型变量的区别引用变量认识 null 数组的应用场景数组练习二维数组 数组的基本概念 什么是数组 数组可以看成是相同类型元素的一个集合。在内存中是一段连续的空间。比如现实中的车库 在java中包含6个整形类型元素的数组就相当于上图中连在一起的6个车位从上图中可以看到 1.数组中存放的元素其类型相同。 2.数组的空间是连在一起的。 3.每个空间有自己的编号其实位置的编号为0即数组的下标。 数组的创建及初始化 数组的创建 T[] 数组名 new T[N];T表示数组中存放元素的类型 T[]表示数组的类型 N表示数组的长度 例如 int[] array1 new int[10]; // 创建一个可以容纳10个int类型元素的数组 double[] array2 new double[5]; // 创建一个可以容纳5个double类型元素的数组 String[] array3 new String[3]; // 创建一个可以容纳3个字符串元素的数组数组的初始化 数组的初始化主要分为动态初始化以及静态初始化。 1.动态初始化在创建数组时直接指定数组中元素的个数。 int[] array new int[10];2.静态初始化在创建数组时不直接指定数据元素个数而直接将具体的数据内容进行指定。 T[] 数组名称 {data1, data2, data3, ..., datan};例如 int[] array1 new int[]{0,1,2,3,4,5,6,7,8,9}; double[] array2 new double[]{1.0, 2.0, 3.0, 4.0, 5.0}; String[] array3 new String[]{hell, Java, !!!};【注意事项】 静态初始化虽然没有指定数组的长度编译器在编译时会根据{}中 元素个数来确定数组的长度。静态初始化时, {}中数据类型必须与[]前数据类型一致。静态初始化可以简写省去后面的new T[]。 // 注意虽然省去了new T[], 但是编译器编译代码时还是会还原 int[] array1 {0,1,2,3,4,5,6,7,8,9}; double[] array2 {1.0, 2.0, 3.0, 4.0, 5.0}; String[] array3 {hell, Java, !!!};如果没有对数组进行初始化数组中元素有其默认值如果数组中存储元素类型为基类类型默认值为基类类型对应的默认值比如 类型默认值byte0long0int0short0float0.0fdouble0char\u0000booleanfalse 如果数组中存储元素类型为引用类型默认值为null。 注意如果要给数组初始化那么后面的new int[10]要么省略要么就不给具体长度。 int[] arr new int[10]{1,2,3,4,5,6,7};//error数组的使用 数组中元素访问 数组在内存中是一段连续的空间空间的编号都是从0开始的依次递增该编号称为数组的下标数组可以通过下标访问其任意位置的元素。比如: int[]array {1, 2, 3, 4, 5}; System.out.println(array[0]); System.out.println(array[1]); System.out.println(array[2]); System.out.println(array[3]); System.out.println(array[4]); // 也可以通过[]对数组中的元素进行修改 array[0] 10; System.out.println(array[0]);注意 1.数组是一段连续的内存空间因此支持随机访问即通过下标访问快速访问数组中任意位置的元素。 2.下标从0开始介于[0, N之间不包含NN为元素个数不能越界否则会报出下标越界异常。 遍历数组 所谓 “遍历” 是指将数组中的所有元素都访问一遍, 访问是指对数组中的元素进行某种操作比如打印。 int[] array {1, 2, 3, 4, 5}; System.out.println(array[0]); System.out.println(array[1]); System.out.println(array[2]); System.out.println(array[3]); System.out.println(array[4]);上述代码可以起到对数组中元素遍历的目的但问题是 1.如果数组中增加了一个元素就需要增加一条打印语句。 2.如果输入中有100个元素就需要写100个打印语句。 3.如果现在要把打印修改为给数组中每个元素加1修改起来非常麻烦。 通过观察代码可以发现对数组中每个元素的操作都是相同的则可以使用循环来进行打印。 int[] array {1, 2, 3, 4, 5}; for(int i 0; i 5; i){System.out.println(array[i]); }改成循环之后上述三个缺陷可以全部2和3问题可以全部解决但是无法解决问题1。那能否获取到数组的长度呢 在数组中可以通过 数组对象.length 来获取数组的长度 int[] array {1, 2, 3, 4, 5}; for(int i 0; i array.length; i){System.out.println(array[i]); }也可以使用 for-each 遍历数组 int[] array {1, 2, 3, 4, 5}; for (int x : array) {System.out.println(x); }for-each 是 for 循环的另外一种使用方式. 能够更方便的完成对数组的遍历. 可以避免循环条件和更新语句写错 数组是引用类型 基本类型变量与引用类型变量的区别 基本数据类型创建的变量称为基本变量该变量空间中直接存放的是其所对应的值而引用数据类型创建的变量一般称为对象的引用其空间中存储的是对象所在空间的地址。 public static void func() {int a 10;int b 20;int[] arr {1,2,3}; }在上述代码中a、b、arr都是函数内部的变量因此其空间都在main方法对应的栈帧中分配。 a、b是内置类型的变量因此其空间中保存的就是给该变量初始化的值。 arr是数组类型的引用变量其内部保存的内容可以简单理解成是数组在堆空间中的首地址。 从上图可以看到引用变量并不直接存储对象本身可以简单理解成存储的是对象在堆中空间的起始地址。通过该地址引用变量便可以去操作对象。 引用变量 public static void func() {int[] array1 new int[3];array1[0] 10;array1[1] 20;array1[2] 30;int[] array2 {1,2,3,4,5};array2[0] 100;array2[1] 200;array1 array2;array1[2] 300;array1[3] 400;array2[4] 500;for (int i 0; i array2.length; i) {System.out.println(array2[i]);} }输出的结果是 100 200 300 400 500 array1array2是让array1去引用array2引用的数组的空间此时array1和array2实际是一个数组通过array1将数组23号位置修改成300400此时array2也能看到数组中修改的结果因为array1和array2引用的是同一个数组。 认识 null null 在 Java 中表示 “空引用” , 也就是一个不指向对象的引用. int[] arr null; System.out.println(arr[0]);// 执行结果 Exception in thread main java.lang.NullPointerException at Test.main(Test.java:6)null 的作用类似于 C 语言中的 NULL (空指针), 都是表示一个无效的内存位置. 因此不能对这个内存进行任何读写操作. 一旦尝试读写, 就会抛出 NullPointerException. 注意: Java 中并没有约定 null 和 0 号地址的内存有任何关联 数组的应用场景 保存数据 public static void main(String[] args) {int[] array {1, 2, 3};for(int i 0; i array.length; i){System.out.print(array[i] );} }作为函数的参数 参数传基本数据类型 public static void main(String[] args) {int num 0;func(num);System.out.println(num num); } public static void func(int x) {x 10;System.out.println(x x); } // 执行结果 // x 10 // num 0发现在func方法中修改形参 x 的值, 不影响实参的 num 值 参数传数组类型(引用数据类型) public static void main(String[] args) {int[] arr {1, 2, 3};func(arr);System.out.println(arr[0] arr[0]); } public static void func(int[] a) {a[0] 10;System.out.println(a[0] a[0]); } // 执行结果 // a[0] 10 // arr[0] 10发现在func方法内部修改数组的内容, 方法外部的数组内容也发生改变。因为数组是引用类型按照引用类型来进行传递是可以修改其中存放的内容的。 总结: 所谓的 “引用” 本质上只是存了一个地址. Java 将数组设定成引用类型, 这样的话后续进行数组参数传参, 其实只是将数组的地址传入到函数形参中. 这样可以避免对整个数组的拷贝(数组可能比较长, 那么拷贝开销就会很大). 作为函数的返回值 比如获取斐波那契数列的前N项 public class TestArray {public static int[] fib(int n){if(n 0){return null;}int[] array new int[n];array[0] array[1] 1;for(int i 2; i n; i){array[i] array[i-1] array[i-2];}return array;}public static void main(String[] args) {int[] array fib(10);for (int i 0; i array.length; i) {System.out.println(array[i]);}} }数组练习 数组转字符串 import java.util.Arrays int[] arr {1,2,3,4,5,6}; String newArr Arrays.toString(arr); System.out.println(newArr);// 执行结果 [1, 2, 3, 4, 5, 6]java.util.Arrays 包中的toString可以把数组转化为字符串。 数组拷贝 public static void func(){// newArr和arr引用的是同一个数组// 因此newArr修改空间中内容之后arr也可以看到修改的结果int[] arr {1,2,3,4,5};int[] newArr arr;newArr[0] 10;System.out.println(newArr: Arrays.toString(arr));// 使用Arrays中copyOf方法完成数组的拷贝// copyOf方法在进行数组拷贝时创建了一个新的数组// arr和newArr引用的不是同一个数组arr[0] 1;newArr Arrays.copyOf(arr, arr.length);System.out.println(newArr: Arrays.toString(newArr));// 因为arr修改其引用数组中内容时对newArr没有任何影响arr[0] 10;System.out.println(arr: Arrays.toString(arr));System.out.println(newArr: Arrays.toString(newArr));// 拷贝某个范围.int[] newArr2 Arrays.copyOfRange(arr, 2, 4);System.out.println(newArr2: Arrays.toString(newArr2)); }注意数组当中存储的是基本类型数据时不论怎么拷贝基本都不会出现什么问题但如果存储的是引用数据类型拷贝时需要考虑深浅拷贝的问题。 写一个可以拷贝数组的方法 public static int[] copyOf(int[] arr) {int[] ret new int[arr.length];for (int i 0; i arr.length; i) {ret[i] arr[i];}return ret; }查找数组中指定元素(顺序查找) public static void main(String[] args) {int[] arr {1,2,3,10,5,6};System.out.println(find(arr, 10)); } public static int find(int[] arr, int data) {for (int i 0; i arr.length; i) {if (arr[i] data) {return i;}}return -1; // 表示没有找到 }查找数组中指定元素(二分查找) 针对有序数组, 可以使用更高效的二分查找 public static void main(String[] args) {int[] arr {1,2,3,4,5,6};System.out.println(binarySearch(arr, 6)); }public static int binarySearch(int[] arr, int toFind) {int left 0;int right arr.length - 1;while (left right) {int mid (left right) / 2;if (toFind arr[mid]) {// 去左侧区间找right mid - 1;} else if (toFind arr[mid]) {// 去右侧区间找left mid 1;} else {// 相等, 说明找到了return mid;}}// 循环结束, 说明没找到return -1; }二维数组 二维数组本质上也就是一维数组, 只不过每个元素又是一个一维数组。 语法定义 数据类型[][] 数组名称 new 数据类型 [行数][列数] { 初始化数据 };二维数组的定义方法 int[][] arr {{1,2,3},{4,5,6}}; int[][] arr2 new int[][]{{1,2,3},{4,5,6}}; int[][] arr3 new int[3][3]; //不规则的二维数组 int[][] arr4 new int[3][];//不能省略行可以省略列打印二维数组的方法 for (int i 0;i arr.length;i){for (int j 0;j arr[i].length;j){System.out.print(arr[i][j] );}System.out.println(); }for (int[] array : arr) {for (int i : array) {System.out.print(i );}System.out.println(); }System.out.println(Arrays.deepToString(arr));不规则的二维数组 int[][] arr new int[2][]; arr[0] new int[]{1, 2}; arr[1] new int[]{1, 2, 3}; for (int i 0; i arr.length; i) {for (int j 0; j arr[i].length; j) {System.out.print(arr[i][j] );}System.out.println(); }

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

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

相关文章

广州建设网站是什么样的网站备案怎么查

作者:赵小飞物联网智库 整理发布转载请注明来源和出处导 读昨天夜里,负责5G标准的国际组织3GPP TSG#88全体会议宣布5G R16标准冻结。在新冠疫情全球肆虐的背景下,标准化推进工作遇到非常大的挑战,而3GPP的专家们依然能…

仙居网站设计视频网站建站费用

文章目录 前言相关链接Widget 有状态和无状态Flutter 代码风格去掉烦人的括号后缀提示代码缩进 Flutter 布局最简单的布局widgets和Material widgets Dark语法习惯Flutter 布局默认布局Center居中Padding 填充Align对齐默认居中顶部底部右上角 通用 WidgetContainer处于性能原因…

做网站广告词公司做网站哪个好

1 前言Docker容器原则上是短暂的,如果容器被删除或损毁,数据或配置将丢失,所以上个章节部署的MySQL只适合于测试环境,由于生产的需求,本章将使用Docker卷机制持久保存Docker容器中创建的数据。2 最佳实践2.1 环境配置2…

免费网站自助制作微信整合wordpress

“撸包小游戏”APP是一款专注于小游戏的应用软件,它为用户提供了丰富多样的小游戏选择,并允许开发者通过广告变现的方式获取收益。以下是关于“撸包小游戏”APP的一些关键信息: 广告变现: 广告变现是“撸包小游戏”APP中开发者获…

灯箱网站开发网站备案授权书范本

安装: pip install open3d 测试是否安装成功 python -c "import open3d as o3d"

在AI技术唾手可得的时代,挖掘新需求成为制胜关键——某知名自动化脚本工具需求洞察

本文通过分析某知名自动化脚本工具的官方文档和用户反馈,深入探讨了该工具的核心功能和应用场景,并基于大量用户提交的改进建议,识别出多个潜在的新功能需求,为产品迭代提供方向。内容描述核心功能定位:该项目是一…

多文本转语音模型共存的可扩展框架

本文介绍了一种创新的可扩展框架,能够集成多种不同架构的文本转语音模型。该框架通过序列块和可流式块抽象,解决了模型集成、硬件加速器优化等关键技术挑战,显著提升了语音合成的效率和质量。语音助手通常拥有多种不…

为什么想做网站运营网站后台搭建教程

来源:北京航空航天大学 自动化科学与电气工程学院 数字孪生研究组本文对以下十个问题进行了深入分析与思考,以期抛砖引玉,为研究者更好理解数字孪生,为决策者理性和正确对待数字孪生,为实践者更好落地应用数字孪生提供…

在线教育做网站好还是app好有做销售产品的网站有哪些

目录 关键词平台说明一、runnable二、RTE的event2.1Mode类型event2.2周期触发类型2.3 数据交互触发 三、internal runnable value四、专属运行区指定五、per_instance memory 关键词 嵌入式、C语言、autosar、Rte 平台说明 项目ValueOSautosar OSautosar厂商vector芯片厂商T…

企业网站备案备注建筑铝模板多少钱一平方米

前言 决策树算法是机器学习领域中的一种重要分类方法,它通过树状结构来进行决策分析。决策树凭借其直观易懂、易于解释的特点,在分类问题中得到了广泛的应用。本文将介绍决策树的基本原理,包括熵和信息熵的相关概念,以及几种经典的…

漂亮的数据型网站网站开发工具 比较好

在当今瞬息万变的市场环境中,企业竞争日趋激烈,如何提升内部管理水平、降低成本、提高效率,成为企业持续发展的关键。精益管理作为一种先进的管理理念和方法,正逐渐被越来越多的行业所采纳和应用。本文(深圳天行健精益…

php网站搭建西安百度seo

给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。 你可以认为每种硬币的数量是无限的。 示例…

购物网站产品做促销能赚钱吗帝国cms 做的完整的网站有没有

安全生产管理在现代企业中占据着至关重要的地位。传统的安全生产管理方式虽然在一定程度上能够保障企业的生产安全,但随着企业规模的不断扩大和生产环境的日益复杂,其局限性也愈发凸显。而安全生产管理平台的出现,正是为了解决这一问题。 平台…

wap网站建设哪家好智能小程序收款码

外贸B2C独立站是一种直接向海外消费者销售产品的商业模式。它通常包括建立一个自己的在线商店,通过社交媒体、广告和搜索引擎等渠道吸引流量,并使用国际支付和物流服务来处理订单。以下是一些关于如何建立和运营外贸B2C独立站的建议: 确定目标…

网站搜索框设计各大网站收录

1.概述 艺术、交流以及我们对现实世界的认知正在迅速地转变。如果我们回顾人类创新的历史,我们可能会认为轮子的发明或电的发现是巨大的飞跃。今天,一场新的革命正在发生——弥合人类创造力和机器计算之间的鸿沟。这正是生成式人工智能。 生成模型正在模…

天都城网站建设科技有限公司起名

十月太忙,还是写一篇吧!祝大家1024节日快乐O(∩_∩)O 欢迎大家来到“Python从零到壹”,在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界。所有文章都将结合案例、代码和作者的经验讲解,真心想把自己近十年的编程经验分享给大家,希…

微信网站是多少钱一年朝阳建设工程

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 【翻译】再见, Clean Code!正文那是一个深夜次日早晨这只是一个阶段 【翻译】再见…

2014网站设计趋势北京 高端网站定制

文章目录总结题目update(solution of T3):代码230pts100100300总结 不要先入为主!如果某种算法受阻,要尝试一下别的路子!! 本次的主要问题: T2花费时间略长(指2h&#…

做网站需要几个程序怀化住建部网站

作者简介闫亮 Intel高级软件工程师专注于开源存储SPDK的测试和优化简介CONTENTSSPDK virtio模块介绍SPDK virtio 用户模式使用示例SPDK virtio PCI模式使用示例总结第一章SPDK virtio模块介绍众所周知,Virtio协议定义了两个块设备驱动,virtio-blk和vi…

AI元人文理论体系研究:从基石重构到文明共生——声明Ai研究

AI元人文理论体系研究:从基石重构到文明共生 一、引言:AI元人文的崛起与挑战 人工智能正经历从工具理性向价值理性的深刻转变。随着生成式AI技术的持续进步,人文研究的数字人文范式正在向"AI人文"转型 。…