java入门:方法及局部变量基本概念

什么是方法
生活中使用的工具,螺丝刀,锤子,扳手。
	1. 复用,重复使用
	2. 提高效率

开发中,存在代码需要复用的情况。虽然循环可以解决一部分代码复用的问题,但是无法从根本上解决需要多处使用的情况。
这里需要用到方法
代码中使用循环解决复用的问题
	1. 代码冗余!!!
	2. 维护性极差!!!
	3. 阅读性极差!!!
// main方法 Java中主方法格式
public static void main(String[] args) {
    
}

/*
public static : 不要问!!!固定格式

void: 返回值类型 void 表示当前方法没有返回值
	返回值类型是当前方法运行完成之后对方法外的一个返回数据

main: 方法名,方法名是一个名字,要求符合命名规范
	小驼峰命名法,见名知意,动宾结构

(形式参数列表): 当前方法运行所需的外来数据,这里需要告知调用者数据类型

{}: 方法体

方法格式:
	public static 返回值类型 方法名(形式参数列表) {
		方法体
	}
	
	public static returnType methodName(Arguments) {
		Method Body
	}
*/

第一次自定义实现方法

需求:
使用方法展示一个Hello World

方法分析:
固定格式: public static 不要问
返回值类型:
这里不需要返回值类型,采用void
方法名:
printHelloWorld
见名知意,动宾结构,小驼峰命名法
形式参数列表:
当前方法没有任何的外来数据需求,不需要参数

	public static void printHelloWorld()

方法实现过程

/**
* 文档注释
*		1. 对于方法的功能解释
*		2. 方法所需参数介绍
*		3. 方法返回值类型介绍和含义
*		4. 方法处理过程中出现的异常
*/

/**
* 展示打印到控制台一个Hello World
*/
public static void printHelloWorld() {
    // 方法体
    System.out.println("Hello World");
}

自定义方法调用过程

1. 在需要调用方法的位置,使用方法名调用方法
2. 方法和变量的最大区别
	方法后面一定有小括号!!!
/* 自定义实现第一个方法 */
class Method1 {
	public static void main(String[] args) {
		// 调用方法一定要有小括号,如果没有参数,小括号内没有内容
		printHelloWorld();
		printHelloWorld();
		printHelloWorld();
		printHelloWorld();
		printHelloWorld();
	}
	
	/**
	* 展示打印到控制台一个Hello World
	*/
	public static void printHelloWorld() {
		// 方法体
		System.out.println("烤羊排~~");
	}
}

自定义方法小总结

1. 目前我们有且只考虑在main方法中来调用其他方法
2. main方法是目前我们现在程序的唯一入门,如果想要哪一个代码执行,哪一个方法被调用,都需要经过main方法完成
3. 方法书写一定要注意代码格式
4. 方法位置在class以内,其他方法之外

无形式参数无返回值的方法

/*
需求:
	在控制台打印展示10个烤羊排!!!

方法分析:
	固定格式: 
		public static 不要问
	返回值类型:	
		在控制台展示输出,这里不需要返回值
		void
	方法名:
		BBQ 烧烤
	形式参数列表:
		当前方法没有一个对于外来数据的需求
		() 没有参数

【方法声明】
	public static void BBQ()
*/

/**
* 展示10次烧烤内容
*/
public static void BBQ() {
    for (int i = 1; i <= 10; i++) {
        System.out.println("烤羊肉串...");
    }
}

========================================================================

/* 无形式参数无返回值类型的方法 */
class Method2 {
	public static void main(String[] args) {
		// 方法调用一定有小括号
		BBQ();
	}
	
	// 注释颜色
	/**
	* 展示10次烧烤内容
	*/
	public static void BBQ() {
		for (int i = 1; i <= 10; i++) {
			System.out.println("烤羊排...");
		}
    }
}

有参数无返回值的方法

/*
需求:
	展示用户告知的int类型数据
	用户调用该方法,传入一个int类型,在控制台打印展示int类型数据
   
方法分析:
	固定格式:
		public static 不要问
	返回值类型:
		展示打印一个int类型数据,不需要返回值!!!
		void
	方法名:
		printIntNumber
		小驼峰命名法,见名知意,动宾结构
	形式参数列表:
		该方法需要展示的数据是用户传入的,而且是int类型
		(int num) 参数声明
		int 是参数的数据类型
		num 是参数的名字,可以认为是方法内的一个变量,可以供方法使用

【方法声明】
	public static void printIntNumber(int num)
*/

/*
文档注释细节
	1. @param num 是告知编译器,这里在解释方法参数num
	2. 方法功能概述和之后的参数解释,返回值解释需要空一行,标准格式代码
	3. 文档注释可以帮助我们后期更好的阅读代码
*/
/**
* 展示用户传入的int类型数据
* 
* @param num 这里需要一个int类型数据
*/
public static void printIntNumber(int num) {
    // 用户调用该方法时,会将数据存储于num中,展示num中的数据就OK了
 	System.out.println(num);   
}

有参数无返回值方法调用

/* 有参数无返回值方法演示 */
class Method3 {
	
	public static void main(String[] args) {
		// 当前方法需要参数,这里调用时调用者必须给他参数
		printIntNumber(10);
	}
	
	/**
	* 展示用户传入的int类型数据
	* 
	* @param num 这里需要一个int类型数据
	*/
	public static void printIntNumber(int num) {
		// 用户调用该方法时,会将数据存储于num中,展示num中的数据就OK了
		System.out.println(num);   
	}
}
  1. 方法如果需要参数,必须在调用过程中给予对应的参数
  2. 方法如果没有给定参数,报错!!!编译不通过
  3. 方法如果给定的实际参数,数据类型不符合形式参数列表要求的数据类型,报错!!!编译不通过,数据类型一致化问题!!!
  4. 方法如果在调用的过程中给定的参数个数,不是方法所预期的参数个数,报错!!!编译不通过

返回值【难点】

1.生活中的返回值:
餐馆吃饭
烤羊排 138一份 --> 声明
付款 138RMB --> 给予实际参数
厨师做好烤羊排之后,让服务员给你端上来 --> 厨师完成操作,给予的返回值

ATM机取钱
取钱 1000RMB --> 调用方法
输入密码 --> 给予实际参数
密码正确,ATM给你1000RMB --> 操作完成,给予的返回值

去餐厅吃饭,端上来的菜品
去ATM取钱,ATM给我们的钱
以上都是返回值的一个生活解释

2.代码中的返回值:
return 返回作用:

  1. 结束当前方法的执行
  2. 返回return之后的数据,到方法之外,要求返回值的数据和方法声明位置告知调用者的
    返回值数据类型一致 【数据类型一致化】

3.调用一个带返回值的方法

class Method1 {
	public static void main(String[] args) {
		/*
		调用一个带有返回值的方法
			返回值怎么用???
			赋值,运算,打印
			
			方法的返回值返回到之外,调用者决定当前结果的
			使用方式。
		*/
		int ret = 0;
		
		System.out.println("调用方法之前 ret : " + ret);
		
		ret = giveMeFive();
		System.out.println("直接调用方法:" + giveMeFive());
		
		System.out.println("调用方法之后 ret : " + ret);
	}
	
	/**
	* 该方法返回一个5,一个整数
	*
	* @return 返回一个整数5
	*/
	public static int giveMeFive() {
		return 5;
	}
}
  1. 返回值使用的关键字 return关键字
  2. 带有返回值的方法,需要在文档注释中加入@return 告知调用者方法返回值的类型,含义…
  3. 方法返回值类型和方法体内返回数据的类型必须一致,如果不一致报错,【数据类型一致化】
  4. 方法的返回值处理方式,由程序员自己决定,因为我们现在只会sout,但是不代表只有sout。后期数据的处理方式有很多,传递,展示,发送,保存。。。。

优化方法:

class Method4 {
	public static void main(String[] args) {
		int max = maxOfNumber(30, 20);
		
		System.out.println("Max : " + max);
	}
	
	/**
	* 该方法是返回两个整数里的较大那个
	*
	* @param num1 int类型数据
	* @param num2 int类型数据
	* @return 两个int类型数据中较大的一个,如果相同返回任意一个
	*/
	public static int maxOfNumber(int num1, int num2) {
		/*
		当前方法体是存在两个return,而在开发中return的使用是需要有一些
		注意事项
			尽量减少return的使用 增强阅读性,代码逻辑更加明确
		
		if (num1 > num2) {
			return num1;
	    } else {
			return num2;
	    }
		*/
		
		/*  
		当前写法是没有问题,而且使用到假设的思想,可以提供代码的
		阅读性,并且简化代码逻辑,减少return使用
		
		int max = num1;
		
		if (max < num2) {
			max = num2;
		}
		
		return max;
		*/
		/*
		三目运算符/条件运算符
			条件 ? true处理方式 : false处理方式;
			简化版,功能缺失版 if else结构
		建议:
			在一些简单的逻辑中可以使用,提高一定的效率
		*/
		return num1 > num2 ? num1 : num2;
	}
}

优化代码思想:

class Method5 {
	public static void main(String[] args) {
		double min = minOfNumber(4.5, 3.8);
		System.out.println(min);
		
		boolean ret = isMyUpper('Z');
		System.out.println(ret);
	}
	
	/**
	* 返回两个浮点数里的较小那个
	* 
	* @param num1 double类型数据
	* @param num2 double类型数据
	* @return 两个浮点数里的较小那个
	*/
	public static double minOfNumber(double num1, double num2) {
		return num1 < num2 ? num1 : num2;
	}

	/**
	* 封装一个方法,来判断一个字符是否是大写字母
	* 如果是,返回true,否则返回false
	*
	* @param c 字符类型数据
	* @return 如果字符是大写字母返回true,否则返回false
	*/
	public static boolean isMyUpper(char c) {
		return c >= 'A' && c <= 'Z';
	}
}

局部变量:

class Method9 {
	public static void main(String[] args) {
        int num = 5;
        test(num);
        
        // 5 为什么是5
        System.out.println(num);
    }
    
    public static void test(int num) {
        num = 10;
    }
}

局部变量概念
除class大括号之外,其他大括号以内的变量都可以认为是一个局部变量。
方法大括号以内,if分支结构以内,switch case结构大括号以内,循环大括号以内
以上大括号以内全部都是【局部变量】

作用域
当前局部变量能够使用的范围在什么地方
局部变量有且只能在当前所处大括号以内使用,超出范围无法使用

生存期
局部变量的生存期也在大括号以内,和作用域一致。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值