【Java】保姆级“方法“教学

article/2025/8/26 16:41:49

目录

一、前言

二、方法

1、方法的概述

2、方法的定义和调用

格式1:

示例图1:

 示例图2:

 代码1:

代码2:

格式2:

修饰符访问权限范围:

本章主要内容:

3、带参数方法的定义和调用

方法定义:

格式1:(带static的方法定义)

示例图:​

 代码:

错误示例1:参数类型不同​

 错误示例2:参数个数不同

格式2:方法中不带static

方法调用:

4、带返回值的参数方法定义和调用

方法定义格式:

示例:​

代码: 

5、嵌套定义和嵌套调用

错误写法:

正确的写法:

6、方法重载

什么是方法重载?

7、方法的参数传递

1、基本数据类型的传递

代码:

演示运行图:

2、引用数据类型的传递

引用数据类型的概念:

演示图:

​ 代码: 


一、前言

 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站前言 – 床长人工智能教程正在上传…重新上传取消https://www.cbedai.net/gkbskc正在上传…重新上传取消https://www.cbedai.net/gkbskcicon-default.png?t=M5H6https://www.cbedai.net/gkbskc

前面我们学习了数组的概念和使用,现在我们来学习Java中的方法,这个方法和c语言的

函数十分相似。

二、方法

1.方法的概述

2.方法的定义和调用

3.带参数方法的定义和调用

4.带返回值方法的定义和调用

5.方法的注意事项

6.方法重载

7方法的参数传递

1、方法的概述

方法是具有一定功能的代码段,我们通过这个来解决问题,是一段代码的集合。

(相当于c语言中的函数)

2、方法的定义和调用

方法的定义

格式1:

public static void 方法名{//方法的内容
}

其中static说明这是静态方法。静态成员和静态方法只能访问静态成员和方法,若是要

访问非静态成员或方法,则需要通过创建对象来访问,形如  类名  标识符=new 类名(); 

而非静态的成员既可以访问静态成员和方法也可以访问非静态成员和方法。

(这是后期的内容,提前涉及一下)

示例图1:

 示例图2:

 代码1:

package com.haha;public class test {public static void main(String[] args) {hello();//在同一类下,静态成员之间的访问直接通过  方法名();}public static void hello(){System.out.println("好好学习,天天编程");}
}

代码2:

package com.haha;public class test1 {public static void main(String[] args) {test1 nb=new test1();//创建对象nb.hello();//若静态方法想访问非静态方法,则得通过创建对象才能访问}public void hello(){//没有static表示非静态方法System.out.println("好好学习,天天编程");}
}

格式2:

public 返回类型 方法名(){//方法定义的实现
}
public int haha(){
}

其实定义方法十分简单,形如c语言的函数即可,只不过在java多了一些修饰符public

、private、protected等之类的修饰符,这些修饰符作用是访问权限。

修饰符访问权限范围:

本章主要内容:

1.带参数方法的定义和调用

2.带返回值的方法定义和调用

3、带参数方法的定义和调用

方法定义:

格式1:(带static的方法定义)

public static void 方法名(参数){
//方法内容
}

示例:

public static void compare(int a,int b){System.out.println(a>b?a:b);
}

注意:一个程序要想运行则比须要有main方法,程序就是从main方法进入的。所以比较完

整的写法是:

示例图:

 代码:

package com.test;public class 比较 {public static void main(String[] args) {compare(10,20);}public static void compare(int a,int b){System.out.println(a>b?a:b);}
}

注意在定义方法时,调用中的参数要和方法中的参数一一对应,以及参数类型也要一一对

应,否则会报错。如上图中的compare(int,int)方法定义了两个int类型的方法,那么在其他方

法中(不一定是main方法)调用也要写两个int类型的参数。其实方法可以重载的,重载就是参

数个数或参数类型至少有一个不同...(下篇细讲)

错误示例1:参数类型不同

 错误示例2:参数个数不同

格式2:方法中不带static

这个当main方法调用他时,则需要在main方法中先创建对象(以前讲过)

在同一类中,其他不带static方法可以直接调用其他方法(上篇讲过,不重复了)

方法调用:

格式是:方法名();

是不是超级简单,其中括号里的参数要和定义的参数一致。

如:compare(10,20);也可以通过Scanner数入参数

4、带返回值的参数方法定义和调用

仔细看是不是就只和上面那个多了返回值这三个字,实际上这定义的时候也是多这一个。

方法定义格式:

(也是分带不带static的,和上面一样,所以我就不分开讲了)

public  static 返回类型 方法名(参数){
//方法体
return 数据
}

如:

public static int compare(int a,int b){return a>b?a:b;
}

注:带返回值的方法必须要有return返回一个以上的数据,否则报错,而返回类型为

void的,可以有return,但是return后啥也不跟,直接return;即可。

示例:

代码: 

package com.test;public class 比较 {public static void main(String[] args) {int a=compare(10,20);System.out.println(a);}public static int compare(int a,int b){return a>b?a:b;}
}

注:调用方法时,必须要有一个变量去接受返回类型(不接收也不会报错的),没有任何

变量去接受返回的值是没有任何意义的

5、嵌套定义和嵌套调用

方法不能嵌套定义,但是可以嵌套调用,

什么是嵌套定义,其实就是一个方法套了另一个方法

什么是嵌套套用,就是各个方法的来往调用,一个方法可以调用一个或多个,

如方法a调用方法b,方法b调用了方法c、d等等。

错误写法:

public static void main(String[] args){public static void getmax(int a,int b){}
}

此时就有问题了,main方法嵌套了getmax方法。

正确的写法:

public static void main(String[] args){} public static void getmax(int a,int b){}

6、方法重载

我们知道方法是java常用的,在我们写代码的过程经常会使用到,但是我们在调用同

功能的方法要传不同类型的数据时如果我们定义很多方法多有不方便,所以java中给

出了方法重载。

什么是方法重载?

重载也叫重写,他满足一下条件:

1、同一方法名

2、数据类型的种类不同或数据个数不同或顺序不同(三个满足一个或多个即可)

3、定义的方法放在同一个类下

如:初始方法的重载

public static void add(float f,int i)

以下都属于上面方法的重载:

种类不同:

public static void add(float f,float i)
public static void add(int a,int n)

 数据个数不同:

public static void add(float f,int i,float v)

顺序不同:

public static void add(int i,float f)

注意:顺序不同必须是两个数据类型换了位置,而不是参数名,参数名的取值是任意的

错误写法:

public static void add(float i,int f)

注:方法的重载和返回类型没有关系

如下面这两个属于同一个方法:

public static int add(float f,int i)
public static void add(float f,int i)

7、方法的参数传递

1、基本数据类型的传递

所谓几本数据类型就是8大基本数据类型(byte char short int boolean float long double)

对于基本数据类型的传递,形参的改变是不会改变实参的值的

这相当于c语言中的传值调用。

如:

代码:


public class Demo {public static void main(String[] args) {int a=10;play(a);System.out.println("实参的a的值是"+a);}public static void play(int a){a=100;System.out.println("形参中a的值是"+a);}
}

演示运行图:

2、引用数据类型的传递

除了8大基本数据类型之外其余的是引用数据类型

引用数据类型的概念:

引用类型 就是只变量中存储的不是值而是一个内存中的地址的数据类型也就是说

变量中存储了这个变量的值所在内存中的地址 每次调用这个变量都是引用这个

地址而得到真正的值 所以叫引用类型

引用类型:

是一个对象类型,它的值是指向内存空间的引用,其实就是地址所指向的内存所保存的值

 说白了,传引用就是c语言中的传址,传址,实参会随着形参的改变而改变

演示图:


 

代码: 

public class Demo1 {public static void main(String[] args) {int[]arr={1,2,3,4};System.out.println("调用前arr[0]:"+arr[0]);arrDemo(arr);System.out.println("调用后arr[0]:"+arr[0]);}public static void arrDemo(int[]arr){arr[0]=10;}
}


http://chatgpt.dhexx.cn/article/1Wt8rvY5.shtml

相关文章

java方法(超详细)

一、概述 方法,也称函数,如果想要重复一段或者多段代码块的使用,可以将这些代码封装成一个方法,方法具体表现为某种行为,使用方法可以提高代码的复用性。 二、方法的声明 1.组成 访问权限符 返回值 方法名&#x…

【自然语言处理】3. NMT机器翻译案例实战(基于TensorFlow Addons Networks with Attention Mechanism)

NLP系列讲解笔记 本专题是针对NLP的一些常用知识进行记录,主要由于本人接下来的实验需要用到NLP的一些知识点,但是本人非NLP方向学生,对此不是很熟悉,也是因为本人对NLP灰常感兴趣,想扎进去好好研究研究,所…

使用NMT和pmap解决JVM资源泄漏问题

NMT NMT是Native Memory Tracking的缩写,一个JDK自带的小工具,用来跟踪JVM本地内存分配情况(本地内存指的是non-heap,例如JVM在运行时需要分配一些辅助数据结构用于自身的运行)。 NMT功能默认关闭,可以在J…

机器翻译-subword-nmt预处理语料

在机器翻译中,目前都采用的方法是bpe切分子词的方法来处理翻译中的未登录词。 如何使用? https://github.com/rsennrich/subword-nmt这里面已经写了详细的方法,本文主要记录我处理中英语料时的步骤。 1.共享词典 直接clone了这个项目&…

学习CANopen --- [3] NMT报文

本文主要讲述CANopen中的NMT报文,即网络管理(Network ManagemenT),该服务可以用于启动网络和监控设备。 NMT报文由NMT主机发送,对从机进行启动、监控和重启,在CANopen网络中只允许有一个活动的NMT主机。如…

论文引介 | NMT with Conditional Sequence Generative Adversarial Nets

文章原名:Improving Neural Machine Translation with Conditional Sequence Generative Adversarial Nets 作者:Zhen Yang, Wei Chen, Feng Wang and Bo Xu 单位:Institute of Automation, Chinese Academy of Sciences 译者:韩旭…

NMT对抗训练的三部曲

来自:天宏NLP 进NLP群—>加入NLP交流群 本文主要介绍NMT模型鲁棒性的相关改进工作,介绍一下对抗训练的三部曲,一作皆是ChengYong,分别中了2018,2019和2020的ACL。 第一项工作为 Towards Robust Neural Machine Tran…

手把手教你用fairseq训练一个NMT机器翻译系统

以构建英-中NMT为例,在linux上运行,fairseq版本为0.8.0 环境准备 Requirements: fairseq:pytorch包,包括许多网络结构,https://github.com/pytorch/fairseqmosesdecoder:机器翻译的标准数据处…

00_NMT网络管理的模块控制

目录 NMT服务 NMT错误控制 NMT 节点守护 HeartBeat Message 心跳报文 NMT Boot-up 在can网络中,只有主站可以发送控制信息,来控制从站,从站不需要发送对网络控制消息的响应消息。 网络管理系统负责初始化、启动及停止网络及网络中的设备…

Canopen协议 (1):网络状态管理(NMT)

工控应用中,常常会遇到一些设备:电机或者其他传感器需要通过Can 这个硬件接口来通信,而且往往通信协议都是走的都是Canopen协议。自己当初搞的时候对协议也是云里雾里,为了大家不走歪路,早日走上人生巅峰,这…

canopen学习总结(一)——NMT网络管理

[1] NMT网络管理 [1-1]概念: NMT到底是啥? 答:简单理解就是由一台主机来管理从机,主机可以控制从机的状态。 那么机器到底有哪些状态呢? 答:看下面这图,总共就这些状态 [1-2]命令&#xff1…

NMT

1)刚开始时,在RNN的基础上引入attention,即将两者结合应用,完整解释并附上完整code。详见下链接: 基于RNNAttention的机器翻译 2)接着,Facebook在CNN的基础上引入attention,参见论…

Neural Machine Translation(NMT)技术概述

在神经网络语言模型处理NLP领域,我做的研究一直都和文本分类相关,其实还有很多其他的应用领域,比方说:语言翻译、词性标注、命名实体识别等。感觉还是有必要了解一下如何用神经网络语言模型对这些应用进行建模的。因此&#xff0c…

NMT with Attention

1.数据准备 termcolor.colered 对输出进行染色,凸显。colored(f"tokenize(hello): ", green) from termcolor import colored import random import numpy as npimport trax from trax import layers as tl from trax.fastmath import numpy as fastnp …

CANopen通信之NMT通信

在介绍NMT通信机制之前,先介绍一下NMT这个通信对象的定义。在以下部分中COB-ID使用的是 CANopen 预定义连接集中已定义的缺省标志符。 1) NMT 模块控制( NMT Module Control) 只有 NMT-Master 节点能够传送 NMT Module Control 报文。 所有从…

NMT:神经网络机器翻译

前言 SMT是在神经网络之前最主流的翻译模式,统计机器翻译;NMT则是基于神经网络的翻译模式,也是当前效果最好的翻译模式。现在基于几篇paper来梳理下神经网络下的翻译模型。 NMT based RNN 1) First End-to-End RNN Trial   2014年&…

神经机器翻译(Neural machine translation, NMT)学习笔记

神经机器翻译(Neural machine translation, NMT)是最近提出的机器翻译方法。与传统的统计机器翻译不同,NMT的目标是建立一个单一的神经网络,可以共同调整以最大化翻译性能。最近提出的用于神经机器翻译的模型经常属于编码器-解码器…

Java本机内存跟踪NMT实战详解

JVM通常会额外分配内存。这些额外的分配,会导致java程序占用的内存,超出-Xmx的限制。让我们使用NMT查看内存的使用情况 NMT 是什么 NMT 是一种 Java Hotspot VM 功能,用于跟踪 HotSpot VM 的内部内存使用情况。您可以使用该jcmd实用程序访问…

fastText模型

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 目标一、fastText的模型架构1. N-gram的理解1.1 bag of word 2. fastTex模型中层次化的softmax2.1 哈夫曼树和哈夫曼编码2.1.1 哈夫曼树的定义2.1.2 哈夫曼树的相关…

fastText Python 教程

诸神缄默不语-个人CSDN博文目录 fastText Python官方GitHub文件夹网址:fastText/python at main facebookresearch/fastText 本文介绍fastText Python包的基本教程,包括安装方式和简单的使用方式。 我看gensim也有对fasttext算法的支持(ht…