素材下载网/seo优化网络公司
目录
1.数组的定义与初始化
2.遍历数组
3.认识null
4.引用变量
5.返回多个值
6.数组拷贝
7.数组逆序
8.数组填充
9.小练习
//将整形数组转化为字符串
//二分查找优化
//冒泡排序优化
10.二维数组
//遍历二维数组
//不规则的二维数组
1.数组的定义与初始化
int [ ] arr1 = { 0, 1, 2, 3, 4};
int [ ] arr2 = new int [ ]{ 0, 1, 2, 3, 4};
int [ ] arr3 = new int [5];
注意:1> 不同于C语言中未初始化默认为随机值,Java中未初始化默认为0;
2> 当需要整体初始化时,必须在定义的时候初始化,即不能先定义再初始化;
3> 第二点中用上述arr3中的new方式可以先定义再初始化,但是需要分开初始化;
4> boolean类型数组默认值为false,string类型数组默认值为null(注意是小写)。
2.遍历数组
public static void main(String[] args) {int[] arr = {1, 2, 3, 4, 5};//法一//获取长度:遍历对象.length for(int i = 0;i< arr.length;i++){System.out.print(arr[i]);}System.out.println();//法二:for-each,增强for循环//把arr中的每个元素都取出来放到x里面//与for循环区别:无法获取数组下标for (int x:arr) {System.out.print(x+" ");}System.out.println();//法三:要导入import java.util.Arrays;//Java自己将数组里的值以字符串形式组织后进行打印System.out.println(Arrays.toString(arr));
}
这里使用了Java自带的方法打印字符串 Array.toString(),顺便说一下排序方法 Array.sort()。
这类方法还有很多,之后碰见了再一一叙述(下方二分查找中就有另一种方法)。
3.认识null
public static void main(String[] args) {int[] arr = null;//arr这个引用,不指向任何对象System.out.println(arr.length);//空指针异常System.out.println(arr[0]);//空指针异常
}
null在Java中表示“空引用”,也就是一个不指向对象的引用,作用类似于C语言中的NULL(空指针)
4.引用变量
public static void main(String[] args) {int[] arr1 = {1,2,3,4,5};int[] arr2 = arr1;arr2[0] = 9;System.out.println(Arrays.toString(arr1));//[9, 2, 3, 4, 5]System.out.println(Arrays.toString(arr2));//[9, 2, 3, 4, 5]
}
arr2这个引用指向了arr1这个引用所指向的对象,即arr1和arr2指向同一内存,修改其中任何一个引用另一个也会被修改。
5.返回多个值
public static int[] fun1(){int[] arr = new int[]{1,2,3,4,5};return arr;
}
public static int[] fun2(){int a = 10;int b = 20;return new int[]{a,b};
}
public static void main(String[] args) {int[] ret1 = fun1();int[] ret2 = fun2();System.out.println(Arrays.toString(ret1));//[1, 2, 3, 4, 5]System.out.println(Arrays.toString(ret2));//[10, 20]
}
6.数组拷贝
public static int[] copy(int[] arr){int[] copyArr = new int[arr.length];for (int i = 0; i < arr.length; i++) {copyArr[i] = arr[i];}return copyArr;
}
public static void main(String[] args) {int[] arr = {1,2,3,4,5};//法一:自己实现int[] ret1 = copy(arr);System.out.println(Arrays.toString(ret1));//[1, 2, 3, 4, 5]//法二:Java自带int[] ret2 = Arrays.copyOf(arr,arr.length);System.out.println(Arrays.toString(ret2));//[1, 2, 3, 4, 5]数组扩容int[] ret3 = Arrays.copyOf(arr,arr.length*2);System.out.println(Arrays.toString(ret3));//[1, 2, 3, 4, 5, 0, 0, 0, 0, 0]指定范围拷贝:Arrays.copyOfRange()int[] ret4 = Arrays.copyOfRange(arr,1,4);//注意:[1,4),左闭右开System.out.println(Arrays.toString(ret4));//[2, 3, 4]指定范围拷贝:System.arraycopy()int[] ret5 = new int[arr.length];System.arraycopy(arr,0,ret5,0,arr.length);//拷贝arr.length个元素从arr的0下标处到ret5的0下标处System.out.println(Arrays.toString(ret5));//[1, 2, 3, 4, 5]
}
7.数组逆序
这个与C语言没有什么区别。
public static void reverse(int[] arr){int i = 0;int j = arr.length-1;while(i < j){int tmp = arr[i];arr[i] = arr[j];arr[j] = tmp;i++;j--;}
}
public static void main(String[] args) {int[] arr = {1,2,3,4,5,};reverse(arr);System.out.println(Arrays.toString(arr));
}
8.数组填充
public static void main(String[] args) {int[] arr1 = new int[5];int[] arr2 = new int[5];Arrays.fill(arr1,6);//全部填充为6Arrays.fill(arr2,1,3,8);//[1,3)填充为8System.out.println(Arrays.toString(arr1));//[6, 6, 6, 6, 6]System.out.println(Arrays.toString(arr2));//[0, 8, 8, 0, 0]
}
9.小练习
//将整形数组转化为字符串
public static String toString(int[] arr){if(arr == null){return null;}String ret = "[";int i = 0;for (i = 0; i < arr.length-1; i++) {ret += arr[i];ret += ",";}ret += arr[i];ret += "]";return ret;
}
public static void main(String[] args) {int[] arr = {1,2,3,4,5};String ret = toString(arr);System.out.println(ret);//[1,2,3,4,5]
}
//二分查找优化
public static int findkey(int[] arr,int key){int left = 0;int right = arr.length;while(left <= right){int mid = (left + right)/2;if(arr[mid] > key){right = mid - 1;}else if(arr[mid] < key){left = mid + 1;}else{return mid;}}return -1;
}
public static void main(String[] args) {int[] arr = {0,1,2,3,4,5,6,7,8,9};Scanner scan = new Scanner(System.in);int key = scan.nextInt();//法一:自己实现int ret = findkey(arr,key);System.out.println(ret);//法二:Java自带 Arrays.binarySearchint index = Arrays.binarySearch(arr,key);System.out.println(index);
}
二分查找只能用于有序数组,但有了 Array.sort 和 Array.binarySearch 后,先排序再查找,这样不论是有序还是无序数组都可以查找了,超级方便!!
//冒泡排序优化
public static void bubbleSort (int[] arr){for (int i = 0; i < arr.length-1; i++) {boolean flag = false;for (int j = 0; j < arr.length-1-i; j++) {if(arr[j] > arr[j+1]){int tmp = arr[j];arr[j] = arr[j+1];arr[j+1] = tmp;flag = true;}}//当内层循环发现数组已经有序时,flag为falseif(flag == false){break;}}
}
public static void main(String[] args) {int[] arr = {0,2,4,6,8,1,3,5,7,9};bubbleSort(arr);System.out.println(Arrays.toString(arr));
}
相较于之前的冒泡排序,这里增加了flag作为标记,如果内层循环发现数组已经有序,flag就会置为true并且跳出循环,之后的循环就没必要进行了,节省时间。
10.二维数组
定义:int[][] arr1 = {{1,2,3},{4,5,6}};int[][] arr2 = new int[2][3];int[][] arr3 = new int[][]{{1,2,3},{1,2,3}};
//遍历二维数组
public static void main(String[] args) {int[][] arr = {{1,2,3},{4,5,6}};System.out.println(arr.length);//2System.out.println(arr[1].length);//3//法一:for循环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-each循环for (int[] x:arr) {for (int y:x) {System.out.print(y+" ");}System.out.println();}//法三:Arrays.deepToString()String ret = Arrays.deepToString(arr);System.out.println(ret);//[[1, 2, 3], [4, 5, 6]]
}
//不规则的二维数组
Java中不可省略行,但可省略列
这样一来二维数组就变得十分灵活,可以自定义每一行的列数。
public static void main(String[] args) {int[][] arr = new int[2][];arr[0] = new int[3];//第一行列数为3arr[1] = new int[5];//第二行列数为5
}
相关文章:

【Java】数组
目录 1.数组的定义与初始化 2.遍历数组 3.认识null 4.引用变量 5.返回多个值 6.数组拷贝 7.数组逆序 8.数组填充 9.小练习 //将整形数组转化为字符串 //二分查找优化 //冒泡排序优化 10.二维数组 //遍历二维数组 //不规则的二维数组 1.数组的定义与初始化 int…...

【C++】非类型的模板参数,特化
目录 1.类型模板参数和非类型模板参数 2.特化 3. 模板的分离编译 4.模板的优缺点 1.类型模板参数和非类型模板参数 之前写模板传的都是类型——类型模板参数 现在想定义两个静态数组,数组长度不同,就可以用模板参数传数值而不是传类型 非类型模板…...

核方法(kernel Method)
核方法 核方法定义 一种能够将在原始数据空间中的非线性数据映射到高维线性可分的方法。 核方法的用处 1、低维数据非线性,当其映射到高维空间(feature space)时,可以用线性方法对数据进行处理。 2、线性学习器相对于非线性学…...

消息队列MQ用来做什么的,市场上主流的四大MQ如何选择?RabbitMQ带你HelloWorld!
文章目录MQ用来做什么的MQ会有什么样的麻烦MQ消息队列模式分类MQ消息队列常用协议市场主流四大MQRabbitMQ项目开发RabbitMQ中的组成部分MQ用来做什么的 省流 :系统解耦、异步调用、流量削峰 系统解耦 首先举例下面这个场景,现有ABCDE五个系统ÿ…...

2023年中国高校计算机大赛-团队程序设计天梯赛(GPLT)上海理工大学校内选拔赛(同步赛) A — E
2023年中国高校计算机大赛-团队程序设计天梯赛(GPLT)上海理工大学校内选拔赛(同步赛) 文章目录A -- A Xor B Problem题目分析codeB -- 吃苹果题目分析codeC -- n皇后问题题目分析codeD -- 分苹果题目分析codeE -- 完型填空题目分析codeA – A…...

一文分析Linux v4l2框架
说明: Kernel版本:4.14 ARM64处理器,Contex-A53,双核 使用工具:Source Insight 3.5, Visio 1. 概述 V4L2(Video for Linux 2):Linux内核中关于视频设备驱动的框架,对上向应用层提供…...

MFC常用控件使用(文本框、编辑框、下拉框、列表控件、树控件)
简介 本文章主要介绍下MFC常用控件的使用,包括静态文本框(Static Text)、编辑框(Edit Control)、下拉框(Combo Box)、列表控件(List Control)、树控件(Tree Control)的使用。 创建项目 我们选择 文件->新建->新建项目,选择MFC程序 选择基于对话…...

13 node 程序后台执行加上 tail 命令, 中断 tail 命令, 同时也中断了 node 程序
前言 呵呵 最近帮朋友解决问题[2022.09.08] 需要启动一个 node 程序, 然后 需要一个 startUp.sh 脚本 然后 反手写了一个过去, 按道理 来说 应该是 后台启动了对应的 node 程序, 然后将 标准输出, 错误输出 输出到 logs/nohup.log 日志文件中, 然后基于 tail 命令 来查看 …...

52癫痫发作预测的有效双自注意力残差网络
Effective dual self-attentional residual networks for epileptic seizure prediction 摘要 癫痫发作预测作为慢性脑疾病中最具挑战性的数据分析任务之一,引起了众多研究者的广泛关注。癫痫发作预测,可以在许多方面大大提高患者的生活质量࿰…...

【计算机网络】Tcp IP 面试题相关
互联网协议群(TCP/IP):多路复用是怎么回事? 1.【问题】IPv4 和 IPv6 有什么区别? IPv4 是用 32 位描述 IP 地址,理论极限约在 40 亿 IP 地址; IPv6 是用 128 位描述 IP 地址,IPv6 可…...

【MySQL】MySQL的存储引擎
目录 概念 分类 操作 概念 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查 询、更新和删除数据。 不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能。现在 许多不同的数据库管理系统…...

es6动态模块import()
目录 一、语法说明 二、适用场合 三、注意点 四、示例代码 五、效果 一、语法说明 import命令会被 JavaScript 引擎静态分析,先于模块内的其他语句执行(import命令叫做“连接” binding 其实更合适)。 // 报错 if (x 2) {import MyMod…...

【Flask】Jinja2模板(十四)
Jinja2是一个单独的Python包,Flask依赖Jinja2,安装Flask时会自动安装Jinja2。Jinja2可以将数据和模板结合在一起生成动态文本。 一、引入 来看一个最简单的视图函数: app.route(/) def hello_world():return Hello World! 这个…...

Mr. Cappuccino的第49杯咖啡——冒泡APP(升级版)之基于Docker部署Gitlab
冒泡APP(升级版)之基于Docker部署Gitlab基于Docker安装Gitlab登录Gitlab创建Git项目上传代码使用Git命令切换Git地址使用IDE更换Git地址基于Docker安装Gitlab 查看beginor/gitlab-ce镜像版本 下载指定版本的镜像 docker pull beginor/gitlab-ce:11.3.0…...

《机器学习》基础概念之【P问题】与【NP问题】
《机器学习》基础概念之【P问题】与【NP问题】 这里写目录标题《机器学习》基础概念之【P问题】与【NP问题】一、多项式&时间复杂度1.1. 多项式1.2.时间复杂度二、P问题 & NP问题2.1. P问题2.2.NP问题2.3.举例理解NP问题-TSP旅行商推销问题三、NP-hard问题&NP-C问题…...

WinRAR安装教程
文章目录WinRAR安装教程无广告1. 下载2. 安装3. 注册4. 去广告WinRAR安装教程无广告 1. 下载 国内官网:https://www.winrar.com.cn/ 2. 安装 双击,使用默认路径: 点击“安装”。 点击“确定”。 点击“完成”。 3. 注册 链接ÿ…...

C++:vector和list的迭代器区别和常见迭代器失效问题
迭代器常见问题的汇总vector迭代器和list迭代器的使用vector迭代器list迭代器vector迭代器失效问题list迭代器失效问题vector和list的区别vector迭代器和list迭代器的使用 学习C,使用迭代器和了解迭代器失效的原因是每个初学者都需要掌握的,接下来我们就…...

SpringSecurity如何实现前后端分离
前后端分离模式是指由前端控制页面路由,后端接口也不再返回html数据,而是直接返回业务数据,数据一般是JSON格式。Spring Security默认的表单登录方式,在未登录或登录成功时会发起页面重定向,在提交登录数据时ÿ…...

为ubuntu 18.04添加蓝牙驱动
目录背景方法背景 从网上买的能直接插ubuntu 1804的usb蓝牙太少了,而且还贵。我就直接从JD下单的一个便宜的USB蓝牙,结果插上机器没有驱动起不来。我的PC是个3年前的老机器,实在是不想升级系统,于是捣鼓半天捣鼓好了,…...

Stable Diffusion Prompt用法
Stable Diffusion可以根据你输入的提示词(prompt)来绘制出想象中的画面。 1、正向提示词(Prompt): 提高图像质量的prompt: prompt用途HDR, UHD, 64K(HDR、UHD、4K、8K和64K)这样的质量词可以带来巨大的差异提升照片…...

jenkins问题
目录 python 不是内部或外部命令,也不是可运行的程序 ‘cmd’ 不是内部或外部命令,也不是可运行的程序或批处理文件。 git 不是内部或外部命令,也不是可运行的程序或批处理文件。 pywintypes.com_error: (-2147024891, ‘拒绝访问。’, None,…...

阅读笔记DeepAR: Probabilistic Forecasting with Autoregressive Recurrent Networks
zi,t∈Rz_{i,t}\in \mathbb{R}zi,t∈R表示时间序列iii在ttt时刻的值。给一个连续时间段t∈[1,T]t\in [1, T]t∈[1,T],将其划分为context window[1,t0)[1,t_0)[1,t0)和prediction window[t0,T][t_0,T][t0,T]。用context window的时间序列预测prediction window…...

01.Java的安装
1.JDK&JREJDK : Java SE Development Kit--Java开发工具JRE : Java Runtime Environment--Java运行环境Java编程,需要安装JDK;如果仅仅是运行一款Java程序则只需要运行JREJava的安装包分为两类:一类是JRE--是一个独立的Java运行环境; 一类…...

【C语言深度剖析】关键字(全)
文章目录一.存储类型关键字前言补充1:内存思考:补充2:变量与内存的关系补充3:变量的分类补充4:存储类补充5:删除数据是怎么删除的?1.auto2.register3.static4.extern基本用法:基本功能5.typedef…...

English Learning - L2 语音作业打卡 双元音 [aʊ] [əʊ] Day15 2023.3.7 周二
English Learning - L2 语音作业打卡 双元音 [aʊ] [əʊ] Day15 2023.3.7 周二💌发音小贴士:💌当日目标音发音规则/技巧:🍭 Part 1【热身练习】🍭 Part2【练习内容】🍭【练习感受】🍓元音 /eɪ…...

记第一次面试的过程(C++)
说实话三月份上旬过得很充实,而且感觉蛮值,但还有不足的地方,今晚特地看完资料分析来复盘复盘。 时间还要回到3.2中午13.35(别问我为什么那么准确,刚刚掏手机看的),我正在吃着饭看着王者荣耀的直…...

06 电力电子仿真 MATLAB/Simulink
文章目录01 单相半波整流电路02 单相全波整流电路(子系统封装模块)03 三相桥式整流电路(三相模块与示波器使用)04 相控与斩控交交调压(THD计算)05 Buck电路(PWM实现与闭环反馈)06 单…...

搞懂面向对象这五大概念,才算真正跨过初学者到开发者的“分水岭“
文章目录前言一、对象二、类三、面向对象程序设计的特点1. 封装2. 继承3. 多态前言 面向对象程序设计是在面向过程程序设计的基础上发展而来的,它比面向过程编程具有更强的灵活性和扩展性。面向对象程序设计也是一个程序员发展的 “分水岭”,很多的初学者…...

基于DelayQueue实现的延时队列
基于java中延时队列的实现该文章,我们这次主要是来实现基于DelayQueue实现的延时队列。 使用DelayQueue实现的延时队列的步骤: 定义一个继承了Delayed的类,定义其中的属性,并重写compareTo和getDelay两个方法创建一个Delayqueue…...

MATLAB实现层次分析法AHP及案例分析
层次分析法(Analytic Hierarchy Process, AHP) 1 模型背景 美国运筹学家匹兹堡大学教授Saaty在20世纪70年代初提出的一种层次权重决策分析方法。 层次分析法(Analytic Hierarchy Process, AHP)是一种定性和定量分析相结合的决策分析方法。 特点:用较少的定量信息使决策的…...