10.Java方法学习知识点大全(下)

简介: 10.Java方法学习知识点大全(上)

2.人肉计算机

(1)三种调用方法的演示

public class MethodDemo5 {
    public static void main(String[] args) {
        //目标:掌握带返回值方法的定义和调用格式
        //1.直接调用---用于没有返回值的结果
        getSum(10,20,30);
        //2.赋值调用(最常用)
        double sum=getSum(10,20,30);
        System.out.println(sum);
        //3.输出调用
        System.out.println(getSum(10,20,30));
    }
        public static double getSum(double num1,double num2,double num3){
            double result=num1+num2+num3;
            return result;//返回方法的调用处
        }
}

1.直接调用的结果:空的

2.赋值调用的结果

3.输出调用的结果

(2)题目正解

public class MethodDemo5 {
    public static void main(String[] args) {
        //目标:掌握带返回值方法的定义和调用格式
        //1.直接调用---用于没有返回值的结果
       // getSum(10,20,30);
        //2.赋值调用
        //double sum=getSum(10,20,30);
        //System.out.println(sum);
        //3.输出调用
        //System.out.println(getSum(10,20,30));
        //先计算第一个季度的营业额
        double sum1=getSum(10,20,30);
        //先计算第二个季度的营业额
        double sum2=getSum(20,30,40);
        //先计算第三个季度的营业额
        double sum3=getSum(30,40,50);
        //先计算第四个季度的营业额
        double sum4=getSum(40,50,60);
        //求全年的营业额
        double sum=sum1+sum2+sum3+sum4;
        System.out.println(sum);
    }
        public static double getSum(double num1,double num2,double num3){
            double result=num1+num2+num3;
            return result;//返回方法的调用处
        }
}

3.总结

方法的返回值返回到调用处

4.练习:比较大小

public class MethodDemo6 {
    public static void main(String[] args) {
        //目标:要能区分出什么时候使用带返回值的方法
        //需求:定义方法,比较两个长方形的面积
        double area1=getArea(5.3,1.7);
        double area2=getArea(2.4,2.7);
        if(area1>area2){
            System.out.println("第一个长方形的面积更大");
        }else{
            System.out.println("第二个长方形的面积更大");
        }
    }
    //1.我要干嘛?比较两个长方形的面积
    //2.需要什么?两个长 两个宽
   /* public static void compare(double len1,double width1,double len2,double width2){
        double area1=len1*width1;
        double area2=len2*width2;
        if(area1>area2){
            System.out.println("第一个长方形的面积更大");
        }else{
            System.out.println("第二个长方形的面积更大");
        }
    */
    //在以后实际的开发中,我们一般是把重复的代码或者具有独立功能的代码抽取到方法中
    //以后直接调用就好了
    //如果不止两个长方形比较呢?
        //定义一个方法求长方形的面积
        //1.我要干嘛?比较两个长方形的面积
        //2.需要什么?两个长 两个宽
        //3.方法的调用处,是否需要继续使用方法的结果
        //如果要用,那么方法必须要有返回值
        //如果不要用,方法可以写返回值,也可以不写返回值
        public static double getArea(double len,double width){
            double area=len*width;
            return area;
        }
    }

五、方法的小结

1.方法的完整定义格式

2.方法的注意事项

3.return关键字

4.判断下面的代码书写是否正确

六、方法的重载

下面的代码是否构成重载?

答案:是.因为方法名相同,参数不同,上面有两个参数,下面有三个参数

1.区分一下方法是否构成重载

要在同一个类里面,方法名一样,形参不一样,不看返回值

2.会定义重载的方法

public class MethodDemo7 {
    public static void main(String[] args) {
        /*
        需求:使用方法重载的思想,设计比较两个整数是否相同的方法
         要求:兼容全整数类型(byte,short,int,long)
         */
        //调用
        //只要保证实参和形参一一对应就好了,调用的时候会调用相应的方法
       compare(5,3);
       compare((byte)5,(byte)3);
      /* byte b1=5;
       byte b2=3;
       compare(b1,b2);
       */
    }
    //会把相同功能的方法起成一样的名字
    //好处1:定义方法的时候可以不用那么多的单词了
    //好处2:调用方法的时候也不需要那么麻烦了
    public static void compare(byte b1,byte b2){
        System.out.println(b1==b2);
    }
    public static void compare(int i1,int i2){
        System.out.println(i1==i2);
    }
    public static void compare(short s1,short s2){
        System.out.println(s1==s2);
    }
    public static void compare(long l1,long l2){
        System.out.println(l1==l2);
    }
}

七、方法的基本内存原理

八、基本数据类型和引用数据类型

只要是new出来的,都是引用数据类型,例如数组

int[] arr=new arr{1,2,3};

小结

九、方法的值传递

1.基本数据类型的值的传递

猜猜下面代码的结果是什么呢?不要轻敌哦~

public class Test1 {
    public static void main(String[] args) {
        int number=100;
        System.out.println("调用方法前:"+number);
        change(number);
        System.out.println("调用方法后:"+number);
    }
    public static void change(int number){
        number=200;
    }
}

为什么会这样呢?接下来从内存的角度去分析

(注意上图是将change中的number赋值为200,而原来number的值不变)

小结

传递基本数据类型时,传递的是真实的数据,形参的改变,不影响实际参数的值.

怎样修改代码将number的值改为200呢?

那么需要让方法具有返回值,并且在类中定义变量接收返回值.

public class Test1 {
    public static void main(String[] args) {
        int number=100;
        System.out.println("调用方法前:"+number);
        number=change(number);
        System.out.println("调用方法后:"+number);
    }
    public static int  change(int number){
        number=200;
        return number;
    }
}

2.引用数据类型的值的传递

猜猜这个结果吧~

public class Test2 {
    public static void main(String[] args) {
        int[]arr={10,20,30};
        System.out.println("调用change方法前:"+arr[1]);
        change(arr);
        System.out.println("调用change方法后:"+arr[1]);
    }
    public static void change(int[] arr){
        arr[1]=200;
    }
}

为什么会这样呢?

(注意上图是将arr地址值交给了change方法的形参)

小结

传递引用数据类型时,传递的是地址值,形参的改变,影响实际参数的值.


总结

今天的内容你是否有所收获呢友友们🥰如果有写的不对的地方,欢迎大家帮我指正.最后,希望友友们点赞收藏一下博客关注后续的Java学习内容哦~😘💕💕

相关文章
|
14天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
54 4
|
25天前
|
Java API
Java 对象释放与 finalize 方法
关于 Java 对象释放的疑惑解答,以及 finalize 方法的相关知识。
45 17
|
14天前
|
Java 大数据 API
14天Java基础学习——第1天:Java入门和环境搭建
本文介绍了Java的基础知识,包括Java的简介、历史和应用领域。详细讲解了如何安装JDK并配置环境变量,以及如何使用IntelliJ IDEA创建和运行Java项目。通过示例代码“HelloWorld.java”,展示了从编写到运行的全过程。适合初学者快速入门Java编程。
|
18天前
|
Java 测试技术 Maven
Java一分钟之-PowerMock:静态方法与私有方法测试
通过本文的详细介绍,您可以使用PowerMock轻松地测试Java代码中的静态方法和私有方法。PowerMock通过扩展Mockito,提供了强大的功能,帮助开发者在复杂的测试场景中保持高效和准确的单元测试。希望本文对您的Java单元测试有所帮助。
34 2
|
22天前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
|
26天前
|
Java 开发者
在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口
【10月更文挑战第20天】在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口。本文揭示了这两种方式的微妙差异和潜在陷阱,帮助你更好地理解和选择适合项目需求的线程创建方式。
19 3
|
26天前
|
Java 开发者
在Java多线程编程中,选择合适的线程创建方法至关重要
【10月更文挑战第20天】在Java多线程编程中,选择合适的线程创建方法至关重要。本文通过案例分析,探讨了继承Thread类和实现Runnable接口两种方法的优缺点及适用场景,帮助开发者做出明智的选择。
16 2
|
26天前
|
安全 Java
Java多线程通信新解:本文通过生产者-消费者模型案例,深入解析wait()、notify()、notifyAll()方法的实用技巧
【10月更文挑战第20天】Java多线程通信新解:本文通过生产者-消费者模型案例,深入解析wait()、notify()、notifyAll()方法的实用技巧,包括避免在循环外调用wait()、优先使用notifyAll()、确保线程安全及处理InterruptedException等,帮助读者更好地掌握这些方法的应用。
17 1
|
26天前
|
Java 开发者
Java多线程初学者指南:介绍通过继承Thread类与实现Runnable接口两种方式创建线程的方法及其优缺点
【10月更文挑战第20天】Java多线程初学者指南:介绍通过继承Thread类与实现Runnable接口两种方式创建线程的方法及其优缺点,重点解析为何实现Runnable接口更具灵活性、资源共享及易于管理的优势。
32 1
|
20天前
|
Java Spring
JAVA获取重定向地址URL的两种方法
【10月更文挑战第17天】本文介绍了两种在Java中获取HTTP响应头中的Location字段的方法:一种是使用HttpURLConnection,另一种是使用Spring的RestTemplate。通过设置连接超时和禁用自动重定向,确保请求按预期执行。此外,还提供了一个自定义的`NoRedirectSimpleClientHttpRequestFactory`类,用于禁用RestTemplate的自动重定向功能。