JavaSE-4方法 递归 数组

一、方法

public static 返回值类型 方法名{

                    方法体;

}

1)修饰符:public static 

2)形参返回值类型和实参返回值类型一致

3)方法名字:小驼峰

4)参数列表:如果方法没有参数就不写,需要指定参数类型,多个参数之间用逗号隔开。

5)方法必须写在类当中

6)方法不能嵌套定义:不能在一个方法的内部再定义另一个完整的方法

7)没有方法声明一说

二、方法调用怎样开辟栈帧的

当方法函数结束(大括号结束或者return结束) 为调用的方法创建的栈帧将会回收

 三、方法重载

一个必须一样(方法名) 、一个必须不一样(参数)、 一个不做要求 (返回值)

四、递归

如果是void无返回值,则“归”以大括号结束来往回传递;

若是int这样有返回值,则“归”以return结束来往回传递 ;

递归过程就是先调用方法函数创建栈帧连续压栈,然后走到结束判断那一步再连续出栈。

斐波那契数列递归画成图是树形,有大量重复计算,效率不高。

具体题目已上传码云

五、数组

1. 基本数据类型数组

  • 整数类型(byteshortintlong:默认值为 0
  • 浮点类型(floatdouble:默认值为 0.0
  • 字符类型(char:默认值为 '\u0000',即空字符。
  • 布尔类型(boolean:默认值为 false

2. 引用数据类型数组

引用数据类型数组的元素默认值为 null,表示不引用任何对象。

 

 

 

 

 

 

重点,数组的创建和初始化必须一步呵成,不然会报错 

 

六、数组字符串

1. 使用 Arrays.toString() 方法(适用于基本数据类型数组和对象数组)

import java.util.Arrays;public class ArrayToStringExample {public static void main(String[] args) {// 基本数据类型数组int[] intArray = {1, 2, 3, 4, 5};String intArrayString = Arrays.toString(intArray);System.out.println("基本数据类型数组转换结果: " + intArrayString);// 对象数组String[] stringArray = {"apple", "banana", "cherry"};String stringArrayString = Arrays.toString(stringArray);System.out.println("对象数组转换结果: " + stringArrayString);}
}

2. 多维数组使用 Arrays.deepToString() 方法

import java.util.Arrays;public class MultiDimensionalArrayToStringExample {public static void main(String[] args) {int[][] multiArray = {{1, 2}, {3, 4}, {5, 6}};String result = Arrays.deepToString(multiArray);System.out.println("多维数组转换结果: " + result);}
}

方法名称格式均采用小驼峰,即第一个单词首字母小写其他单词首字母大写。

七、数组拷贝

1. 手动遍历拷贝

public class ManualCopyExample {public static void main(String[] args) {int[] originalArray = {1, 2, 3, 4, 5};int[] copiedArray = new int[originalArray.length];for (int i = 0; i < originalArray.length; i++) {copiedArray[i] = originalArray[i];}// 验证拷贝结果for (int num : copiedArray) {System.out.print(num + " ");}}
}

2. 使用 System.arraycopy() 方法

System.arraycopy() 是 Java 提供的一个高效的数组拷贝方法,它是一个本地方法native(查看源码时看不到具体的实现),底层由 C 或 C++ 实现。

public class SystemArrayCopyExample {public static void main(String[] args) {int[] originalArray = {1, 2, 3, 4, 5};int[] copiedArray = new int[originalArray.length];// 参数解释:原数组, 原数组起始位置, 目标数组, 目标数组起始位置, 要复制的元素个数System.arraycopy(originalArray, 0, copiedArray, 0, originalArray.length);// 验证拷贝结果for (int num : copiedArray) {System.out.print(num + " ");}}
}

3. 使用 Arrays.copyOf() 方法

Arrays.copyOf() 是 java.util.Arrays 类提供的一个静态方法,它可以创建一个新数组,并将原数组的元素复制到新数组中。

import java.util.Arrays;public class ArraysCopyOfExample {public static void main(String[] args) {int[] originalArray = {1, 2, 3, 4, 5};int[] copiedArray = Arrays.copyOf(originalArray, originalArray.length);// 验证拷贝结果for (int num : copiedArray) {System.out.print(num + " ");}}
}

  • Arrays.copyOf() 方法接受两个参数,原数组和新数组的长度。如果新数组长度大于原数组长度,会用默认值填充剩余部分;如果小于原数组长度,则只复制前一部分元素

4. 使用 clone() 方法

数组对象可以调用 clone() 方法来创建一个新的数组,该数组包含与原数组相同的元素。

public class CloneExample {public static void main(String[] args) {int[] originalArray = {1, 2, 3, 4, 5};int[] copiedArray = originalArray.clone();// 验证拷贝结果for (int num : copiedArray) {System.out.print(num + " ");}}
}
  • clone() 方法会创建一个新的数组对象,新数组的元素与原数组相同。对于基本数据类型数组,这是一种浅拷贝;对于对象数组,同样是浅拷贝,即只复制对象的引用,而不是对象本身。

浅拷贝和深拷贝的区别

  • 浅拷贝:只复制对象的引用,而不复制对象本身。对于基本数据类型数组,浅拷贝会复制元素的值;对于对象数组,浅拷贝只会复制对象的引用,多个引用指向同一个对象。
  • 深拷贝:会创建一个新的对象,而不是复制引用。对于对象数组的深拷贝,需要手动复制每个对象,而不是仅仅复制引用。

例如,对于对象数组的深拷贝,需要在拷贝过程中为每个对象创建新的实例:

import java.util.Arrays;class Person {String name;public Person(String name) {this.name = name;}@Overridepublic String toString() {return name;}
}public class DeepCopyExample {public static void main(String[] args) {Person[] originalArray = {new Person("Alice"), new Person("Bob")};Person[] copiedArray = new Person[originalArray.length];for (int i = 0; i < originalArray.length; i++) {copiedArray[i] = new Person(originalArray[i].name);}// 修改原数组中的元素originalArray[0].name = "Charlie";// 验证深拷贝结果System.out.println(Arrays.toString(copiedArray));}
}

在这个示例中,通过手动为每个 Person 对象创建新的实例,实现了对象数组的深拷贝。修改原数组中的元素不会影响到拷贝数组中的元素。

 八、二维数组

 

 

 

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

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

相关文章

快瞳通用文档解析技术是怎样赋能下游各类大语言模型任务?

、为什么不直接用大模型去解析文档&#xff1f; 在文档、票据结构化识别这个赛道上&#xff0c;大语言模型存在天然的局限性&#xff1a; 1.结构化数据生成效率低 大模型在处理表格、公式等结构化内容时&#xff0c;需消耗大量计算资源&#xff0c;生成速度慢且成本高昂。例如…

Microk8s Ingress实现七层负载均衡

Microk8s Ingress是什么 Ingress是k8s的一种资源对象&#xff0c;用于管理外部对集群内服务的访问, 它通过提供一个统一的入口点&#xff0c;将外部流量路由到集群内部的不同服务。 Microk8s Ingress用于解决什么问题 k8s集群中服务默认只能在集群内访问。 如果需要从外部访…

C语言(19)----------->函数(2)

本文介绍了C语言的return语句及其它在C语言函数中的作用&#xff0c;以及介绍了二维数组和一维数组传参时的一些注意事项和使用数组传参时的方法。 若没有学习过C语言的一维数组和二维数组&#xff0c;建议参考如下文章&#xff1a; C语言&#xff08;15&#xff09;--------…

数据结构——单调栈

一.单调栈简介 1.1单调栈定义与特性 本质&#xff1a;单调栈是一种特殊的栈结构&#xff0c;其内部元素始终保持单调递增或单调递减的顺序。核心规则&#xff1a;当新元素入栈时&#xff0c;会通过弹出破坏单调性的栈顶元素来维持有序性。单调方向&#xff1a; 单调递增栈&…

知微传感3D相机上位机DkamViewer使用:设置相机的静态IP

写在前面 本人从事机器视觉细分的3D相机行业。编写此系列文章主要目的有&#xff1a; 1、便利他人应用相机&#xff0c;本系列文章包含公司所出售相机的SDK的使用例程及详细注释&#xff1b;2、促进行业发展及交流。 知微传感Dkam系列3D相机可以应用于定位分拣、焊接焊缝提取、…

DeepSeek掘金——DeepSeek-R1微调指南

DeepSeek掘金——DeepSeek-R1微调指南 在这篇博文中,我们将逐步指导你在消费级 GPU 上使用 LoRA(低秩自适应)和 Unsloth 对 DeepSeek-R1 进行微调。 微调像 DeepSeek-R1 这样的大型 AI 模型可能需要大量资源,但使用正确的工具,可以在消费级硬件上进行有效训练。让我们探索…

GPT-4.5来了

https://chat.xutongbao.top/

从 JVM 源码(HotSpot)看 synchronized 原理

大家好&#xff0c;我是此林。 不知道大家有没有这样一种感觉&#xff0c;网上对于一些 Java 框架和类的原理实现众说纷纭&#xff0c;看了总是不明白、不透彻。常常会想&#xff1a;真的是这样吗&#xff1f; 今天我们就从 HotSpot 源码级别去看 synchronized 的实现原理。全…

下载b站视频音频

文章目录 方案一&#xff1a;jjdown如何使用 方案二&#xff1a;bilibili哔哩哔哩下载助手如何使用进入插件网站插件下载插件安装 使用插件下载视频音频&#xff1a;复制音频下载地址 方案三&#xff1a;bat命令下载单个音频下载单个视频下载单个音视频 方案一&#xff1a;jjdo…

快速在本地运行SpringBoot项目的流程介绍

目录 前言 一、环境配置 1.1Java环境 1.2Maven环境 1.3IntelliJ IDEA安装 1.4MySql安装 二、项目导入与启动的过程 2.1Maven镜像和本地仓库 2.1.2镜像配置 2.1.3配置本地仓库 2.2导入项目与启动 2.2.1加载Maven设置 2.2.2配置jdk与java版本 2.2.3创建数据库 2.2…

分类预测 | Matlab实现CPO-SVM冠豪猪算法优化支持向量机多特征分类预测

分类预测 | Matlab实现CPO-SVM冠豪猪算法优化支持向量机多特征分类预测 目录 分类预测 | Matlab实现CPO-SVM冠豪猪算法优化支持向量机多特征分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现CPO-SVM冠豪猪算法优化支持向量机多特征分类预测&#xff…

not support ClassForName

com.alibaba.fastjson2.JSONException: not support ClassForName : java.lang.String, you can config JSONReader.Feature.SupportClassForName 官方说明中提到默认关闭&#xff0c; 可通过配置开启 JSON.config(JSONReader.Feature.SupportClassForName);

(贪心 跳跃游戏)leetcode 55

题解思路&#xff1a;代码随想录--代码随想录本题题解 本题不考虑每个结点走几步只考虑范围 在nums[0]2&#xff0c;也就是在nums[1]和nums[2]找到最大范围&#xff08;for(int i0;i<cover;i)) nums[1]3,也就是在nums[2]和nums[4]这个区间范围找到最大范围&#xff0c;而因…

Unity中动态切换光照贴图LightProbe的方法

关键代码&#xff1a;LightmapSettings.lightmaps lightmapDatas; LightmapData中操作三张图&#xff1a;lightmapColor,lightmapDir,以及一张ShadowMap 这里只操作前两张&#xff1a; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI;public cl…

leetcode 238. 除自身以外数组的乘积

题目如下 数据范围 使用两个辅助数组分别存从前乘到后面和从后到前后面再计算就行。 &#xff08;f数组没处理好还包含了本不能乘于的数所以要向后移动一位&#xff09;。通过代码 class Solution { public:vector<int> productExceptSelf(vector<int>& n…

以太坊基金会换帅,资本市场砸盘

Vitalik力挺Aya升任EF主席&#xff0c;理想主义冬日发芽&#xff1f; 作者&#xff1a;Wenser&#xff1b;编辑&#xff1a;秦晓峰 出品 | Odaily星球日报&#xff08;ID&#xff1a;o-daily&#xff09; 2 月 27 日&#xff0c;Bybit 15 亿资金被盗事件的最新调查结果将以太坊…

[含文档+PPT+源码等]精品基于Python实现的微信小程序的在线医疗咨询系统

基于Python实现的微信小程序的乡村医疗咨询系统背景&#xff0c;可以从以下几个方面进行阐述&#xff1a; 一、社会背景 医疗资源分布不均&#xff1a;在我国&#xff0c;城乡医疗资源分布不均是一个长期存在的问题。乡村地区由于地理位置偏远、经济条件有限&#xff0c;往往…

【Maven】基于IDEA进行Maven工程的创建、构建

文章目录 一、基于IDEA创建Maven工程1. 概念梳理Maven工程的GAVP2. Idea构建Maven Java SE工程3. Idea构建Maven Java Web工程3.1 创建一个maven的javase工程3.2 修改pom.xml文件打包方式3.3 设置web资源路径和web.xml路径 4. Maven工程项目结构说明 二、基于IDEA进行Maven工程…

Halcon 学习之路 生成棋盘格 set_grayval 算子

gen_imag_const 创建灰度图像 gen_image_const(Image&#xff0c;Type&#xff0c;Width&#xff0c;Height) 算子gen_image_const创建指定大小的图像&#xff0c;图像的宽度和高度由Width和Height决定 Type 像素类型 byte :每像素1字节&#xff0c;无符号&#xff08;0-255&…

一个基于C# Winform开源免费的通用快速开发框架,内置完整的权限架构!

前言 今天大姚给大家分享一个基于C# Winform开源免费&#xff08;GPL-2.0开源协议&#xff09;的通用快速开发框架&#xff0c;内置完整的权限架构&#xff1a;WinformDevFramework。 项目介绍 WinformDevFramework是一个基于C# Winform开源免费&#xff08;GPL-2.0开源协议…