如何使用方法来根据功能对代码进行分组

使用方法

1.初步认识方法

  1. 在面向对象编程中,类有两个重要部分,即数据方法,方法有时也称为函数。
    构造方法是类里面一个特殊的方法,用来初始化对象。
    ②类中的数据表示对象的属性,而方法表示对象的行为。
  2. 方法在类里面是如何运作的呢?
    ①方法是一种根据代码的功能和用途将代码分组到特定块中的技术。将一个方法中的代码分组将有助于程序员开发程序。
    ②要创建一个方法,必须做两件事,即定义方法和调用方法 Java 编程中的方法有两种类型,一种是没有返回值的方法,另一种是返回值的方法。

2. 没有返回值的方法的格式

  1. void是无返回值的意思

比方说:
public void walk()
{
System. out. print(“你好!”) ;
}
如果别的地方调用这个方法就会打印出你好

再看以下:

pub1ic String walk()//注意这里的返回类型是String不是void了
{
System. out. print("你好!“);
return“哈喽”;//注意这里这个return如果不写就会报错!
}

原因就是因为上面的返回类型必须是String型,如果写的是void意思就是不需要返回类型。所以就没必要写return了如果方法上面写了某种返回类型就必须写return后面跟相应的类型值。

3.带有返回值的方法

  1. return 值的方法以返回值类型开始

①return 从当前的方法中退出,返回到该调用的方法的语句处,继续执行。

②return 返回一个值给调用该方法的语句,返回值的数据类型必须与方法的声明中的返回值的类型一致。

③ return后面也可以不带参数,不带参数就是返回空,其实主要目的就是用于想中断函数执行,返回调用函数处。
④方法的返回值类型可以是整数浮点数字符串数组或对象。具有返回值的方法也返回与返回值类型匹配的值。return 关键字用于将值返回给方法。

特别注意:返回值为void的方法,从某个判断中跳出,必须用return。

> 例一:
class test {
  public  String test() {
    if(true){
      return "";
    }
    else{
      return "";
    }
  }
}

上面这样即可通过编译,但是下面这两个例子却不能通过编译:

(一)
class test {
  public  String test() {
    if(true){
      return "";
    }
  }
}
(二)
class test {
  public  String test() {
    if(isTrue()){
      return "";
    }
    else if(!isTrue()){//两个if里的判断包括了所有的可能性,但是还是编译期error
      return "";
    }
  }
   boolean isTrue(){
    return true;
  }
}

结论1:
对于(一),这是因为java编译器认定单独的if语句只在当一定条件满足情况下才执行,它认为if不会有任何情况下都能执行的能力。
对于(二),这是因为java编译器对if else 语句能够全面囊括所有情况的能力只限定在的if…else(或if…else if…else)时,而不包括if…else if。

4.带参数的方法

  1. 介绍:如果将处理的数据用作参数,则方法可以处理不同的数据。通过在方法中传递参数,该方法处理的数据将是动态的。

  2. 使用参数定义方法的格式如图
    在这里插入图片描述使用参数定义方法的格式
    在这里插入图片描述使用参数定义方法的格式

①上面的两种格式展示了如何定义带有参数的方法。在这两种格式中,par1和 par2 都是方法参数。传递给方法的参数数量取决于需要,参数数量可以是一个或多个。
②方法的参数实际上是将由方法处理的数据,因此参数的数据类型由要处理的数据类型决定。
限制转换结果中的小数位数,使用以下代码。

String.format("%.3f", result)

5.如何重载方法

1.方法重载是一种编程技术,它允许两个或多个方法具有相同的名称,但具有不同类型的参数。通过使用重载技术,可以创建两个或多个具有相同名称的方法,但每个方法具有不同的参数。只有当我们希望方法处理不同类型的数据时,才能对方法进行重载。两个同名的方法能够处理不同类型的数据。

简单的方法重载案例
在这里插入图片描述
①从上面的案例中可以看到如何重载 Add 方法。这两种方法具有相同的功能,即添加两个数字。第一个 Add 方法有一个 int 类型的返回值和两个 int 类型的参数。
②第二个 Add 方法有一个 double 类型的返回值和两个 double 类型的参数。

  1. 方法重载的定义:对于同一个类,如果这个类里面有两个或者多个重名的方法,但是方法的参数个数、类型、顺序至少有一个不一样,这时候局构成方法重载。

方法重载示例:

> public class Test{
public void a( ){
};
public void a( int i){
};
}

说明:在Test类中有两个方法,名字都相同,都是a。在调用方法a时,如果不传参数,则系统会自动调用第一个方法a,如果传入一个 int 类型的参数,则系统调用第二个方法a。

> public class Test{
public void a(int i){
};
public void a(String j){
};
}

说明:在Test类中有两个同名的方法a。在调用方法时,如果传入一个int类型的参数,则会自动调用第一个a方法,如果传入一个String类型的参数,则会自动调用第二个方法a。

> public class Test{
public void a(int i,String j){
}
public class a(String j,int i){
}
}

说明:在Test类中有两个同名的方法。在调用方法时,如果传入的第一个参数类型为int,第二个参数类型为String,则自动调用第一个方法a。如果传入的第一个参数为String类型,第二个参数类型为int,则自动调用第二个方法a。

方法重载的作用:方法重载就是对不同数据类型的的数据实现相似的操作。

6.如何创建递归方法

1.定义:递归方法是调用自身的方法。递归是一种允许方法调用自身的编程技术。递归方法将重复调用它自身,因此我们需要一个使调用停止的条件。使用递归方法解决问题与使用循环语句解决问题具有相同的工作原理。因此,可以用循环语句解决的问题也可以用递归方法解决。
例如,一个显示“我爱 Java”字符串多达 10 次的程序可以通过如下循环语句来解决。

for(int i=0;i<10;i++)
{
231
System.out.println("我爱 Java");
}

或者像下面这样使用递归方法。

void Display(int n)
{
if(n>1)
Display (n-1);
 System.out.println("我爱 Java");
}

通过在调用 Display 方法时传递值 10 作为参数,使程序显示字符串“我爱Java”10 次。

在Scala中,我们可以根据手机号码段来分组手机号码。手机号码段通常是指手机号码中的前几位数字,用来表示该号码所属的运营商或地区。 首先,我们需要定义一个包含手机号码和归属地的数据集合,可以使用元组或者自定义的类来表示。假设我们使用元组来表示手机号码和归属地的关系,可以定义一个列表来存储这些元组。 ```scala val phoneNumbers = List( ("13912345678", "北京"), ("18888888888", "上海"), ("13566667777", "广东"), ("13611112222", "广东"), ("13722223333", "上海"), ("13199998888", "北京") ) ``` 接下来,我们需要根据归属地对手机号码段分组。我们可以使用groupBy函数来实现这个功能,该函数接收一个函数作为参数,用于提取键(这里我们使用手机号码段作为键)。 ```scala val phoneGroups = phoneNumbers.groupBy { case (phone, location) => phone.take(3) // 提取手机号码的前三位作为手机号码段 } ``` 以上代码中,我们使用take函数提取手机号码的前三位作为手机号码段,然后调用groupBy函数进行分组。 最后,我们可以打印出每个手机号码段对应的手机号码: ```scala phoneGroups.foreach { case (phoneSegment, phoneList) => println(s"手机号码段 $phoneSegment 的号码为:") phoneList.foreach { case (phone, location) => println(s"$phone ($location)") } println() } ``` 以上代码中,我们使用foreach函数遍历每个分组,然后再使用foreach函数遍历每个分组内的手机号码,将其打印出来。 整体的代码如下: ```scala val phoneNumbers = List( ("13912345678", "北京"), ("18888888888", "上海"), ("13566667777", "广东"), ("13611112222", "广东"), ("13722223333", "上海"), ("13199998888", "北京") ) val phoneGroups = phoneNumbers.groupBy { case (phone, location) => phone.take(3) // 提取手机号码的前三位作为手机号码段 } phoneGroups.foreach { case (phoneSegment, phoneList) => println(s"手机号码段 $phoneSegment 的号码为:") phoneList.foreach { case (phone, location) => println(s"$phone ($location)") } println() } ``` 以上代码将根据归属地对手机号码段进行分组,并打印出每个手机号码段对应的手机号码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值