初识Java 2

news2025/1/12 23:40:44

目录

一.方法(函数)

1.方法的定义

2.方法的调用过程

3.实参与形参的关系

4.方法的重载

5.方法签名(了解)

6.递归(常用于数列,阶乘)

二.数组

1.定义方法:

2.初始化:

3.注意:

4.遍历数组

5.数组特性:引用类型

6.冒泡查询 (同C语言中提到过的一样)

7.数组拷贝:

​编辑

8.二维数组:

附加:

前提导入包情况下用下述方法

常见报错分析:


一.方法(函数)

1.方法的定义
 

修饰符 返回值类型 方法名称([参数类型 形参 ...]){
方法体代码;
[return 返回值];
}

注意事项:

1. 修饰符:现阶段直接使用 public static 固定搭配
2. 返回值类型:如果方法有返回值,返回值类型必须要与返回的实体类型一致,如果没有返回值,必须写成 void
3. 方法名字:采用小驼峰命名(特点是第一个单词小写字母开始,后续每个单词的首字母都大写
4. 参数列表:如果方法没有参数,()中什么都不写,如果有参数,需指定参数类型,多个参数之间使用逗号隔开(由于Java中没有指针,方法调用只是参数的赋值对实参没任何影响。)
5. 方法体:方法内部要执行的语句
6. java 当中,方法必须写在类当中
7. java 当中,方法不能嵌套定义
8. 在java当中,没有方法声明一说(代表java代码不是自上而下的读的,而是是全局的)

2.方法的调用过程

调用方法 --- > 传递参数 --- > 找到方法地址 --- > 执行被调方法的方法体 --- > 被调方法结束返回 --- > 回到主调方法继续往下执行
注意: 定义方法的时候, 不执行方法的代码 . 只有调用的时候才会执行 .   一个方法可以被多次调用 .

3.实参与形参的关系

实参☞主代码中传入方法的值(如下图a,b),形参☞方法构建中的参数(如图x,y)。
public class TestMethod {
public static void main(String[] args) {
int a = 10;
int b = 20;
swap(a, b);
System.out.println("main: a = " + a + " b = " + b);
}
public static void swap(int x, int y) {
int tmp = x;
x = y;
y = tmp;
System.out.println("swap: x = " + x + " y = " + y);
}
}
注意:在 Java中,实参的值永远都是拷贝到形参中,形参和实参本质是两个实体。
如上图当打印结果时a,b值不变,x,y值发生改变。

4.方法的重载

产生的原因:当多种形式的参数做同一种功能时,由于参数定义的数据类型不同所以即使是同功能方法也要写成不同方法名的方法。
定义: Java 中,如果多个方法的名字相同,参数列表不同,则称该几种方法被重载了 。(这样可以让相似功能的不同方法使用统一方法名)。
注意定义的方法:
1. 方法名必须相同
2. 参数列表必须不同(参数的个数不同、参数的类型不同、类型的次序必须不同)(用于系统能更好的分辨使用的方法)
3. 与返回值类型是否相同无关
4. 编译器在编译代码时,会对实参类型进行推演,根据推演的结果来确定调用哪个方法

5.方法签名(了解)

定义:经过编译器编译修改过之后方法最终的名字。具体方式:方法全路径名+参数列表+返回值类型,构成 方法完整的名字。

6.递归(常用于数列,阶乘)

定义:一个方法在执行过程中调用自身, 就称为 "递归"

产生原因:遇到的问题直接并不好解决,但是发现将原问题拆分成其子问题之后,子问题与原问题有相同的解法,等子问题解决之后,原问题就迎刃而解了。

注意:递归非常的费内存如下图:

代码示例: 递归求 N 的阶乘
public static void main(String[] args) {
int n = 5;
int ret = fac(n);
System.out.println("ret = " + ret);
}
public static int fac(int n) {
System.out.println("函数开始, n = " + n);
if (n == 1) {
System.out.println("函数结束, n = 1 ret = 1");
return 1;
}
int ret = n * fac(n - 1);
System.out.println("函数结束, n = " + n + " ret = " + ret);
return ret;
}

二.数组

基本概念:相同类型元素的一个集合(与C语言数组含义相似)

1.定义方法:

T[] 数组名 = new T[N];
T:表示数组中存放元素的类型
T[]:表示数组的类型
N:表示数组的长度

2.初始化:


(1).动态初始化:在创建数组时,直接指定数组中元素的个数

int[] arry=new int[10]

(2). 静态初始化:在创建数组时不直接指定数据元素个数,而直接将具体的数据内容进行指定(非边长数组)(数组内全体赋值只能在此时进行,之后只能单个单个的赋值)

int[] arry={1,2,4,5,6};

3.注意:

1. 数组中存放的元素其类型相同
2. 数组的空间是连在一起的
3. 每个数组成员有自己的编号,其实位置由编号为 0开始 ,即数组的下标。
4.数组变量内存放数组的首地址
5. 如果没有对数组进行初始化,数组中元素有其默认值(为基类类型,默认值为基类类型对应的默认值,boolean默认fales)(引用类型,默认值为null)

4.遍历数组

//正常循环遍历
int[]array = new int[]{10, 20, 30, 40, 50};
for(int i = 0; i < array.lengh; i++)//在数组中可以通过 数组对象.length 来获取数组的长度
{System.out.println(array[i]);}
//for-each
int[] array = {1, 2, 3};
for (int x : array) {
System.out.println(x);
}//for-each 是 for 循环的另外一种使用方式. 能够更方便的完成对数组的遍历. 可以避免循环条件和更新语句写错.

5.数组特性:引用类型

基本类型变量与引用类型变量的区别
基本数据类型创建的变量,称为基本变量,该变量空间中直接存放的是其所 对应的值
而引用数据类型创建的变量,一般称为对象的引用,其空间中存储的是对象所在空间的 地址

6.冒泡查询 (同C语言中提到过的一样)

        

public static void main(String[] args) {
int[] arr = {9, 5, 2, 7};
bubbleSort(arr);
System.out.println(Arrays.toString(arr));
}

public static void bubbleSort(int[] arr) {
for (int i = 0; i < arr.length; i++) {
for (int j = 1; j < arr.length-i; j++) {
if (arr[j-1] > arr[j]) {
int tmp = arr[j - 1];
arr[j - 1] = arr[j];
arr[j] = tmp;
}
}
} 
}

查找

1.顺序查找:一个个顺序比对找。

2.二分查找:折中查找找中间值大在右小在左。

7.数组拷贝:

方法1利用循环一一赋值
public static void sam{
int[] arr={1,2,3};
int[] arr2=int[3]
for(int a=0;a<arr.lengh,a++)
{arr2[a]=arr[a]}

}
方法2操作的还是同一数组
public static void func(){
// newArr和arr引用的是同一个数组
// 因此newArr修改空间中内容之后,arr也可以看到修改的结果
int[] arr = {1,2,3,4,5,6};
int[] newArr = arr;

方法3.特殊方法的使用
(1).使用Arrays.copyOf(origon,lengh/[范围])

public static void sam{
int[] arr={1,2,3};
int[] arr2=Arrays.copyOf(arr,arr.lengh/[下角标范围])
int[] arr2=Arrays.copyOf(arr,2,4)

(2).使用Arrays.copyOfRange(origon,源要开始复制的元素的下角标,目的,目的开始复制的元素的下角标,传输的长度int )
如下图

8.二维数组:

定义: int[][] arr={{1,2,3,4},{4,5,6,7}};

本质为一维数组,数组名存一维数组首地址,一维数组里面首元素村第一列数据的首地址,第n个元素存第n列数据的首元素。

附加:

前提导入包情况下用下述方法

Arrays.sort=自定义排序(默认升序排列)

Arrarys.tostring数组转字符串

Arrarys.equals判断相等否

Arrarys.fill(name,value)填充value

tostring方法隶属于数组对象中可以将数组转化成字符串便于打印。

常见报错分析:

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

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

相关文章

react-quill 富文本组件编写和应用

index.tsx文件 import React, { useRef, useState } from react; import { Modal, Button } from antd; import RichEditor from ./RichEditor;const AnchorTouchHistory: React.FC () > {const editorRef useRef<any>(null);const [isModalVisible, setIsModalVis…

关于扫描模型 拓扑 和 传递贴图工作流笔记

关于MAYA拓扑和传递贴图的操作笔记 一、拓扑低模: 1、拓扑工作区位置: 1、准备出 目标 高模。 (高模的状态如上 ↑ )。 2、打开顶点吸附,和建模工具区,选择四边形绘制. 2、拓扑快捷键使…

【Rust自学】11.9. 单元测试

喜欢的话别忘了点赞、收藏加关注哦&#xff08;加关注即可阅读全文&#xff09;&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 11.9.1. 测试的分类 Rust把测试分为两类&#xff0c;一个是单元测试&#xff0c;一个是集成…

【竞技宝】CS2:HLTV2024选手排名TOP4-NiKo

北京时间2025年1月11日,HLTV年度选手排名正在持续公布中,今日凌晨正式公布了今年的TOP4选手为G2(目前已转为至Falcons)战队的NiKo。 选手简介 NiKo是一名来自波黑的CS职业选手,现年26岁。作为DOTA2饱负盛名的职业选手,NiKo在CS1.6时代就已经开始征战职业赛场。2012年,年仅15岁…

rom定制系列------小米max3安卓12 miui14批量线刷 默认开启usb功能选项 插电自启等

小米Max3是小米公司于2018年7月19日发布的机型。此机型后在没有max新型号。采用全金属一体机身设计&#xff0c;配备6.9英寸全面屏.八核处理器骁龙636&#xff0c;后置双摄像头1200万500万像素&#xff0c;前置800万像素.机型代码 &#xff1a;nitrogen.官方最终版为稳定版12.5…

Linux第一课:c语言 学习记录day06

四、数组 冒泡排序 两两比较&#xff0c;第 j 个和 j1 个比较 int a[5] {5, 4, 3, 2, 1}; 第一轮&#xff1a;i 0 n&#xff1a;n个数&#xff0c;比较 n-1-i 次 4 5 3 2 1 // 第一次比较 j 0 4 3 5 2 1 // 第二次比较 j 1 4 3 2 5 1 // 第三次比较 j 2 4 3 2 1 5 // …

Cline(原Claude Dev)开源的IDE AI插件,如何搭配OpenRouter实现cursor功能,Cline怎么使用

Cline&#xff08;原Claude Dev&#xff09;是一个开源的IDE AI插件&#xff0c;可以使用你的命令行界面和编辑器的人工智能助手。 你可以直接在VS Code编辑器进行安装。如果你使用过Cursor AI IDE的话&#xff0c;可以尝试最新发布的Cline3.1版本。 在OpenRouter上&#xff0…

arcgis的合并、相交、融合、裁剪、联合、标识操作的区别和使用

1、相交 需要输入两个面要素&#xff0c;最终得到的是两个输入面要素相交部分的结果面要素。 2、合并 合并能将两个单独存放的两个要素类的内容&#xff0c;汇集到一个要素类里面。 3、融合 融合能将一个要素类内的所有元素融合成一个整体。 4、裁剪 裁剪需要输入两个面要…

【Rust自学】11.7. 按测试的名称运行测试

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 11.7.1. 按名称运行测试的子集 如果想要选择运行的测试&#xff0c;就将测试的名称&#xff08;一个或多个&#xff09;作为cargo test的…

利用Java爬虫获取义乌购店铺所有商品列表:技术探索与实践

在当今数字化时代&#xff0c;数据的重要性不言而喻。对于采购商和市场分析师而言&#xff0c;能够快速获取并分析供应商店铺内的所有商品信息&#xff0c;是制定有效采购策略和市场分析的关键。义乌购作为国内知名的在线批发平台&#xff0c;拥有海量的商品数据。本文将介绍如…

An FPGA-based SoC System——RISC-V On PYNQ项目复现

本文参考&#xff1a; &#x1f449; 1️⃣ 原始工程 &#x1f449; 2️⃣ 原始工程复现教程 &#x1f449; 3️⃣ RISCV工具链安装教程 1.准备工作 &#x1f447;下面以LOCATION代表本地源存储库的安装目录&#xff0c;以home/xilinx代表在PYNQ-Z2开发板上的目录 ❗ 下载Vivad…

Photoshop PS批处理操作教程(批量修改图片尺寸、参数等)

前言 ‌Photoshop批处理的主要作用‌是通过自动化处理一系列相似的操作来同时应用于多张图片&#xff0c;从而节省时间和精力&#xff0c;提高工作效率。批处理功能特别适用于需要批量处理的任务&#xff0c;如图像尺寸调整、颜色校正、水印添加等‌。 操作步骤 1.创建动作 …

互联网架构变迁:从 TCP/IP “呼叫” 到 NDN “内容分发” 的逐浪之旅

本文将给出关于互联网架构演进的一个不同视角。回顾一下互联网的核心理论基础产生的背景&#xff1a; 左边是典型的集中控制通信网络&#xff0c;很容易被摧毁&#xff0c;而右边的网络则没有单点问题&#xff0c;换句话说它很难被全部摧毁&#xff0c;与此同时&#xff0c;分…

nvim 打造成可用的IDE(2)

上一个 文章写的太长了&#xff0c; 后来再写东西 就一卡一卡的&#xff0c;所以新开一个。 主要是关于 bufferline的。 之前我的界面是这样的。 这个图标很不舒服有。 后来发现是在这里进行配置。 我也不知道&#xff0c;这个配置 我是从哪 抄过来的。 测试结果&#xff1…

drawDB docker部属

docker pull xinsodev/drawdb docker run --name some-drawdb -p 3000:80 -d xinsodev/drawdb浏览器访问&#xff1a;http://192.168.31.135:3000/

Redis--20--大Key问题解析

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 大Key问题1.什么是 Redis 大 Key&#xff1f;在 Redis 中&#xff0c;大 Key 是指单个键值对的数据量非常大&#xff0c;可能包含大量数据。 2. Redis大Key的危害3.…

自动驾驶---E2E架构演进

1 背景 模型最早应用的自动驾驶模块就是感知层面&#xff0c;随着技术的发展&#xff0c;逐渐开始应用到决策规划等其它模块。端到端自动驾驶架构是一种基于深层神经网络模型和方法的自动驾驶技术模式。目前一段式端到端系统只有在英伟达早期所做的demo中实现&#xff0c;再者就…

如何优雅地绘制时序图

说到时序图&#xff0c;相信所有从事嵌入式开发的伙伴都非常熟悉&#xff0c;在各种元器件手册以及处理器说明书中&#xff0c;但凡涉及到通信、接口、交互等内容&#xff0c;都会涉及到时序图。时序图可以非常详细且明确地描述硬件及软件接口中各个信号的时序关系&#xff0c;…

SpringCloud系列教程:微服务的未来(十一)服务注册、服务发现、OpenFeign快速入门

本篇博客将通过实例演示如何在 Spring Cloud 中使用 Nacos 实现服务注册与发现&#xff0c;并使用 OpenFeign 进行服务间调用。你将学到如何搭建一个完整的微服务通信框架&#xff0c;帮助你快速开发可扩展、高效的分布式系统。 目录 前言 服务注册和发现 服务注册 ​编辑 …

WebGIS在应急灾害中对村庄、风景区、机场的影响范围应用-以日喀则市定日县地震为例

目录 前言 一、关于影响范围 1、震中距离5公里 2、震中20公里范围 3、20到80公里范围 二、空间查询知识 1、相关数据介绍 2、空间数据查询 三、前后端数据查询以及web可视化实现 1、后台API实现 2、WebGIS前端实现 四、Web成果展示 1、空间位置分析 2、包含风景区…