首页 > 编程语言 >JavaSE(05) -方法

JavaSE(05) -方法

时间:2023-09-15 14:44:32浏览次数:34  
标签:05 int System static JavaSE 方法 public out

JavaSE(05) -方法

p63 什么是方法

  1. 什么是方法 : 方法是程序当中最小的执行单元.
  2. 应用场景 : 重复的代码, 具有独立功能的代码可以抽取的方法中.
  3. 他的好处 : 提高代码的复用性和可维护性.

p64 简单的方法定义和调用

方法的命名规则 : 见名之意, 驼峰命名.

方法的运行 : 看到方法进入方法 -> 执行完毕回到调用处.

p65 带参数的方法

***注意点 : 方法调用时, 参数的数量和类型必须(实参)与方法定义中小括号里面的变量(形参)一一对应, 否则程序将报错. ***

形参和实参

形参 : 全称形式参数 , 是指方法定义中的参数.

实参 : 全称实际参数 , 方法调用中的参数.

方法定义技巧

  1. 我要干什么? -> 方法体
  2. 我干这件事需要什么? -> 参数
  3. 方法的调用处是否需要继续使用方法的结果 ->返回值

练习1

需求 : 定义一个方法, 求长方形的周长, 在方法中输出结果.

 public static void main(String[] args) {
        getLength(1.2,2);
    }
	//计算长方形周长的方法
    public static void getLength(double len,double width){
        double result = (len+width)*2;//计算周长
        System.out.println(result);
    }

练习2

需求 : 定义一个方法, 求圆的面积, 在方法中输出结果.

public static void main(String[] args) {
        getCircleArea(1);
    }
//计算圆的面积方法
    public static void getCircleArea(double radius){
        double result = Math.PI * radius * radius;
        System.out.println(result);
    }

p66 带返回值的方法

方法的返回值会返回给方法的调用处.

  1. 什么时候用到有返回值的方法? -> 在调用处根据方法的结果,去编写另外一段代码时.也就是方法的调用处是否需要继续使用方法的结果.
  2. 有返回值方法的调用格式 : -> 直接调用, 赋值调用, 输出调用

练习. 比较大小

需求 : 定义两个方法, 比较两个长方形的面积.哪个更大?

public class Method {
    public static void main(String[] args) {
        double area1 = getArea(12, 8.5);//调用getArea方法得到面积
        double area2 = getArea(10, 10.5);//返回值赋值给变量
        compare(area1,area2);//调用compare方法,打印比较结果
    }
    //计算长方形面积的方法
    public static double getArea(double len, double width) {
        double Area = len * width;
        return Area;
    }
    //两个长方形比较的方法
    public static void compare(double area1,double area2){
        if (area1 > area2){
            System.out.println("第一个更大");
        }else if (area2 > area1){
            System.out.println("第二个更大");
        }else{
            System.out.println("两个一样大");
        }
    }
}

p67 方法小结

  1. 方法不调用就不执行.

  2. 方法与方法之间是平级关系, 不能互相嵌套定义.

  3. 方法的编写顺序和执行顺序无关.

  4. 方法的返回值为void, 表示没有返回值,没有返回值的方法可以省略return语句不写.如果要写return, 后面不能跟具体数据.

  5. return下面, 不能编写代码, 因为永远执行不到, 属于无效代码.

return关键字

  • 方法没有返回值 : 可以省略不写, 如果书写, 表示方法结束.
  • 方法有返回值 : 必须要写, 表示方法结束和返回结果.

p68 方法重载

简单的记忆 : 同一个类中, 方法名相同, 参数不同的方法. 与返回值无关.

参数不同 : 个数不同, 类型不同, 顺序不同.

注意 : 顺序不同可以构成重载, 但是不建议这样!

练习 方法重载

需求 : 使用方法重载思想, 设计比较两个整数是否相同的方法.
要求兼容全部整数类型(byte,short,int,long)

小技巧 : 没有用到的变量或方法 , 在IDEA中都是灰色的 , 所以就能看到用到了哪个方法.

/*
练习27 : 需求 : 使用方法重载思想, 设计比较两个整数是否相同的方法.
要求兼容全部整数类型(byte,short,int,long)
 */
public class Method_Reload_compare {
    public static void main(String[] args) {
       byte a = 1;
       byte b = 1;
       compare(a,b);//byte
        compare((short) 5,(short) 4);//short
       compare(9998999899l,9998999898l);//long
        compare(123,123);//int
    }
    //较两个整数是否相同的方法- byte
    public static void compare(byte b1,byte b2){
        System.out.print("byte :");
        System.out.println(b1==b2);
    }
    //short
    public static void compare(short s1,short s2){
        System.out.print("short :");
        System.out.println(s1==s2);
    }
    //int
    public static void compare(int i1,int i2){
        System.out.print("int :");
        System.out.println(i1==i2);
    }
    //long
    public static void compare(long L1,long L2){
        System.out.print("long :");
        System.out.println(L1==L2);
    }
}

p69 方法的三个练习

练习1 : 数组的遍历

需求 : 设计一个方法用于数组遍历, 要求遍历的结果是在一行上的. 例如: [11, 22, 33, 44]

练习2 : 数组最大值

需求 : 设计一个方法求数组的最大值, 并返回最大值.

练习3 : 判断是否存在

需求 : 设计一个方法判断数组中的某一个数是否存在, 将结果返回给调用处.

/*
 * 需求 : 设计一个方法用于数组遍历, 要求遍历的结果是在一行上的. 例如: [11, 22, 33, 44]
 * 需求 : 设计一个方法求数组的最大值, 并返回最大值.
 * 需求 : 设计一个方法判断数组中的某一个数是否存在, 将结果返回给调用处.
 * */
public class exersise_3 {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 13, 5, 11, 7, 8};
        printArray(arr);
        int max = getMax(arr);
        System.out.println(max);
        boolean exist = contains(arr, 0);
        System.out.println(exist);
    }

    //遍历数组的方法
    public static void printArray(int[] array) {
        System.out.print("[");
        for (int i = 0; i < array.length; i++) {
            if (i == array.length - 1) {
                System.out.println(array[i] + "]");
            } else
                System.out.print(array[i] + ", ");
        }
    }

    //求数组的最大值的方法
    public static int getMax(int[] array) {
        int max = array[0];
        //从1开始提高效率
        for (int i = 1; i < array.length; i++) {
            if (max < array[i]) {
                max = array[i];
            }
        }
        return max;
    }

    //判断数字是否存在的方法
    public static boolean contains(int[] array, int number) {
        for (int i = 0; i < array.length; i++) {
            if (number == array[i]) {    //需要判断的数和数组元素比较
                return true;
            }
        }
        return false;
    }
}

return & break 关键字的区别 :

return : 和循环没什么关系 , 跟方法有关 , 表示: 1结束方法 2返回结果 , 如果方法执行到了return , 那么整个方法全部结束, 里面的循环也随之结束了.

break : 跟方法没有关系 , 它是用来结束循环或者switch的.

p70 练习-拷贝数组

需求 : 定义一个方法copyOfRange(int [] arr, int from , int to)
功能 : 将数组arr中从索引from(包含from)开始.到索引to结束(不包含to)的元素复制到新数组中,将新数组返回.

/*
* 需求 : 定义一个方法copyOfRange(int [] arr, int from , int to)
功能 : 将数组arr中从索引from(包含from)开始.到索引to结束(不包含to)的元素复制到新数组中,将新数组返回.
* */
public class CopyOfRange {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9};
        int[] newArray = copyOfRange(arr, 3, 7);
        printArray(newArray);
    }

    //截取数组方法
    public static int[] copyOfRange(int[] arr, int from, int to) {
        int[] newArr = new int[to - from];//新数组长度为to-from
        int index = 0;  //伪造索引思想, 在没有任何一个变量能表示我索引变化范围的时候使用
        for (int i = from; i < to; i++) {//只遍历原数组需要的部分
//            System.out.println(arr[i]);
            newArr[index] = arr[i];//newArr索引从0开始
            index++;    //每次递增
        }

        return newArr;
    }

    //遍历数组方法
    public static void printArray(int[] array) {
        System.out.print("[");
        for (int i = 0; i < array.length; i++) {
            if (i == array.length - 1) {
                System.out.print(array[i] + "]");
            } else {
                System.out.print(array[i] + ", ");

            }
        }
    }
}

p71 方法的基本内存原理

  • 栈 : 方法运行时使用的内存 , 方法进栈运行 , 运行完毕就出栈.
  • 堆 : new出来的 , 都在堆内存中开辟一个空间.

在栈内存中, 方法运行的规律是先进后出.

p72 基本/引用数据类型 p73 方法的值传递

  • 基本数据类型 : 数据值存在自己的空间中.

​ 特点 : 赋值给其它变量, 也是赋的真实的值.

  • 引用数据类型 : 数据值是存储在其它空间中, 自己空间中存储的是地址值.

​ 特点 : 赋值给其它变量 , 赋的也是地址值.

标签:05,int,System,static,JavaSE,方法,public,out
From: https://www.cnblogs.com/lg369/p/17704984.html

相关文章

  • MySQL 切换数据库、用户卡死:“You can turn off this feature to get a quicker start
    数据量很大的话,常规切换数据库会把里面所有的表遍历一遍,会很慢甚至是卡死。解决方法:登录的时候直接在最后面加一个-A就行了。[root@localhost~]#"/usr/local/mysql-8.0.11/bin/mysql"-uroot-p123456-A 实战演示:我演示的数据库就是一个数据量很大的数据库,切换数据库......
  • 使用深度远程启动管理器配置BMC DHCP管理地址的方法
    1.请确保服务器BMC口或者/IDRAC口是DHCP状态,才可以使用深度工具分配地址;若BMC配置过静态地址,请使用静态地址登录;2.配置好自己笔记本的ip(例如:192.168.10.1),用网线与ipmi独立管理口直连;笔记本请务必关闭防火墙和杀毒软件;3.可自行网上下载深度远程启动管理器;下载后,打开文件夹,双......
  • day1 C语言:对于P1055 ISBN号码的代码优化及多解
    day1C语言:对于P1055ISBN号码的代码优化及多解先看题目 直接说最优解,其他方法后置 第一部分1.第一个点是数据的输入,本人第一的想法是直接用int类型去接受数据,但因为“-”的存在,在取得各位数字时会用到复杂循环和取余计算,所以这里用到char类型输入数据去取得各个位上的......
  • 明德扬“学生竞赛计划”-MP805开发板免费使用
    为了鼓励同学们踊跃去参加有关FPGA的比赛,明德扬特此推出“学生竞赛支持计划’支持在比赛的同学,只要在比赛的同学出示 比赛证明都可以在比赛期间免费使用明德扬MP805开发板,联系老师参与此次活动吧......
  • 05_函数(下)
    函数(下)作用域(重点)什么是作用域,就是一个变量可以生效的范围变量不是在所有地方都可以使用的,而这个变量的使用范围就是作用域全局作用域全局作用域是最大的作用域在全局作用域中定义的变量可以在任何地方使用页面打开的时候,浏览器会自动给我们生成一个全局作用域win......
  • 使用HTTP爬虫ip中的常见误区与解决方法
    在如今的互联网时代,为了保障个人隐私和实现匿名浏览,许多人选择使用HTTP爬虫ip。然而,由于缺乏了解和使用经验,常常会出现一些误区。本文将为大家介绍使用HTTP爬虫ip过程中常见的误区,并提供相应的解决方法,帮助大家更好地使用HTTP爬虫ip并提高网络安全性。误区一:爬虫ip的选择只看速度高......
  • POJ 2057 The Lost House 树形DP+贪心
          最近一直在做树形dp,感觉这道题出的非常不错。卡了我一天。。      一上来读完题感觉和dp的思路很像,但是自己太弱了,无从下手。于是各种百度看结题报告、看论文。推荐几个结题报告 http://blog.sina.com.cn/s/blog_5f5353cc0100hd08.html还有06年国家集训队杨......
  • Redis SCAN:实现key的模糊匹配的科学方法
    目录scan基本介绍shell使用scan最基本的scan带匹配模式和count的scanjava中使用hscanscan基本介绍在使用redis的时候,我们经常涉及到这样的需求:模糊搜索key,即找出满足特定匹配模式的所有key。但是,如果使用像keys和hkyes这样的方法的话,当key的数量特别多时,效率会很慢,而且对线......
  • HDU 1054 Strategic Game 树形DP/二分图匹配
    第一次写博文,想了半天就拿一道dp/graph的题作为处作吧此题有两种常见解法(题意比较简单,就不赘述)1.二分图最大匹配       此题等价于问一棵树中最小点覆盖数。树形结构可以把它看做是一个二分图,一个点集为奇数层,另一个点集为偶数层,显然满足二分图定义,可以套用求二分图最小点......
  • 25届实习/秋招-java面试-JavaSe面试题整理-牛客网
    JavaSe变量和运算符:基本数据类型介绍java中浮点数精度怎么解决,有了解过实现吗,为什么有精度问题BigDecimal,如何判断BigDecimal是否相等。如何进行计算、怎么四舍五入基本类型几种,分别占用空间int和Integer区别--包装类,int有几个字节。包装类常量池怎么判断相等的......