#千峰逆战班,205# 方法和局部变量——每天一个知识点,学会Java不再难

方法

1.返回值

1.1 举例:生活中有什么是返回值?
餐馆吃饭
	
	烤羊排 138一份 --> 声明
	
	付款 138RMB --> 给予实际参数
	
	厨师做好烤羊排之后,让服务员给你端上来 -->	厨师完成操
作,给予的返回值
1.2 代码中返回值需要使用的关键字
return 返回

作用:
	1.结束当前方法的执行
	2.返回return之后的数据,(举例:return 10;既返回数值10)
	  返回到方法之外,要求返回值的数据和方法声明位置告知调用者
	  的返回值数据类型一致
	  
	  【数据类型一致化】
1.3 完成一个五参数有返回值的方法
1.3.1 方法分析
需求
	give me five
	返回一个5
    
方法分析:
	固定格式:
		public static 不要问
        
返回值类型【重点】:
	返回值是一个55是什么数据类型?
	int类型  【注意类型!!!】
    
方法名:
	giveMeFive
	形式参数列表:
	这里是返回一个数据5,不需要参数
	()
        
方法声明:
	public static int giveMeFive()
1.3.2 方法实现和文档注释
/*
@return
在文档注释中告知调用者,当前方法的返回值是什么类型,怎么
解释,什么含义
*/
/**
* 该方法返回一个5,一个整数
*
* @return 返回一个整数5
*/
public static int giveMeFive() {
	return 5;
}
1.3.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.3.4 小总结
1. 返回值使用的关键字 return关键字
2. 带有返回值的方法,需要在文档注释中加入@return 告知调用
者方法返回值的类型,含义...
3. 方法返回值类型和方法体内返回数据的类型必须一致,如果不一
致报错,【数据类型一致化】
4. 方法的返回值处理方式,由程序员自己决定,因为我们现在只会
sout,但是不代表只有sout。后期数据的处理方式有很多,传递,
展示,发送,保存。。。。

1.3.5 小练习
	/*
		无参数有返回值的方法
	需求:
		返回值一个大写字符 'A'
		
	方法分析:
		固定格式:
			public static
			
	返回值类型:
		返回值数组为大写字符'A'
			char类型数据
			
	方法名:
		giveMeLetter
		
	形式参数列表:
		方法需要返回一个字符A,不需要参数
		()
		
	方法声明:
		public static char giveMeLetter()
	*/

	/**
	* 该方法返回一个大写字符 'A'
	*
	* @return 返回值类型为char类型,返回的数据是一个大写字符'A'
	*/
	public static char giveMeLetter() {
		return 'A';
}
class Method2 {
	public static void main(String[] args) {
		char ch = 'a';
        
		System.out.println("方法运行之前 ch : " +ch);
        
		ch = giveMeLetter();
        
		System.out.println("方法运行之后 ch : " +ch);
}
	/**
	* 该方法返回一个大写字符 'A'
	*
	* @return 返回值类型为char类型,返回的数据是一个大写字符 'A'
	*/
	public static char giveMeLetter() {
		return 'A';
	}
}
1.4 完成一个有参数有返回值的方法
1.4.1 方法分析
/*
需求:
	计算两个int类型数据之和,通过返回值返回到方法外
	1. 可以从需求中获取到当前方法需要两个参数
	2. 方法的返回值可以考虑使用int类型,或者long类型
	
方法分析:
	固定格式:
		public static 不要问
		
返回值类型:
	int 可以使用,没有问题,符合人之常情的理解
	long 可以满足如果出现两个int类型数据相加之后,结果超出了int类型范围,可
	以使用long
	
方法名:
	getSumOfTwoNumber
	小驼峰命名法,见名知意,动宾结构
	
形式参数列表:
	两个int类型数据之和,多个参数的情况下使用 逗号隔开
	(数据类型1 参数名1, 数据类型2 参数名2 ...)
	
	!!!(int num1, int num2) 正确格式
	
方法声明:
	public static int getSumOfTwoNumber(int num1,int num2)
*/
1.4.2 方法实现和文档注释
	/**
	* 该方法是传入两个int类型的数据,返回值是两数之和
	*
	* @param num1 int类型数据
	* @param num2 int类型数据
	* @return 返回值类型为int类型,是两个int类型数据之和
	*/
	public static int getSumOfTwoNumber(int num1, intnum2) {
		return num1 + num2;
}

1.4.3 方法调用过程
class Method3 {
	public static void main(String[] args) {
	/*
	当前方法需要两个参数,并且有返回值
	这里需要参数类型是int类型,给予当前方法两个int类型实际参数
	调用带有多参数的方法,要求传入的参数数据类型,个数和
	顺序必须和方法声明一致
	*/
		int sum = 0;
		System.out.println("方法运行之前 sum : " +sum);
        
		sum = getSumOfTwoNumber(30, 20);
		System.out.println("方法运行之后 sum : " +sum);
}
	/**
	* 该方法是传入两个int类型的数据,返回值是两数之和
	*
	* @param num1 int类型数据
	* @param num2 int类型数据
	* @return 返回值类型为int类型,是两个int类型数据之和
	*/
	public static int getSumOfTwoNumber(int num1,int num2) {
		return num1 + num2;
	}
}

1.4.4小总结
调用带有多参数的方法,要求传入的参数数据类型,个数和顺序必须和方法声明一致
1.5 举例说明
1.5.1 整型示例
	/*
	要求:
		1. 方法功能单一化!!!越单一越好!!!
			a. 可移植性更高
			b. 复用度更强
			c. 模块更加明确
	参考生活中:
		乐高,游戏<<我的世界>>
		
		2. 不允许在方法中使用Scanner从键盘上获取数据!!!
			a. 不符合方法功能单一化
			b. Scanner不是我们后期开发的核心知识点
	*/
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, intnum2) {
	/*
	当前方法体是存在两个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;
	}
}

1.5.2 浮点型示例
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';
	}
}
1.5.3 字符型示例
class Method6 {
	public static void main(String[] args) {
		System.out.println(isMyNumber('a'));
		System.out.println(isMyEnglish('1'));
}
	/**
	* 封装一个方法,来判断一个字符是否是数字字符
	* 如果是,返回true,否则返回false!
	*
	* @param c 字符类型数据c
	* @return 如果是数字字符,返回true,否则返回false
	*/
	public static boolean isMyNumber(char c) {
		return c >= '0' && c <= '9';
}
	/**
	* 封装一个方法,来判断一个字符是否是英文字母
	* 如果是,返回true,否则返回false!
	*
	* @param c 字符类型的数据c
	* @return 如果是英文字母返回true,否则返回false
	*/
	public static boolean isMyEnglish(char c) {
		return (c >= 'A' && c <= 'Z') || (c >= 'a'&& c <= 'z');
	}
}
1.5.4 字符型示例二
class Method7 {
	public static void main(String[] args) {
		System.out.println(toMyLower('D'));
		reverse(7654321);
}
	/**
	* 封装一个方法,传入一个字符,如果是大写那么转化小写然后返回,否则保持不变返回
	*
	* @param c char字符类型数据
	* @return 如果是大写字母转换为小写字母返回,否则不变
	*/
	public static char toMyLower(char c) {
		if (c >= 'A' && c <= 'Z') {
		// c += 32; // 正确操作
		c += ('a' - 'A'); // 更推荐
	}
		return c;
}
	/**
	* 封装一个方法,实现将一个正整数,倒序打印输出! 12344321
	*
	* @param number 传入一个int类型数据
	*/
	public static void reverse(int number) {
		while (number > 0) {
			System.out.print(number % 10);
			number /= 10;
		}
	}
}

局部变量

1. 观察代码思考问题

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;
	}
}

2. 局部变量概念

局部变量概念
	除class大括号之外,其他大括号以内的变量都可以认为是一个局部变量。
	方法大括号以内,if分支结构以内,switch case结构大括号以内,循环
	大括号以内以上大括号以内全部都是【局部变量】
	
作用域
	当前局部变量能够使用的范围在什么地方局部变量有且只能在当前所处大括
	号以内使用,超出范围无法使用青岛校区刘磊 和 郑州校区刘磊,没有关系,
	跨区域一个网吧充值会员100块,换一个网吧不能使用,作用域
	
生存期
	局部变量的生存期也在大括号以内,和作用域一致。

3. 举例说明

3.1 作用域,生存期
	for (int i = 1; i <= 10; i++) {
}
	System.out.println(i); // ???
	Method10.java:7: 错误: 找不到符号
	System.out.println(i); // ???
	^
	符号: 变量 i
	位置: 类 Method10
	1 个错误
        
        sout(i); 是在int的大括号之外,所以无法调用数据 i
3.2 不同循环,定义相同变量名
	for (int i = 1; i <= 10; i++) {
}
	for (int i = 1; i <= 10; i++) {
}
不冲突,两个for循环中,i循环变量分别属于不同的大括号以内,不同的作用域空间
    
   虽然存在重复定义 i ,但是是在不同的作用域,所以并不会发生冲突
3.3 嵌套循环,定义相同变量名
	for (int i = 1; i <= 10; i++) {
		for (int i = 1; i <= 10; i++) {
	}
}
	冲突,在外层for循环中,已经定义了循环变量i,内层循环重新定义了循环变量,也是i,重复定义变量,冲突
        
     同属同一大括号内,变量名多次定义,发生冲突
3.4
	for (int i = 1; i <= 10; i++) {
		if (i > 5) {
		int num = 10;
	}
		System.out.println(num);
}
		System.out.println(num);

	错误的!!!
	因为num变量定义在if 大括号以内,作用域和生存期有且只在
	if分支结构大括号以内,超出范围,无效!!!
        
    在哪定义,在哪使用

总结

1. 关注局部变量的作用域和生存期范围,两者同步,并且都在对应的大括号以内
2. 变量未定义不能使用,要保证代码执行的,从上至下,从左至右原则
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个用 Shell 脚本自动打卡在微信千峰小程序上的示例: ```shell #!/bin/bash # 请在下面填入你的登录凭据和打卡信息 USERNAME="your_username" PASSWORD="your_password" LOCATION="your_location" # 登录微信 /Applications/WeChat.app/Contents/MacOS/WeChat -login -u $USERNAME -p $PASSWORD # 等待微信启动并扫码登录 sleep 10 # 启动微信小程序 # 请根据你的实际情况修改下面的命令,确保微信小程序在 Dock 中的位置 open -a WeChat && sleep 5 && osascript -e &#39;tell application "System Events" to tell process "WeChat" to click menu item "千峰小程序" of menu "Window" of menu bar 1&#39; # 等待小程序启动 sleep 10 # 定位到打卡页面 osascript -e &#39;tell application "System Events" to tell process "WeChat" to tell window 1 to tell web area 1 to set value of text field 1 to "&#39;$LOCATION&#39;"&#39; # 点击打卡按钮 osascript -e &#39;tell application "System Events" to tell process "WeChat" to tell window 1 to tell web area 1 to click button 1&#39; # 等待打卡完成 sleep 5 # 关闭微信 osascript -e &#39;tell application "System Events" to tell process "WeChat" to click menu item "退出登录" of menu 1 of menu bar item "WeChat" of menu bar 1&#39; # 退出脚本 exit 0 ``` 请注意,这个脚本是基于 macOS 系统的,使用了微信客户端,因此你需要将微信客户端的路径 `/Applications/WeChat.app/Contents/MacOS/WeChat` 修改为你的实际路径。另外,根据你的实际情况,可能需要对脚本进行一些调整。 请确保你已经安装了 WeChat 命令行工具,并且你已经登录了微信账号。运行脚本后,它将自动打开微信、进入千峰小程序、填写定位信息并点击打卡按钮,最后退出微信。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值