代码编织梦想

Java_Day9(方法的解读、分类、定义、返回值和参数、重载,参数的传递)

解读方法

方法:是一个具有特定功能的代码/代码片段的合集

方法必须先定义后使用

方法可以是JDK提供的,也可以是自己定义的

public static void main(String[] args){
	
}

public static :方法的访问修饰
void : 方法的返回值类型
main: 方法的名称 (方法的命名遵守小驼峰命名法)
String[] args: 方法的参数
{}:方法打的具体内容

方法的分类

  1. 根据返回值类型:
    有返回值和无返回值
  2. 根据参数:
    有参合无参

方法的定义

Public  static  返回值类型  方法名称 ([参数列表]{ 方法体}

方法的定义需要注意:

  1. 是否有返回值,如果有,需要明确返回值类型 如果没有则为void
  2. 是否有参数,如果有,需要明确有几个参数以及每个参数的类型

方法的使用:

  1. 定义了方法以后,方法不能自己执行 ,需要在main方法或其他已经被main调用的 方法中手动进行调用。
  2. 方法只有调用了才会执行
  3. 一个类中可以有多个方法
  4. 方法之间的关系是平行的,不可以嵌套使用

方法的返回值及参数

  1. 方法是否有返回值根据方法的功能决定
  2. 方法的参数根据方法的具体功能决定
  3. 方法具有通用性,是用来解决一类问题的这样的一个代码片段

注:

  1. 返回值:
    如果方法有返回值,使用return进行返回,return后跟返回的值或者结果
    如果没有返回值,则return可以省略
  2. 参数:
    在方法定义时确定参数的个数及类型
    方法被调用时,需要和定义时的参数相对应

形参和实参的区别和联系

  1. 形参只有在函数被调用时才会被分配内存,调用结束后释放,只在函数内部有效,不能在函数外部使用
  2. 实参可以是常量、变量、表达式、函数等,在进行函数调用时。实参必须有确定的值
  3. 实参和形参在数量、类型、顺序上必须严格一致,如果能够进行自动类型转换,或者进行了强制类型转换,那么实参类型也可以不同于形参类型
  4. 函数调用中数据传递是单向的,只能把实参的值传递给形参,不能反向进行,一旦完成数据的传递,实参和形参就没有任何联系了,所以形参的值发送改变并不会影响实参

方法的执行内存分析

在这里插入图片描述
当方法被调用时才创建内存,结束时即释放

方法的重载

public class MethodDemo_02 {
    // 需求:计算两个整数的和
    public static  int  sum(int a , int b ){
        //return  a + b;
        int s = a  + b;
        return  s;
    }
    // 需求  计算三个整数 的 和
    public  static int  sum(int a , int b , int c){
        return  a + b + c;
    }
    // 需求 计算两个整数和一个 浮点数 的和
    public  static double sum (int a,int b,double d){
        return  a + b + d;
    }
    public  static double sum (double a,int b,int d){
        return  a + b + d;
    }

    public static void main(String[] args) {
        int s = sum(5,6);
        System.out.println(s);
        int s1 = sum(5,6,7);
        System.out.println(s1);
        double s2 = sum(5,6,5.6);
        System.out.println(s2);
        double s3 = sum(5.6,7,8);
        System.out.println(s3);
    }
}

在sum方法之间构成了方法的重载

特点:

  1. 必须是同一个类中的方法
  2. 方法名称相同
  3. 参数列表不同

判断依据:

  1. 定义是否在同一个类中
  2. 方法的名称是否相同
  3. 参数列表是否不同:
  • 个数不同
  • 类型不同
  • 类型不同的参数顺序不同

方法的返回类型不能作为方法重载的判断依据
对于重载的方法在调用的时候是由jvm自动根据传入的参数的情况来自动调用相匹配的方法

参数的传递

public class MethodDemo_03 {
    // 交换两个整数的值
    public  static void  change(int a , int b ){
        int temp = a;
        a = b ;
        b = temp;
        System.out.println(a +"======"+b);
    }
//  交换数组中的两个元素的位置
    public  static void change(int[] arr , int index1 , int  index2){
        int temp  = arr[index1];
        arr[index1] = arr[index2];
        arr[index2] =temp;
        for (int i = 0 ; i < arr.length; i++){
            System.out.println(arr[i]);
        }
    }
    public static void main(String[] args) {
        int x = 8;
        int y = 9;
        change(x,y);
        System.out.println(x + "---" + y);
        int[] arr = {3,1,5,7,8,3,2,9};
        change(arr,1,7);
        System.out.println("-------------------------------");
        for (int i = 0 ; i < arr.length; i++){
            System.out.println(arr[i]);
        }
    }
}

交换两个整数的过程:
在这里插入图片描述
交换数组中两个元素的过程:
在这里插入图片描述

参数的传递:

  1. 值传递:
    基本类型的数据传递都是值
  2. 引用传递:
    传递的都是地址

区别:
值传递 :传递的是值的本身所以对于传递过去的值的修改,不会影响原来的值本身
引用传递 :由于传递的是地址,传递之后的两个引用指向的是同一个地址,所以任何的操作对引用的地址内容的修改都将影响到地址中的内容

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/weixin_47469183/article/details/111089439

Java IO流实现文件复制-爱代码爱编程

Java实现文件复制 1.实现目标 复制文件,将D盘下的test.txt文本文件的内容复制到 D\test目录下的target.txt文件中(D:\test.txt —> D:\test\target.txt),通过字节流流读取。 2.所需工具类 文件输入流-----FileInputStream,从文件读取内容到内存文件输出流-----Fil

java模拟选民投票-爱代码爱编程

我们就模拟选民投票,当票数达到100票后,停止投票。 一、代码图 直接上代码 实体类 public class Voter { private String name;//选民名称 private static int a;//累计票数,使用静态,使票数不会刷新为0 public Voter(String name

四、Mybatis之动态语句详解(1)--if where choose-爱代码爱编程

动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQL 语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL,可以彻底摆脱这种痛苦。 1、if语句(单条件分支,判断语句) ​ 我们根据实体类的不同取值,使用不同的 SQL

Java 语法规定之外的命名注释规范-爱代码爱编程

Java 语法规定之外的命名注释规范 命名规范1. 项目名2. 包名3. 类名4. 常量名5. 变量名6. 方法名8. 其它命名技巧9. 应当避免的行为10. 经典的命名法11. 常用命名词汇注释规范1. 类注释2.字段注释3.构造器注释4.方法注释5.方法内部注释 命名规范 1. 项目名 项目名全部小写,且不使用下划线,含多个单词时使

Java-- synchronized--原理总结--偏向锁和自旋优化-爱代码爱编程

Java-- synchronized--原理总结--偏向锁和自旋优化 偏向锁自旋优化 偏向锁 首先我们了解一下对象头MarkWord结构 后面的lock 分别对应着对象的不同状态, 注意:正常状态和偏向锁都是01结尾,但是偏向锁的倒数第三位是1,正常的是0,偏向锁前面存储的偏向线程id和时间戳 下面是对象MarkWord不通状态存储的

♢位运算♢常用公式及练习详解-爱代码爱编程

JAVA位运算符详解 详细见知乎穆哥学堂 在java语言中,提供了7种位运算符,分别是按位与(&)、按位或(|)、按位异或(^)、取反(~)、左移(<<)、带符号右移(>>)和无符号右移(>>>)。这些运算符当中,仅有~是单目运算符,其他运算符均为双目运算符。位运算符是对long、int、short、b