Java面试会问的——数组、声明、初始化、冒泡、多维数组、稀疏数组

数组

  • 数组时相同类型数据的有序集合
  • 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成
  • 其中,每一个数据称作一个数组元素,每一个数组元素可以通过一个下标来访问它们。

数组声明创建

  • 首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法。

    • da taType[] arrayRefVar //首选方法
    • dateType arrayRefVar[] //效果相同,但不是首选方法
  • java语言使用new操作符来创建数组,语法如下:

    • dateType[] arrayRefVar = new dataType[arraySize]
  • 数组的元素是通过索引访问的,数组索引从 0 开始

  • 获取数组长度

    • arrays.length

数组初始化

  • 静态初始化
    • int[] a = {1,2,3,4};
    • Man[] mans = {new Man(1,1), new Man(2,2)};
  • 动态初始化
    • Int[] a = new int[2];
    • a[0] = 1;
    • a[1] = 2;
  • 默认初始化
    • 数组时引用类型,它的元素相当于是实例变量,因此数组一经分配空间,其中的每一个元素也被按照实例变量同样的方式被阴式初始化。

数组的四个基本特点

  • 数组的长度是确定的。数组一旦被创建,它的大小就是不可以改变的
  • 数组的元素必须是相同类型,不允许出现混合类型
  • 数组中的元素可以是任何数据类型,包括基本类型和引用类型
  • 数组变量属引用类型,数组也可以看成是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的

数组边界

  • 下标的合法区间:【0,length-1】,如果越界就会报错
  • ArrayIndexOutOfBounds Exception:数组下标越界异常
  • 小结
    • 数组是相同数据类型的有序集合
    • 数组也是对象。数组元素相当于对象的成员变量。
    • 数组长度是确定的,不可变的。如果越界,则报错》ArrayIndexOutOfBoundsException

多维数组

  • 多维数组可以看成是数组的数组
    //二维数组 两行五列int a[][] = new int[2][5];
package com.sxl.array;public class Demo04 {public static void main(String[] args) {//二维数组int[][] array = {{1,2},{3,4},{5,6}};for (int i = 0; i < array.length; i++) {for(int j = 0; j < array[i].length; j++){System.out.println(array[i][j]);}}}
}

Arrays类

  • 数组工具类java.util.Arrays
  • Arrays类中的方法都是static静态方法,在使用的时候可以直接使用类名进行调用
  • 对数组排序:sort方法。按升序
  • 比较数组:通过equals方法比较数组中元素是否相等
package com.sxl.array;import java.util.Arrays;public class Demo01 {public static void main(String[] args) {//静态初始化:创建 赋值int[] array = {1,2,3,4,5};//动态初始化 :包含默认初始化int[] b = new int[10];b[0] = 10;//printArray(array);// printString(array);System.out.println("==============");int[] result = reverse(array);printArray(result);}public static int[] reverse(int[] array){int[] result = new int[array.length];for (int i = 0,j = result.length-1; i < array.length ; i++,j--) {result[j] = array[i];}//加入Java开发交流君样:593142328一起吹水聊天return result;}public static void printArray(int[] array){for (int i = 0; i < array.length; i++) {System.out.print(array[i] + " ");}System.out.println();System.out.println("=================");//增强循环for (int arr: array) {System.out.print(arr+ " ");}System.out.println();System.out.println("=================");String result = Arrays.toString(array);System.out.println(result);}public static void printString(int[] array){String result = Arrays.toString(array);System.out.println(result);for (int i = 0; i < array.length; i++) {if (i == 0){System.out.print("[" +array[i] +", ");}else if (i == array.length - 1){System.out.print(array[i]+"]");}elseSystem.out.print(array[i]+", ");}}
}package com.sxl.array;public class Demo02 {public static void main(String[] args) {new Demo02();int[] array = {1,2,5,3,9,7,6,3,2};sort(array);}//冒泡排序public static void sort(int[] array){int temp = 0;for (int i = 0; i < array.length; i++) {boolean flag = false;for (int j = 0; j < array.length-1; j++){if (array[j+1]<array[j]){temp = array[j];array[j] = array[j+1];array[j+1] = temp;flag = true;}}if (flag == false){break;}}for (int i = 0; i < array.length; i++) {System.out.print(array[i]+" ");}}
}package com.sxl.array;public class Demo03 {//加入Java开发交流君样:593142328一起吹水聊天public static void main(String[] args) {int[] array = {1,2,3,4,5};//打印所有数据元素for (int i = 0; i < array.length; i++) {System.out.print(array[i] + " ");}//计算所有数据元素的和System.out.println("=========");int sum = 0;for (int i = 0; i < array.length; i++) {sum += array[i];}System.out.println(sum);//查找最大元素int max = array[0];for (int i = 1; i < array.length; i++) {if (max < array[i]){max = array[i];}}System.out.println(max);}
}

稀疏数组

package com.sxl.array;public class Demo05 {public static void main(String[] args) {int[][] array = new int[11][11];array[1][2] = 1;array[2][3] = 2;//输出原始数组for (int[] a: array) {for (int b: a) {System.out.print(b+"\t");}System.out.println();}//获取有效值的个数int sum = 0;for (int i = 0; i < 11; i++) {for (int j = 0; j < 11; j++){if (array[i][j]!=0){sum++;}}}System.out.println("有效值的个数是:" +sum);//创建一个稀疏数组   第一行存放:  行数  列数  有效数个数int[][] array2 = new int[sum+1][3];array2[0][0] = 11;  //行数array2[0][1] = 11;  //列数array2[0][2] = sum; //有效数个数//遍历原始二维数组,将非零数组存入稀疏数组中//加入Java开发交流君样:593142328一起吹水聊天int count = 0;for (int i = 0; i < array.length; i++) {for (int j = 0;j < array[i].length; j++){if (array[i][j]!=0){count++;array2[count][0] = i;array2[count][1] = j;array2[count][2] = array[i][j];}}}System.out.println("输出稀疏数组");for (int i = 0; i < array2.length; i++) {for (int j = 0; j < array2[i].length; j++){System.out.print(array2[i][j]+"\t");}System.out.println();}}
}

最后,祝大家早日学有所成,拿到满意offer

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

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

相关文章

假如有人在今天炸了支付宝的存储服务器...

全世界只有3.14 % 的人关注了青少年数学之旅今天在知乎看到了一个问题《假如有人把支付宝存储服务器炸了&#xff08;物理炸&#xff09;&#xff0c;大众在支付宝里的钱是不是就都没有了呢&#xff1f;》外行人问题。网站都是有服务器的&#xff0c;服务器都是有实体的。那么支…

Android STL PORT

ndk中包含了stl对应的库&#xff0c;在$(NKD_HOME)/sources/cxx-stl/stlport/stlport 有关Android NDK的C STL开发相关总结如下: 从Android NDK r5开始支持了STL Port&#xff0c;在这个版本开始就可以使用部分STL库的功能了&#xff0c;比如说vector、map,string摆脱c下面容易…

Cookie全解

1. Cookie 可以存储哪些值 在 Cookie 中只能存储个人可识别信息. 个人可识别信息是指可以用来识别或联系用户的信息. 例如用户的姓名, 电子邮件, 家庭住址等. 必须强调的是, 这些可识别信息必须是非机密或重要信息. 2. 使用 Cookie 对象保存和读取客户端信息. 要存储一个 Cooki…

C# 10 完整特性介绍

前言开头防杠&#xff1a;.NET 的基础库、语言、运行时团队从来都是相互独立各自更新的&#xff0c;.NET 6 在基础库、运行时上同样做了非常多的改进&#xff0c;不过本文仅仅介绍语言部分。距离上次介绍 C# 10 的特性已经有一段时间了&#xff0c;伴随着 .NET 6 的开发进入尾声…

代码格式

2019独角兽企业重金招聘Python工程师标准>>> 1.参考&#xff1a;JavaScript程序编码规范 转载于:https://my.oschina.net/u/1791074/blog/283578

94年出生,6篇SCI,一作发Science,你还不放下手上玩的泥巴

全世界只有3.14 % 的人关注了 青少年数学之旅 2019年9月27日&#xff0c;国际顶尖期刊《科学》&#xff08;Science&#xff09;杂志在线以全文Article的形式发表了北京航空航天大学材料科学与工程学院赵立东教授课题组在热电材料研究上取得的新进展&#xff0c;北京航空航天大…

一个问题让我直接闭门思过!!!拼多多面试必问项之List实现类:LinkedList

一、LinkedList概述 1、对于频繁的插入或删除元素的操作&#xff0c;建议使用LinkedList类&#xff0c;效率较高。 2、LinkedList是一个实现了List接口和Deque接口的双端链表。 3、LinkedList底层的链表结构使它支持高效的插入和删除操作&#xff0c;另外它实现了Deque接口&a…

Docker小白到实战之开篇概述

前言“不对啊&#xff0c;在我这运行很正常啊”&#xff0c;这句话小伙伴们在前几年应该听得很多&#xff1b;每次一到安装、部署时总有一堆问题&#xff0c;毕竟操作系统版本、软件环境、硬件资源、网络等因素在作怪&#xff0c;此时难免会导致开发小伙伴和运维哥们互相甩锅&a…

GridView导出为Excel

protected void btExcel_Click(object sender, EventArgs e) { DataSet ds new DataSet(); ds Session["myDataSet"] as DataSet; DataTable DT ds.Tables[0]; //生成将要存放结果的Excel文件的名称 string NewFileN…

设置su为不需要密码切换为root

设置su为不需要密码 如果需要对某用户su命令也不需要输入密码&#xff0c;则需要修改下列的&#xff1a;1--->如果没有wheel组 则用sudo groupadd wheel创建命令为 sudo groupadd wheel&#xff1b;2---->sudo vim /etc/group将username和root加入到wheel用户组内 如图&a…

被女朋友拉黑后,我写了个“舔狗”必备神器

全世界只有3.14 % 的人关注了 青少年数学之旅 “ 在一个阳光明媚的清晨&#xff0c;我打开窗户呼吸了一口新鲜空气。阳光灿烂&#xff0c;岁月静好&#xff0c;又是一个约女朋友出去爬山吃饭看电影的好日子。 图片来自包图网 想到女朋友的大眼睛&#xff0c;我脸上不禁洋溢起了…

涨薪关键之反射机制,引得项目经理对你的看重,加薪触手可及!!!!

前言 就比如我前几天被面试官问什么是反射&#xff1f;&#xff1f;&#xff1f; 而我的回答是&#xff01;&#xff01;&#xff01; 反射是动态语言的关键&#xff0c;反射允许程序在执行期间借助Reflection API取得任何类的内部信息&#xff0c;并能直接操作任曦对象的内…

Wave 文件(5): 获取 Wave 文件的格式信息

装载格式信息的结构有: TWaveFormat wFormatTag: Word;nChannels: Word;nSamplesPerSec: DWORD;nAvgBytesPerSec: DWORD;nBlockAlign: Word; ;TPCMWaveFormat wf: TWaveFormat;wBitsPerSample: Word; ;TWaveFormatEx wFormatTag: Word; nChannels: Word; nSa…

如何摆脱「自我否定」状态

大家好&#xff0c;我是Z哥。你最近正处于自我否定的状态吗&#xff1f;如果不是的话&#xff0c;回想一下最近的一次处于这种状态是什么时候&#xff1f;当时的感受如何&#xff1f;以及&#xff0c;最终是如何走出这个状态的&#xff1f;不着急&#xff0c;给你 1 分钟回忆一…

struct and union

[url]http://hi.baidu.com/tweigh/blog/item/5303d2ef6e2720eace1b3e9d.html[/url]1. struct的巨大作用面对一个人的大型C/C程序时&#xff0c;只看其对struct的使用情况我们就可以对其编写者的编程经验进行评估。因为一个大型的C/C程序&#xff0c;势必要 涉及一些(甚至大量)进…

编码GBK的不可映射字符

为什么80%的码农都做不了架构师&#xff1f;>>> 由于JDK是国际版的&#xff0c;在编译的时候&#xff0c;如果我们没有用-encoding参数指定我们的JAVA源程序的编码格式&#xff0c; 则javac.exe首先获得我们操作系统默认采用的编码格式&#xff0c; 也即在编译java…

低调的大神!他改变了半导体产业!史上唯一两次获得诺贝尔物理奖,却几乎被人遗忘...

全世界只有3.14 % 的人关注了青少年数学之旅两次获得诺贝尔奖的科学家&#xff0c;世界上仅有这四个人&#xff01;他们是&#xff1a;1. 居里夫人(Marie Curie,1867~1934),波兰科学家,他的丈夫叫皮埃尔居里,两人合称“居里夫妇”! 1903年,居里夫妇和亨利...2.约翰巴丁 美国物理…

TTime::FormatL详解

TTime::FormatL详解 示例&#xff1a;TTime time;Time.HomeTime();TBuf<32> timeBuf;time.FormatL(timeBuf,_L(“%F%Y/%M/%D,%H:%T:%S”)); // 2008/08/16,21:22:22详解&#xff1a;格式串分为本地相关和本地无关格式串&#xff0c;也就是说和系统的时间日期中设置的格式…

入职第一天,我接手了号称【屎山】的祖传代码,这还能卷吗???

公司各种各样的祖传代码都是令新人虎躯一震的代码&#xff0c;因为有时候你根本不知道它是干嘛的&#xff0c;甚至觉得它毫无用处&#xff0c;关键是 还绝对不能动&#xff0c;碰一段改半年&#xff0c;别问我怎么知道的。最讽刺的是&#xff0c;你可能为了修改代码&#xff0c…

设计模式之迭代器

迭代器模式介绍集合的结构迭代器模式是一种行为设计模式&#xff0c;让你能在不暴露集合底层表现形式(列表、栈、树等)的情况下遍历集合中所有的元素。迭代器模式满足了单一职责和开闭原则&#xff0c;外界的调用方也不需要知道任何一个不同的数据结构在使用上的遍历差异。迭代…