安利一下java的基础学习之java 的方法程序设计,附带作业练习

本文深入讲解Java方法的概念,包括方法的定义、调用、参数传递、返回值、重载及递归调用等内容,旨在帮助初学者掌握Java方法的使用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介:
先必须配置java的运行环境,所以先要安装jdk,我用的是jdk8,
编辑器我用的是editplus3编辑器,在window底下的命令窗口下编译的。
java运行环境jdk8和editplus3编辑器网盘链接:链接:https://pan.baidu.com/s/1TbFE2hHGiTMQ1HxtVfI1BQ
提取码:moev
复制这段内容后打开百度网盘手机App,操作更方便哦

1 java 的方法
1.1 什么是java 的方法
方法:就是为了完成某个功能而编写的一段代码.
例如:我们开始学习的System.out.println(“hello,world”) 语句中,println()
就是一个方法, 它的功能是在屏幕上打印信息, 如果你想在屏幕上打印, 就
调用该方法即可sc.next() 语句中, next() 就是方法, 可以从键盘上接收一
个字符串, 如果想要从键盘上接收字符串就调用该方法Math.random() 中
random() 就是一个方法, 它的作用是产生[0,1) 范围之内的随机小数
这些方法是SUN 公司已经定义好了, 我们直接调用就行
使用方法的优点:
可以使代码更加简洁
方便代码的修改
可以随意复用代码
1.2 自己定义一个方法
[修饰符] 方法返回值类型方法名( 参数类型参数1, 参数类型参数2…)
方法体, 就是方法要执行的代码说明:

    1. 方法修饰符: 访问权限修饰符pubilc, protected, private, abstract,
      final, static 等
    1. 返回值类型, 调用方法, 有时需要返回一个值, 方法返回值类型就是
      方法返回值的类型; 如果方法没有返回值, 方法返回值类型使用void
      表示
    1. 方法名, 程序员起的名字, 是一个动词,
    1. 方法参数, 方法在完成这个功能时, 可能需要从外部接收一些数据,
      是通过参数来接收的
    1. 方法体, 用一对大括弧括起来, 就是为了完成功能而编写的代码. 如
      果方法需要返回一个值, 在方法体中通过return 语句返回
      3
      1.2.1 定义一个没有参数,没有返回值的方法
      代码如下:
 /*
 1)定义一个没有参数, 没有返回值的方法
 */
 class Hjw11{
 public static void main(String[] args) 	{
 /*
 直接调用自定义的printRose()方法
 通过方法名来调用方法, 如果方法没有返回值,直接调用即可,作为一条独立语句
 程序执行到这一行, 就会转到该方法的方法体中执行,方法体执行完毕后再返回到这儿继续向下执行其他代码
 */
 printhjw();
 
 printliu();
 
 System.out.println("谢谢大家");
 }
 
 //注意:在类体中定义方法, 不能在一个方法体中定义另外一个方法
 
 /*
 定义方法在屏幕上打印喜欢的人
 public 表示当前方法是公共的
 static表示当前方法是静态的, 想在main方法中直接调用该方法,
 因为main方法使用static修饰为静态的,所以main方法直接调用的其他方法也需要使用static修饰为静态的
 void表示当前方法没有返回值
 printhjw是方法名, 
 当前方法不需要接收参数,所以没有参数,但是小括弧不能省略
 大括弧 中的语句就是方法体, 在屏幕上打印喜欢的人
 
 注意:
 当前只是定义了一个方法, 该段代码不会自动执行, 需要在main方法中调用它
 */
 public static  void  printhjw(){
 System.out.println("何");
 System.out.println("佳");		//表示输出字符
 System.out.println(" 玮");
 }
 public static  void  printliu(){
 System.out.println("努力学习");  //表示输出字符
 }
 }

1.2.2 编译结果:
在这里插入图片描述
1.2.3 定义一个没有参数,有返回值的方法
代码如下:

class Hjw2 {
 public static void main(String[] args) 	{
 /*
 调用liu()方法, 也是通过方法名调用
 因为该方法返回一个[0,100)之间的整数, 可以定义一个变量来保存方法的返回值
 */
 
 int num = liu();		//把liu()方法的返回值赋值给num
 System.out.println( liu() );	//把liu()方法的返回值打印到屏幕上
 
 //liu()方法使用static修饰为静态的, 可以通过类名直接调用
 System.out.println( hjw2.liu() );
 //调用hjw1类中的printhjw()方法
 //在2类中调用1类的方法,编译时,需要先编译1.java源文件,再编译2.java源文件
 Hjw11.printhjw();		//在2类中调用1类中的静态方法,只能通过类名调用
 //printhjw();		//如果没有通过类名调用,表示该方法是当前类中定义的方法
 //		System.out.println( hjw1.printhjw() );  //printhjw()没有返回值,不能打印
 
 System.out.println("Hello World!");
 }
 
 /*
 定义方法返回一个[0,100)之间的随机整数
 */
 public static int liu(){
 /*
 SUN公司定义了一个Math类, 在Math类中定义了一个static修饰的静态方法random()
 可以通过Math类名调用该方法
 Math.random()方法可以返回一个[0,1)之间的随机小数
 可以定义一个局部变量来保存该方法返回的随机小数
 */
 double xxx = Math.random(); 
 //如果方法需要返回一个值,可以通过return语句
 return  (int)(xxx*100);
 }
 }

1.2.4 编译结果
在这里插入图片描述
1.2.5 定义一个有参数,有返回值的方法
代码如下:

class Hjw3 {
 public static void main(String[] args) 	{
 //调用liu()方法判断10是否为奇数,把结果打印
 System.out.println( liu(10) );		//false
 System.out.println( liu(11) );		//true
 //把1~100之间的奇数进行累加
 int sum = 0 ;		//保存累加和
 for( int num = 1; num <= 100; num++){
 if( liu(num) ){
 sum += num;
 }
 }
 System.out.println("sum=" + sum);
 }
 //定义方法判断一个数是否为奇数,如果是奇数就返回true,不是奇数返回false
 public static boolean liu( int num ) {	//通过参数num来接收一个整数
 if(num % 2 == 1 ){
 return true;
 }else{
 return false;
 }
 }
 }

1.2.6 编译结果
在这里插入图片描述
1.2.7 定义多个参数,有返回值的方法
代码如下:

 class Hjw4 {
  public static void main(String[] args) 	{
  //调用方法, 计算10与20相加的和, 把和保存到result变量中
  int result= sum(10,20);
  /*注意:在定义方法时,如果方法指定了参数,在调用该方法时,需要传递相应的数据
  传递的个数和定义时的参数个数要一样。传递数据的类型要与定义时的参数类型兼容
  */
  System.out.println("result="+result");
  }
  //定义方法,返回任意两个整数和
  public static int sum{int m,int n}{
  return m+n;
    }
     }

1.2.8 编译结果
在这里插入图片描述
1.3 方法的形参与实参
在定义方法时, 指定的方法参数, 称为方法的形式参数, 简称为形参在调用方法时, 给方法传递的数据数据, 称为实际参数, 简称为实参注意:

  1. 在定义方法时, 声明的形参没有分配存储空间, 也没有值, 形参就相当
    于一个点位符, 仅仅表示可以接收指定类型的数据
  2. 在调用方法时, 给形参分配存储空间, 把实参的值传递给形参
  3. 在调用方法时, 实参的个数/类型要与形参匹配
    代码如下:
class Hjw5{
 public static void main (String[]args){
 
 int x=10;
 
 int y=20;
 
 swap(x,y);
 
 System.out.println("x="+x+",y="+y);
 }
 //定义方法,实现两个整数的交换
 public static void swap(int m,int n){
 int t=m;
 m=n;
 n=t;
   }
 }

1.3.1 编译结果
在这里插入图片描述
1.4 方法重载
在同一个类中, 允许出现重名的方法, 要求方法的参数个数或者参数类型不同. 这就是方法重载在一个类中, 一般情况下, 相同的功能使用相同的方法名, 方便记忆与使用, 如: 不管在屏幕上打印整数, 小数, 布尔值, 还是字符串, 都调用System.out.println() SUN 在定义println() 方法时, 实现了方法的重载, 通过不同类型的参数来接收不类型的数据。

1.4.1 演示方法重载
代码如下:

/*
  演载示方法重
  1)在同一个类中, 相同的功能使用相同的方法名, 通过参数类型,或者参数个数实现方法重载
  2)方法重载只跟参数类型与参数个数相关,  跟方法返回值类型,修饰符没有关系 
  3)方法重载,在编译阶段,就会确定要执行哪个方法
  系统总是找最匹配的方法执行
  */
  class MethodOverload  {
  public static void main(String[] args) 	{
  sum( 10 , 20 );			//在调用方法时,如果传递两个int类型整数,系统会调用最匹配的方法执行
  
  sum( 3.4 ,  5.6);
  
  sum( 1,2,3);
  
  sum( 12, 3.5 );		//没有定义sum(int, double)方法, 系统会找兼容的sum(double, double)
  
  System.out.println("Hello World!");
  }
  
  //计算两个整数的和
  
  public static void  sum( int x, int y ){
  System.out.println("两个整数" + x + "+" + y + "=" + (x+y) );
  }
  
  //计算两个小数的和
  
  public static void  sum( double x, double y ){
  System.out.println("两个小数" + x + "+" + y + "=" + (x+y) );
  }
  
  //计算三个整数的和
  
  public static void  sum( int x, int y , int z){
  System.out.println("三个整数" + x + "+" + y + "+" + z + "=" + (x+y+z) );
  }
  }

1.4.2 编译结果
在这里插入图片描述
1.5 作业演示:定义一个方法,使其判断一个数是素数

 /*
 1)定义一个方法,判断一个数是否为素数
 */
 class Hjw7{
 public static void main(String[] args) {
 boolean flag=hjw88(10);
 System.out.println(flag);
 //打印10——100之间的素数
 for(int i=10;i<=100;i++){
     if(hjw88(i)){
     System.out.println(i);
     }
     }
 }
 //判断一个数是否为素数,如果是素数则返回true,不是素数返回false
 public static boolean hjw88(int num){
 //除了1和它本身之外不能被其他数整除的数就是素数
 for (int x=2; x<num;x++){
 if (num%x==0){
 return false;   //return一旦执行,当前方法会结束执行
 }
 }
 return  true;
 }
 }

1.5.1 编译结果
在这里插入图片描述
1.6 作业演示:定义方法返回两个整数的较大者;定义方法返回
两个小数的平均数

代码如下:

 /*定义方法返回两个整数的较大者;
 定义方法返回两个小数的平均数
 */
 class Hjw8{
   public static void main (String[] args){
   System.out.println(max(10,20));
    System.out.println(max(55.55,66.66));
     System.out.println(liu(100,251));
      System.out.println(liu(55.55,66.66));
    }
    //定义方法返回两个数的较大者
    
    public static int max(int m,int n){
    return m>n?m:n;
    }
    //定义方法返回两个小数的最小值
    
    public static double max(double m,double n){
    return m<n?m:n;
    }
    //定义方法返回两个整数的平均值
    
     public static int liu(int m,int n){
     return (m+n)/2;
     }
     //定义方法返回两个小数的平均值
     
       public static double liu(double m,double n){
       return (m+n)/2;
       }
    }

1.6.1 编译结果
在这里插入图片描述
1.7 作业演示:定义方法,返回某个指定日期对应这一年的第几

代码如下:

/*定义方法,返回某个指定日期对应这一年的第几天
*/
import java.util.Scanner;
class Hjw9{
public static void main (String[] args){
//从键盘输入日期
Scanner sc =new Scanner(System.in);
System.out.println("请按yyyy MM DD 格式输入日期");
int year=sc.nextInt();
int month=sc.nextInt();
int day=sc.nextInt();
int days=liu(year,month,day);
System.out.println(year+"年"+month+"月"+day+"日是"+year+"年的第"+days+"天");
}
//返回指定日期对应这一年的第几天
private static int liu(int year, int month, int day){
//2019 9 10
int  sumdays = 0 ;          //保存这个日期对应这一年的天数

//先把1月到month-1月这些整月的天数累加进来
for(int m = 1;  m < month; m++){
sumdays += hjw(year, month);    //当m为1时累加1月的天数, 当m为2时累加2月的天数,当m为3时就累加3月的天数...
}

//再把当月的天数累加进来
sumdays += day;

//返回总天数
return  sumdays;
}
//定义方法, 返回指定月份的天数
private static int hjw(int year, int month) {
//当前方法指定了返回值类型为int, 该方法必须有return语句返回一个值
//如果month 传递20
switch ( month ){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return  31;         //在case语句块中通过return返回一个数, 不需要再使用break了
//                break;
case 4:
case 6:
case 9:
case 11:
return  30;
case 2:
if (isLeap(year)){
return  29;
}else {
return  28;
}
default:
return  0;//其余情况返回0天
}

//        return  0;

}

//判断是否为闰年
public  static  boolean isLeap(int year){
/* if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0){
return  true;
}
return  false;*/
//如果能被4整除但是不能被100整除, 或者能被400整除
return  year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
}
}

1.7.1 编译结果
在这里插入图片描述
1.8 方法递归调用
方法递归调用:即在方法体中又调用了方法本身递归调用主要确定两点:1) 找到规律;2) 确定结束条件

class Test01 {
	public static void main(String[] args) {
		System.out.println( factor(1) );
		System.out.println( factor(2) );
		System.out.println( factor(3) );
		System.out.println( factor(4) );
		System.out.println( factor(5) );
	}
	/*
	定义方法,计算n!
	6! = 1*2*3*4*5*6
	5! = 1*2*3*4*5
	4! = 1*2*3*4
	3! = 1*2*3
	2! = 1*2
	1! = 1
	规律:
	n! = (n-1)!  * n
	*/
	public static int  factor( int  n ){
		if( n == 1 ){
			return  1;	}
		//n不等于1的情况   f(n) = f(n-1) * n
		return  factor(n-1) * n;        //在一个方法体中又调用了它本身, 称为递归调用
	}
	//计算 1+2+3+4+5+..+n的和	
}

1.8.1 编译结果
在这里插入图片描述
总结:
java方法是后续的基础,必须学好,不然后续进行将非常困难。

有疑问可以留言!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值