乐字节Java方法调用重载递归

一、概述方法是指人们在实践过程中为达到一定目的和效果所采取的办法、手段和解决方案。 所谓方法,就是解决一类问题的代码的有序组合,是一个功能模块。编程语言中的方法是组合在一起来执行操作语句的集合。例如,System.out.println 方法,该系统实际上是为了在控制台上输出的消息执行多条语句。可以将方法理解为“CD机”即放入不同的碟片出现不同的歌曲;或“榨汁机”即放入不同的水果榨出不同的果汁。 方法就是 给能够解决问题的多行代码取了一个名字的功能块 ,方便我们多次使用。方法的作用: 1)、main方法过于臃肿 2)、重复执行的代码块 命名,方便重复使用 3)、方便自上而下分解问题 4)、方便维护代码 现在,我们将学习如何定义自己的方法有或没有返回值,使用即调用带或不带参数,使用相同的名称重载方法的方法中。 二、定义(method define)2.1 声明格式: 1)、访问修饰符:方法允许被访问的权限范围; 2)、返回值类型:如果方法不返回任何值,则指定为void;如果方法具有返回值, 则需要指定返回值的类型,并且在方法体中使用 return语句返回值; 3)、方法名:定义方法的名字,必须使用合法的标识符,见名知意。 4)、形参列表:参数可以有多个,多个参数间以逗号隔开,每个参数由参数类型和参数名组成,以空格隔开。 2.2 现有格式: 注意: 方法只能定义在类中;同时方法不能嵌套;方法编写位置与使用无关。 2.3 分类根据方法是否带参、是否有返回值,可以将方法分为: 2.4 void 关键字一个 void方法,它不返回任何值。 2.5 return关键字return 为 跳出方法 或 返回值。 注意:在一个作用域内 return 之后不能再存在代码 return语句: ①return语句可以出现在任何(有返回值和没有返回值)方法中 ②return语句 在没有返回值的方法中,用来提前结束方法 ③return语句 在有返回值的方法当中,有两个作用:提前结束方法,送出结果。 ④一个方法只能执行一条return语句 ⑤在一定会被执行的return语句后,写的语句为不可达语句,程序自动检测这种语句,永远不会被执行到,报错。 ⑥在循环中无条件的break后写语句,会出现不可达语句 ⑦在死循环(没有break来结束的死循环)后写语句,会出现不可达语句 2.6 思考角度编写一个方法时,请思考这四个方面: 1)、确定方法的功能 2)、确定方法的名称 3)、此方法能否独立运行,不能独立,需要外界数据参与运算,确定形参。 4)、此方法完成后,其结果是否直接影响调用处的后续操作,如果影响,确定返回类型,不影响则为 void 2.7 签名(signature)方法的签名,确保在一个类中的唯一性。方法的签名只看 方法名和形参 ( 类型 个数 和顺序) ,与修饰符 返回类型 和形参名无关。 ...

July 16, 2019 · 1 min · jiezi

乐字节Java8核心特性实战之方法引用

大家好,我是乐字节的小乐,上一次我们说到了Java8核心特性之函数式接口,接下来我们继续了解Java8又一核心特性——方法引用。 Java8 中引入方法引用新特性,用于简化应用对象方法的调用, 方法引用是用来直接访问类或者实例的已经存在的方法或者构造方法。 方法引用提供了一种引用而不执行方法的方式,它需要由兼容的函数式接口构成的目标类型上下文。计算时,方法引用会创建函数式接口的一个实例。 当Lambda表达式中只是执行一个方法调用时,不用Lambda表达式,直接通过方法引用的形式可读性更高一些。方法引用是一种更简洁易懂的Lambda表达式。 1、语法目标引用::方法名称 目标引用:类名、实例对象 方法名称:实例方法名、静态方法名 等效Lambda的方法引用示例如下: 2、方法引用分类Java8 中对于方法引用主要分为四大类: 构造器引用 Class::new 静态方法引用 Class::static_method 实例对象方法引用Instance::method 特定类型任意对象的实例方法引用Class:: method 3、构造器引用语法是Class::new,或者更一般的Class< T >::new 实例如下 /*** Lambda 表达式 实例化User 对象*/Supplier<User> s01 =()->new User();Function<Integer,User> f01 = (id)->{ return new User(id);};f01.apply(2019);BiFunction<Integer,String,User> bf01 = (id,uname)->{ return new User(id,uname);};bf01.apply(2019,"admin");//方法引用 等价写法Supplier<User> s02 = User::new;Function<Integer,User> f02 = User::new;f02.apply(2019);BiFunction<Integer,String,User> bf02 = User::new;bf02.apply(2019,"admin");4、静态方法引用 语法是Class::static_method,实例如下: // 判断字符串是否为空串Function<String,Boolean> f03 = (str)-> StringUtils.isBlank(str);System.out.println(f03.apply(""));// Base64 对输入字符串执行编码操作Supplier<Base64.Encoder> s01 = ()->Base64.getEncoder();s01.get().encodeToString("java8 is so easy!!!".getBytes());Function<String,Boolean> f04 = StringUtils::isBlank;System.out.println(f04.apply(""));Supplier<Base64.Encoder> s02 = Base64::getEncoder;s02.get().encodeToString("java8 is so easy!!!".getBytes());5、实例对象方法引用语法是Instance::method ,此时引用方法时必须存在实例,示例如下 ...

June 4, 2019 · 1 min · jiezi