java 方法(函数)详解

基本概念

函数是定义在类中的一段独立的代码块,用来实现某个功能,解决了重复性代码的问题。Java中,函数又被称为方法。

函数的主要作用是为了提高程序的复用性和可读性。

函数都是在栈内存中运行;运行的函数处在栈顶

函数格式:

修饰符 返回值类型 方法名 ( [ 参数类型1 参数名1,参数类型2 参数名2.... ]{
		// [ ] 里面表示可选项,即参数不是必须的
		执行语句...
		return 返回值; //返回值的类型必须与返回值类型一致
}

说明:

  • 修饰符:可以是访问修饰符,也可以说是函数修饰符(abstract、final、
    static、synchronized),还可以是两者的组合。
  • 返回值类型:用于限定函数返回值的数据类型。
  • 方法名:自己定义,符合标识符命名规则就行;驼峰命名规则 :单个单词首字母小写,多个单词后面的单词首字母大写。
  • 参数类型:用于限定调用函数时传递的数据类型。
  • 参数名:是一个变量,用来接收调用方法时传递的数据。
  • return:用来接收方法以及返回函数指定类型的值。
  • 返回值:这个值会返回给函数的调用者。
注意:
  1. 方法的返回值最多只能有一个,不能返回多个值
  2. 方法返回值的类型必须兼容,例如,如果返回值的数据类型为int ,则不能返回 String 型值。
  3. void 表示不确定返回值类型,不能理解为没有返回值,只是返回值的类型不确定而已;故不能定义形式参数变量来接收;

主函数main() 解释

常见的 java 主函数格式如下:

public static void main(String[] args)

  • 作用:main函数是JVM识别调用的入口函数。
public static void main(String[] args) 含义

public static void main(String[] args) 含义:

  • public:访问权限修饰符。因为权限必须最大,所以使用public。(具体的权限信息找度娘)。
  • static: 静态修饰符。首先你必须知道main方法是一个程序的入口,如果写成非静态,那么就必须实例化一个对象再来调用它,入口函数何必难为入口呢?写成static不需要实例化对象,直接用主函数所属类名调用即可。
  • void: 返回值类型空。那你可能要问,为什么不写成int?
    Java中,JVM对main函数有限制,不能有返回值。写成int,让void和jvm情何以堪?
  • main: 函数名。切记不要和关键字搞混。它只是一个被JVM识别的固定的名字。
  • String[] args: 参数类型以及参数名称。你可能还要问,为什么是String类型,为什么参数名是args?
    String类型是Java的规范,不是你我能决定的;而args完全可以写成其他的合法标识符。但是为了统一起见使用args,它代表arguments:参数的意思。

因此,定义成public static void main(String[] args)貌似是必须的。

public class JavaMain {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println(args);		//形参值。
		 
		System.out.println(args.length);	//形参长度。
 
		System.out.println(args[0]);	//数组第一个元素值。
	}
}

结果为:

[Ljava.lang.String;@15db9742
0
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
	at Packger.JavaMain.main(JavaMain.java:11)

(1)"[Ljava.lang.String;@15db9742" :[Ljava.lang.String是clss名字,[ 表示一维数组,[[表示二维数组,L表示是对象类型,java.lang.String对象的标准类名;@15db9742代表哈希值。由此可知:主函数参数是一个类型为String名称为args的一维数组做形参。

(2)0 表示没有传入参数。

(3)因为没有传入参数,所以数组的长度为0,所以访问第一个数组元素产生越界。

函数的参数传递

(1).形式参数:函数定义时的参数为形式参数------>简称形参

(2).实际参数:函数调用时的参数为实际参数 ------>简称实参

参数传递:只能有实参传给形参

注意:

  1. 调用带参方法时,必须保证实参和形参在个数、顺序、类型上都要保持一致.
  2. 调用方法时,实参不需要指定数据类型
  3. 方法的参数可以是基本是数据类型,也可以是引用数据类型,如 String、数组;还可以是自定义数据类型
  4. 当方法参数有多个时,多个参数间以逗号分隔

java自定义方法(函数)

1. 无参无返回值方法

如果方法中不包含参数,且没有返回值,我们称为无参无返回值方法

范例:

public class TestDemo{
 public static void main(String[] agrs){
     print();  //主方法里面,直接调用方法
     print();
     print();
 }
 public static void print(){   //方法定义
  System.out.println("Hello World");
  System.out.println("Hello World");
  System.out.println("Hello World");
      }
 }
2. 无参带返回值方法

范例:

class JavaMain
{
	public static void main(String[] args)
	{
		JavaMain test1 = new JavaMain();
		int sum = test1.sum();
		System.out.println("sum"+sum);
	}
	
	public int sum() {
		int a = 5;
		int b = 6;
		int sum = a+b;
		return sum;
	}
}

在 sum() 方法中,返回值类型为 int 类型,因此在方法体中必须 使用return 返回一个整数值。

3. 有参无返回值方法

范例:

class JavaMain
{
	 public static void main(String[] agrs){
	     print("Hello World");  //主方法里面,直接调用方法
	     print("author");
	 }
	 public static void print(String msg){   
	 System.out.println(msg);
	 }
}

结果为:

Hello World
author

函数调用方式:

  • 对象名.方法名(实参1,实参2,…… ,实参n)
有参有返回值方法

范例:

class JavaMain
{
	 public static void main(String[] agrs){
	     int result = add(10,20) ;
	     System.out.println(result) ;
	     //既然方法有返回值,那么这些返回值也可以直接输出
	     System.out.println(add(100,200)) ;
	 }
	 public static int add(int x,int y){ 
	      return x + y ;
	      }
}

输出结果为:

30
300

完整示例:

public class method {
/*
* 程序入口,主函数 .
* @ 方法 <==> 函数,指的是同一个东西.
*/
    public static void main(String[] args) {
        // 通过函数名调用
        method01();
        method02(9, 3);
        System.out.println("5+6=" + add(5, 6));
}


/*
* @ 函数的格式为:
* @ 访问修饰符 返回值类型 函数名(参数类型1 参数名1,参数类型2 参数名2....){
* @ 执行语句
* @ return 返回值;//返回值的类型必须与返回值类型一致
* @ }
*/

    //声明一个静态函数method01() 无参数无返回值
    static void method01() {
        System.out.println("这是method01方法,可以通过method01();调用.");
        // 这个return可以省略.每个函数都是以return结束,返回到函数调用处
        return;
    }


    //有参数无返回值
    static void method02(int num1, int num2) {
        method01();
        System.out.println("这是method02方法,第一个参数是" + num1 + "第二个参数是" + num2);
    }

/*
* 有返回值的返回值类型要和要返回的数据类型一致
* @ 例如:计算两个整数的和,结果仍然是整型,返回值类型为int.返回值类型可以说基本数据类型,也可是自定义的数据类型
*/
    static int add(int num1, int num2) {
        int sum = 0; // 声明一个整形变量并初始化为0
        sum = num1 + num2;// 将num1和num2的和赋值给sum
        return sum;// 将sum的值返回到调用处
    }
}

参考博客:
https://blog.csdn.net/hohiuching/article/details/77480471

  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

何为xl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值