方法的所属性

  在Java的语言中,方法相当于C语言中的函数,但是它与传统的函数也有着明确的不同:在结构化的语言中,函数是一等公民,整个程序是由一个个函数组成的;但是在面向对象的语言里,类是一等公民,整个程序是由一个个类组成的。因此在Java中,方法不能独立存在,它只能属于类或者对象。因此,如果我们要定义一个方法,就必须在类中定义。值得注意的是,如果这个方法添加了修饰符static(这个修饰符后面会详细说明),这个方法就属于这个类,否则的话,这个方法属于这个类的实例。

  我们调用方法的方式为:类.方法 | | 实例.方法。但是当我们在一个类中的方法调用相同类中的方法时,如果这个方法是普通的方法,我们需要用到this来调用;如果这个方法是静态的方法(static修饰),我们需要用类名来调用。

方法的格式说明

(1).方法的格式定义为:

修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) {
  方法体语句;
  return 返回值;
}

修饰符:目前就用 public static。后面我们再详细的讲解其他的修饰符。
返回值类型:就是功能结果的数据类型。当这个方法没有返回值的时候,返回值的类型为void;当这个方法有返回值的时候,返回值的类型根据返回的数据来确定(如果有返回值,必须使用return)。

方法名:符合命名规则即可。

参数:实际参数:就是实际参与运算的。形式参数;就是方法定义上的,用于接收实际参数的。

参数类型:就是参数的数据类型
参数名:就是变量名
方法体语句:就是完成功能的代码。
return:结束方法的。
返回值:就是功能的结果,由return带给调用者。

方法的参数传递机制

方法的参数分为两种:形参和实参。形参代表方法定义上的,用于接收实际参数的参数。实参代表实际参与运算的参数。

Java中方法的参数传递都是通过值传递实现的,所谓值传递,就是将实际参数值的副本传入方法内,而参数本身不会受到任何影响。例子如下:

//a,b交换值的例子,但是这个只是值传递,a和b的值不会变
public class fun {
public static void main(String[] args) {
int a = 3,b = 4;
fun1(a,b); //实参
System.out.println(a+"+++++"+b);
}
//类中的方法都用public static为前缀
public static void fun1(int a,int b){ //形参
int temp;
temp = a;
a = b;
b = temp;
System.out.println(a+"========"+b);
}
} //输出结果为:
4========3
3+++++4

形参个数可变的方法

形参个数可变表示允许为方法指定数量不确定的形参。如果在方法定义时,在最后一个形参的类型后加三个点(...),则表明该形参可以接受多个参数值,多个参数值被当成数组传入。例子如下:

public class fun {
public static void main(String[] args) {
fun1(4,"abc","dsa","bfd");
}
public static void fun1(int a,String... books){ //这里面的String... books相当于String[] books
for(String book:books){
System.out.println(book);
}
System.out.println(a);
}
}

但是形参个数可变的这个方法要求,个数可变的形参只能处于形参列表的最后位置,即一个方法中最多只能有一个个数可变的形参。

方法重载

  在Java方法的执行过程中,重载的概念是相当重要的。Java允许同一个类中定义多个同名的方法,只要形参列表不同即可。如果同一个类中包含了两个或两个以上的方法名相同,但是形参列表不同(与返回值类型无关),我们则成为方法重载。所谓的重载就是要求两同一不同:同一个类中方法名相同,参数列表不同。对于方法其他部分(返回值类型,修饰符等)与重载没有任何关系。参数列表不同包括:A:参数个数不同。B:参数类型不同。C:参数的顺序不同(算重载,但是在开发中不用)

下面例子中演示了类中方法的重载:

public class fun {
public static void main(String[] args) {
int a = 1;
int b = 2;
String c = "abc";
fun1(a);
fun1(a,b);
fun1(a,c);
}
public static void fun1(int a){
System.out.println(a);
}
public static void fun1(int a,int b){
System.out.println(a+"==="+b);
}
public static void fun1(int a,String b){
System.out.println(a+"==="+b);
}
} //最终结果
1
1===2
1===abc

为了我们共同进步,我这里有计算机专业的各种免费视频,

如果想要,关注我的公众号:念流声。私聊我,看到后给你连接(只放了一张图片,视频有很多,需要什么可以私聊问我,有的话就给你)。

Java基础之方法详解的更多相关文章

  1. java的sleep方法详解

    java的sleep方法详解: sleep并不是永久占有CPU,没有那个线程能永久占用CPU.它是指在自己时间片内睡眠,而不是急着交出CPU.yield()就是自己愿意立即交出时间片.因此一个线程sl ...

  2. Java基础之 数组详解

    前言:Java内功心法之数组详解,看完这篇你向Java大神的路上又迈出了一步(有什么问题或者需要资料可以联系我的扣扣:734999078) 数组概念 同一种类型数据的集合.其实数组就是一个容器. 数组 ...

  3. java基础之:详解内部类(转载)

    可以将一个类的定义放在另一个类的定义内部,这就是内部类. 内部类是一个非常有用的特性但又比较难理解使用的特性(鄙人到现在都没有怎么使用过内部类,对内部类也只是略知一二). 第一次见面 内部类我们从外面 ...

  4. Java多线程——多线程方法详解

    本系列文章是Java多线程的详解介绍,对多线程还不熟悉的同学可以先去看一下我的这篇博客Java基础系列3:多线程超详细总结,这篇博客从宏观层面介绍了多线程的整体概况,接下来的几篇文章是对多线程的深入剖 ...

  5. Java——多线程之方法详解

    Java多线程系列文章是Java多线程的详解介绍,对多线程还不熟悉的同学可以先去看一下我的这篇博客Java基础系列3:多线程超详细总结,这篇博客从宏观层面介绍了多线程的整体概况,接下来的几篇文章是对多 ...

  6. java native本地方法详解(转)

    文章链接出处: 详解native方法的使用 自己实现一个Native方法的调用 JNI 开始本篇的内容之前,首先要讲一下JNI.Java很好,使用的人很多.应用极 广,但是Java不是完美的.Java ...

  7. selenium+Java,xpath定位方法详解(搬运留存)

    用xpath绝对路径比较费事费力,还容易报错,下面几种模糊定位比较灵活好用 driver.findElement(By.xpath("//*[@id='J_login_form']/dl/d ...

  8. Java ArrayList排序方法详解

    由于其功能性和灵活性,ArrayList是 Java 集合框架中使用最为普遍的集合类之一.ArrayList 是一种 List 实现,它的内部用一个动态数组来存储元素,因此 ArrayList 能够在 ...

  9. Java基础知识面试题详解(2019年)

    文章目录 1. 面向对象和面向过程的区别 2. Java 语言有哪些特点? 3. 关于 JVM JDK 和 JRE 最详细通俗的解答 JVM JDK 和 JRE 4. Oracle JDK 和 Ope ...

随机推荐

  1. mysql的my.sock不存在问题

    因为是初步学习Linux,所以为了对其更加了解,没有使用yum对mysql进行安装,而是使用xftp6的方式上传然后解压安装 1.在安装过程中,好像如果不安装在usr/local目录下会存在不能启动的 ...

  2. python 并发编程 多进程 目录

    python multiprocessing模块 介绍 python 开启进程两种方法 python 并发编程 查看进程的id pid与父进程id ppid python 并发编程 多进程 Proce ...

  3. kafka消费者脚本无法启动问题

    console-consumer can't rebalance after 4 retries 解决方案:kafka0.9版本换成1.0版本 究竟是怎么回事我也不知道

  4. Python中classmethod和staticmethod的区别

    学习python中经常会出现一些相近或者相似的语法模块等,需要对比分析才能加深记忆,熟练运用. staticmethod:静态方法 classmethod:类方法 在python中,静态方法和类方法都 ...

  5. [转帖]CentOS 7 使用kubeadm 部署 Kubernetes

    CentOS 7 使用kubeadm 部署 Kubernetes   关闭swap 执行swapoff临时关闭swap. 重启后会失效,若要永久关闭,可以编辑/etc/fstab文件,将其中swap分 ...

  6. 浅拷贝&深拷贝

    浅拷贝新的对象指向原来对象的地址 深拷贝新的对象中,原来是可变对象,会新复制一份值指向新的地址[11,22,33]若原来的对象里含有可变对象,里面的这个可变对象也会指向新的地址['qwer', 123 ...

  7. Python 入门之代码块、小数据池 与 深浅拷贝

    Python 入门之代码块.小数据池 与 深浅拷贝 1.代码块 (1)一个py文件,一个函数,一个模块,终端中的每一行都是代码块 (代码块是防止我们频繁的开空间降低效率设计的,当我们定一个变量需要开辟 ...

  8. 【ES6】迭代器与可迭代对象

    ES6 新的数组方法.集合.for-of 循环.展开运算符(...)甚至异步编程都依赖于迭代器(Iterator )实现.本文会详解 ES6 的迭代器与生成器,并进一步挖掘可迭代对象的内部原理与使用方 ...

  9. SCUT - 216 - 宝华科技树

    https://scut.online/p/216 演员 把这个当成dp算了半天,各种姿势,好吧,就当练习一下树dp. 假如是每个节点的层数之和,按照dp[i][j]为从i点出发获得j科技的最小费用d ...

  10. mac安装卸载brew

    1.安装 访问https://brew.sh,copy图中的命令到命令行中,进行下载安装 2.卸载 官方版本的卸载: /usr/bin/ruby -e "$(curl -fsSL https ...