JAVA基础(JAVA SE)学习笔记(五)数组

news2024/9/24 9:23:20

 前言 

1. 学习视频:

尚硅谷Java零基础全套视频教程(宋红康2023版,java入门自学必备)_哔哩哔哩_bilibili

2023最新Java学习路线 - 哔哩哔哩

正文

第一阶段:

JAVA基础(JAVA SE)学习笔记(一)JAVA学习路线、行业了解、开发环境JDK17安装配置 和 JDK8同时配置

JAVA基础(JAVA SE)学习笔记(二)变量与运算符

JAVA基础(JAVA SE)学习笔记(三)流程控制语句

JAVA基础(JAVA SE)学习笔记(四)IDEA安装、使用、设置、断点、乱码汇总-CSDN博客

第二阶段

6. 方法

6.1 声明一个方法

修饰符 返回值类型 方法名( [参数类型 参数名1,参数类型 参数名2, ...] ) {

       执行语句

     

        return 返回值

}

修饰符:有很多,例如对访问权限进行设定的(private、protected、public),有静态修饰符static,最终修饰符final等。

返回值类型:用于限定方法返回值的数据类型。没有返回值时,类型声明为void,return省略。

6.2 方法的重载

java允许在一个程序中定义多个名称相同的方法,但是参数类型个数必须不同,这就是方法的重载。(方法的重载和返回值的类型无关。)

6.3 方法的递归

方法的递归是指在一个程序的内部调用自身的过程。递归必须要有结束条件,不然就会陷入无限递归的状态,永远无法结束调用。

5. 数组

5.1 数组的概念:

double[] a; //声明一个double[]类型的变量
a = new double[100]; //创建一个长度为100的数组
或
int[] b = new int[100];
只定义数组的长度,由系统自动为元素赋初始值叫动态初始化。

定义数组的同时,为数组的每个元素都赋值叫静态初始化。
int[] c = new int[]{1,2,3,4,5};
或
int[] c = {1,2,3,4,5};

这样是动态初始化:
int[] c = new int[5];
c={1,2,3,4,5};

不能写为:int[] c = new int[5]{1,2,3,4,5}; 
会报错。因为编译器会认为数组限定的元素个数[5]
与
实际存储的元素{1,2,3,4,5}个数可能不一致,存在安全隐患。

数组中最小索引是0,最大索引是长度-1数组名.length 获得数组的长度,即元素个数。

int a[ ] = new int[5];中括号和数组名写在一起也是正确写法。

数组的遍历:

for(int i = 0; i < a.length-1; i++){
    System.out.println(a[i]);
}
数组元素的默认初始化值
数据类型默认初始化值
byte、short、int、long0
float、double0.0
char一个空字符,即   '\u0000'
booleanfalse
引用数据类型

null,表示变量不引用任何对象

5.2 数组(一维、二维、多维数组)的使用

初始化方式:

int[][] a = new int[2][3];
int[][] b = new int[2][];
int[][] c = {(1,2),(3,4,5,6),(1,6,5),5};
int[][] d = new int[][]{(1,2),(3,4,5,6),(1,6,5),5};

其中:c[0] = {1,2};     c[1] = {3,4,5,6};    c[1][0] = 3;     c[3] = {5};

还可以写为int[] d[] = new int[][]{(1,2),(3,4,5,6),(1,6,5),5};

int d[][] = new int[][]{(1,2),(3,4,5,6),(1,6,5),5};

可以发现声明一个数组变量的时候,必须要定义行的个数,列可以暂时不写。

不同行的列的个数也可以不相同。

二维数组的元素默认值
数据类型 
byte、short、int、long地址值0
float、double地址值0.0
char空字符集,即 '\u0000' 一个空字符,即   '\u0000' 
boolean地址值false
引用数据类型地址值null,表示变量不引用任何对象

特殊情况下int[][] b = new int[2][];,行的默认地址值都是null,列则没有分配地址或值。

这里的地址值其实是“类名+@+地址”。显示是“[C@179d3b25”这样的值。

内存解析:

5.3 数组的常见异常

  • 数组越界异常ArrayIndexOutOfBoundsException:

        在使用索引访问数组的元素时超出了数组的索引范围0~length-1

  • 空指针异常NullPointerException:

       在使用变量引用一个数组时,变量没有指向一个有效的数组对象,变量的值是null。在访问该数组时,就会出现空指针异常。注意:动态初始化二维数组不写列的个数int[][] z = new int[2][];,就访问某列也会报错空指针异常。(因为列没有分配内存空间,根本不存在)

引用数据类型未赋值,默认为null,调用arr3[0]=null时,也会空指针异常:

5.4 常见算法

杨辉三角:

回型数:

回形数格式方阵的实现_数字回转方阵_时时师师的博客-CSDN博客

数组的反转:

5.5 扩容缩容

可以采取将新建数组(跟原来相比更大或更小)的地址值赋值给原有数组,实现扩容、缩容。

5.6 查找与排序

5.6.1 查找

查找分为线性查找(O的n次方)和二分查找(O的(log2N)次方)。

二分查找要求数组元素有序

5.6.2 排序:

排序的目的是快速查找,排序有很多种,其中冒泡排序和快速排序最常用。

5.6.2.1 冒泡排序思想:

多种排序动态演示网址:排序(冒泡排序,选择排序,插入排序,归并排序,快速排序,计数排序,基数排序) - VisuAlgo 

5.2.6.2 快速排序:(面试 复杂度   O(nlog(n) )

5.7 数组工具类

Arrays.sort(arr3);

Arrays.binarySearch(arr3);

使用二分法排序的时候,要先使用sort方法进行数组排序,然后再使用Arrays.binarySearch(arr3);

二分法找不到数的时候,就会输出打印一个比最小值还小的负数:

可以添加友好提醒:

企业真题:

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

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

相关文章

SpringMVC之全局异常拦截器

在SpringMVC自动装配核心类之WebMvcAutoConfiguration内部实例化EnableWebMvcConfiguration过程中会触发其父类WebMvcConfigurationSupport内部初始化HandlerExceptionResolver。 1.WebMvcConfigurationSupport public class WebMvcConfigurationSupport implements Applicat…

51单片机的时钟系统

1.简介 51内置的时钟系统可以用来计时&#xff0c;与主程序分割开来&#xff0c;在计时过程中不会终端主程序&#xff0c;还可以通过开启时钟中断来执行相应的操作。 2.单片机工作方式 单片机内部有两个十六位的定时器T0和T1。每个定时器有两种工作方式选择&#xff0c;分别…

Fast DDS之Publisher

目录 PublisherDataWriter Publisher Publisher是一直归属于DomainParticipant。 通过DomainParticipant的create_publisher创建Publisher&#xff0c;参数PublisherQos是必需的&#xff0c;可以使用默认值PUBLISHER_QOS_DEFAULT。可选的参数&#xff1a;PublisherListener和…

智能电表的功率计算方式是一样的吗?

随着科技的发展&#xff0c;智能电表已经成为了家庭和企业用电的必备设备。智能电表不仅可以实现用电量的监测和控制&#xff0c;还可以对用电负荷进行管理和优化。在智能电表的使用过程中&#xff0c;功率计算是一个重要的环节。那么&#xff0c;智能电表的功率计算方式是一样…

凉鞋的 Godot 笔记 202. 变量概述与简介

202. 变量概述与简介 想要用好变量不是一件简单的事情&#xff0c;因为变量需要命名。 我们可以从两个角度去看待一个变量&#xff0c;第一个角度是变量的功能&#xff0c;第二个是变量的可读性。 变量的功能其实非常简单&#xff0c;变量可以存储一个值&#xff0c;这个值是…

嵌入式行业是否会面临中年危机?

今日话题&#xff1a;嵌入式行业是否会面临中年危机&#xff1f;事实上&#xff0c;无论你在哪个行业工作&#xff0c;都可能面临下岗风险。因此&#xff0c;我的建议是选择一个有前景、发展空间大的行业和方向&#xff0c;并不断提升自己的技能价值。为了帮助你在嵌入式领域取…

面试知识点--基础篇

文章目录 前言一、排序1. 冒泡排序2. 选择排序3. 插入排序4. 快速单边循环排序5. 快速双边循环排序6. 二分查找 二、集合1.List2.Map 前言 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、排序 1. 冒泡排序 冒泡排序就是把小的元素往前调或者把大…

万宾科技智能井盖传感器特点介绍

当谈论城市基础设施的管理和安全时&#xff0c;井盖通常不是第一项引人注目的话题。然而&#xff0c;传统井盖和智能井盖传感器之间的差异已经引起了城市规划者和工程师的广泛关注。这两种技术在功能、管理、安全和成本等多个方面存在着显著的差异。 WITBEE万宾智能井盖传感器E…

天锐绿盾数据防泄密系统

天锐绿盾数据防泄密系统&#xff08;简称数据防泄密系统&#xff09;是一套从源头上保障数据安全和使用安全的软件系统。包含了文件透明加解密、内部文件流转功能、密级管控、离线管理、文件外发管理、灵活的审批流程、工作模式切换、服务器白名单等功能。从根本上严防信息外泄…

Mysql创建视图中文乱码修改docker里的配置

问题现象&#xff1a; 创建的视图查询无数据&#xff0c;查看创建语句得知&#xff0c;where条件里的中文变成了“???”。 在客户端里查询字符编码&#xff1a; show VARIABLES like %char%;就是character_set_server导致的&#xff0c;它配置的竟然不是utf8&#xff0c;…

Linux设备树插件

什么是设备树插件 Linux4.4 以后引入了动态设备树&#xff08;Dynamic DeviceTree&#xff09;。设备树插件&#xff08;Device Tree Overlay&#xff09; 是一种用于设备树&#xff08;Device Tree&#xff09;的扩展机制。设备树是一种用于描述硬件设备的数据结构&#xff0c…

eNSP笔记②

动态路由 RIP [适用于小型网络] 静态路由是加上非直连的网段&#xff0c;动态路由是加上直连的网段 动态路由就是要宣告它要去的网段&#xff0c;在图中可以看到&#xff0c;一台路由需要宣告两个网段&#xff0c;路由A分别宣告10.0.0.0与192.168.1.0&#xff0c;路由B宣告10.…

是不是所有的低代码产品都能解决真实问题

随着大数据、云计算、人工智能技术的逐渐普及&#xff0c;越来越多的企业开始尝试建立&#xff0c;或者已经在企业内部建立起数字化的产品矩阵&#xff0c;有很多企业成功使用数字化帮助提升效率、发展业务能力的案例&#xff0c;但是也有不少企业发现数字化的能力建设成本巨大…

OpenCV17-图像形态学操作

OpenCV17-图像形态学操作 1.形态学操作1.1腐蚀1.2膨胀 2.形态学应用2.1开运算2.2闭运算2.3形态学梯度2.4顶帽运算2.5黑帽运算2.6击中击不中变换2.7形态学应用示例 1.形态学操作 1.1腐蚀 图像腐蚀&#xff08;Image erosion&#xff09;可用于减小图像中物体的大小、填充孔洞或…

高压放大器有哪些实际应用场景

高压放大器是一种特殊类型的放大器&#xff0c;用于放大高电压信号。它在各种实际应用场景中发挥着重要作用。在本文中&#xff0c;安泰电子将介绍高压放大器的主要应用场景&#xff0c;让我们更好地了解这些关键技术的实际应用。 医疗设备领域&#xff1a; 高压放大器在医疗设…

2023最新短视频配音软件~

随着互联网的迅猛发展&#xff0c;网络平台上的影视剧配音逐渐成为一种热门赚钱方式。那么&#xff0c;想要参与影视剧配音赚钱&#xff0c;就需要拥有一款好用的配音软件。下面我就为大家介绍一款最新的影视剧配音神器&#xff01; 悦音配音 这是一款大家都在用的配音工具&am…

TSINGSEE烟火识别算法的技术原理是什么?如何应用在视频监控中?

AI烟火识别算法是基于深度学习技术的一种视觉识别算法&#xff0c;主要用于在视频监控场景中自动检测和识别烟雾、火焰的行为。该技术基于深度学习神经网络技术&#xff0c;可以动态识别烟雾和火焰从有到无、从小到大、从大到小、从小烟到浓烟的状态转换过程。 1、技术原理 1…

企业微信设置可信域名

可信域名的验证文件注意一定放在域名所在的根目录下。 以cloud studio为例&#xff0c;工作区新建终端的路径就是域名在的根目录&#xff0c;而不是服务器的根目录

[DRAFT] LLVM ThinLTO原理分析

我们在《论文阅读&#xff1a;ThinLTO: Scalable and Incremental LTO》中介绍了ThinLTO论文的主要思想&#xff0c;这里我们介绍下LLVM ThinLTO是如何实现的。本文主要分为如下几个部分&#xff1a; LLVM ThinLTO Object 含有哪些内容&#xff1f;LLVM ThinLTO 是如何做优化的…

Splashtop 与 Canopy 携手共同增强对物联网设备的远程管理

2023年10月17日 加利福尼亚州库比蒂诺 Splashtop 在安全远程访问解决方案领域处于领先地位&#xff0c;Canopy 则是用于复杂硬件部署的领先 RMM 平台&#xff0c;双方今天宣布达成战略合作伙伴关系&#xff0c;以进一步增强和简化对物联网设备的远程管理。通过此次合作&#x…