方法和局部变量
1.返回值【重点】
1.1 生活中的返回值
餐馆吃饭
烤羊跑 138一份 --> 声明
付款138RMB --> 给予实际参数
厨师做好做好烤羊排后,让服务员给你端上来 --> 厨师完成操作,给予的返回值
1.2 代码中的返回值需要使用的关键字
return
返回
作用:
1.结束当前方法的执行
2.返回 return 之后的数据,到方法之外,要求返回值的数据和方法声明位置告知的返回值数据类型一致
1.3 完成一个无参数有返回值的方法
1.3.1 方法分析
需求
give me five
返回一个5
方法分析:
固定格式:
public static 不要问
返回值类型【重点】:
返回值是一个5 , 5 是什么数据类型?
int 类型
方法名:
giveMeFive
形式参数列表:
这里是返回一个数据5 ,不需要参数
( )
方法声明:
public static int giveMeFive ( )
1.3.2 方法实现和文档注释
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) ;
}
public static int giveMeFive ( ) {
return 5 ;
}
}
1.3.4 带有返回值方法执行过程图例
1.3.5 小总结
1.返回值使用的关键字,return 关键字
2.带有返回值的方法,需要在文档注释中加入 @return 告知调用者方法返回值的类型、含义...
3.方法返回值类型和方法返回体内返回的数据的类型必须一致,如果不一致报错【数据类型一致化】
4.方法的返回值处理方式,由程序员决定,我们现在只用cout,不代表只能cout,后期数据的处理方式由很多,传递、展示、发送、保存...
1.3.6 小练习
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) ;
}
public static char giveMeLetter ( ) {
return 'A' ;
}
}
1.4 完成一个返回值有参数的方法
1.4.1 方法分析
1.4.2 方法实现和文档注释
public static int getSumOfTwoNumber ( int num1, int num2) {
return num1 + num2;
}
1.4.3 方法调用过程
class Method3 {
public static void main ( String[ ] args) {
int sum = 0 ;
System. out. println ( "方法运行之前 sum : " + sum) ;
sum = getSumOfTwoNumber ( 30 , 20 ) ;
System. out. println ( "方法运行之后 sum : " + sum) ;
}
public static int getSumOfTwoNumber ( int num1, int num2) {
return num1 + num2;
}
}
1.4.5 小总结
调用带有多参数的方法,要求传入的参数的数据类型、个数、顺序必须和方法声明一致
1.5 练习
class Method4 {
public static void main ( String[ ] args) {
int max = maxOfNumber ( 30 , 20 ) ;
System. out. println ( "Max : " + max) ;
}
public static int maxOfNumber ( int num1, int num2) {
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) ;
}
public static double minOfNumber ( double num1, double num2) {
return num1 < num2 ? num1 : num2;
}
public static boolean isMyUpper ( char c) {
return c >= 'A' && c <= 'Z' ;
}
}
class Method6 {
public static void main ( String[ ] args) {
System. out. println ( isMyNumber ( 'a' ) ) ;
System. out. println ( isMyEnglish ( '1' ) ) ;
}
public static boolean isMyNumber ( char c) {
return c >= '0' && c <= '9' ;
}
public static boolean isMyEnglish ( char c) {
return ( c >= 'A' && c <= 'Z' ) || ( c >= 'a' && c <= 'z' ) ;
}
}
class Method7 {
public static void main ( String[ ] args) {
System. out. println ( toMyLower ( 'D' ) ) ;
reverse ( 7654321 ) ;
}
public static char toMyLower ( char c) {
if ( c >= 'A' && c <= 'Z' ) {
c += ( 'a' - 'A' ) ;
}
return c;
}
public static void reverse ( int number) {
while ( number > 0 ) {
System. out. print ( number % 10 ) ;
number /= 10 ;
}
}
}
class Method8 {
public static void main ( String[ ] args) {
isPositiveNumber ( 1000 ) ;
}
public static double cube ( double number) {
return number * number * number;
}
public static boolean isLeap ( int year) {
return ( year % 4 == 0 && year % 100 != 0 ) || year % 400 == 0 ;
}
public static void isPositiveNumber ( int num) {
System. out. println ( num > 0 ? "YES" : "NO" ) ;
}
}
2 局部变量问题【小坑】
2.1 思考代码
class Method9 {
public static void main ( String[ ] args) {
int num = 5 ;
test ( num) ;
System. out. println ( num) ;
}
public static void test ( int num) {
num = 10 ;
}
}
2.2 局部变量概念
局部变量概念
除class大括号之外,其他大括号以内的变量都可以认为是一个局部变量。
方法大括号以内,if分支结构以内,switch case结构大括号以内,循环大括号以内
以上大括号以内全部都是【局部变量】
作用域
当前局部变量能够使用的范围在什么地方
局部变量有且只能在当前所处大括号以内使用,超出范围无法使用
青岛校区刘磊 和 郑州校区刘磊,没有关系,跨区域
一个网吧充值会员100块,换一个网吧不能使用,作用域
生存期
局部变量的生存期也在大括号以内,和作用域一致。
2.3 小题目
1.
for ( int i = 1 ; i <= 10 ; i++ ) {
}
System. out. println ( i) ;
Method10. java: 7 : 错误: 找不到符号
System. out. println ( i) ;
^
符号: 变量 i
位置: 类 Method10
1 个错误
for ( int i = 1 ; i <= 10 ; i++ ) {
}
for ( int i = 1 ; i <= 10 ; i++ ) {
}
不冲突,两个for 循环中,i循环变量分别属于不同的大括号以内,不同的作用域空间
for ( int i = 1 ; i <= 10 ; i++ ) {
for ( int i = 1 ; i <= 10 ; i++ ) {
}
}
冲突,在外层for 循环中,已经定义了循环变量i, 内层循环重新定义了循环变量,也是i,重复定义变量,冲突
for ( int i = 1 ; i <= 10 ; i++ ) {
if ( i > 5 ) {
int num = 10 ;
}
System. out. println ( num) ;
}
System. out. println ( num) ;
错误的!!!
因为num变量定义在if 大括号以内,作用域和生存期有且只在if 分支结构大括号以内,超出范围,无效!!!
2.4 总结
1. 关注局部变量的作用域和生存期范围,两者同步,并且都在对应的大括号以内
2. 变量未定义不能使用,要保证代码执行的,从上至下,从左至右原则
3.收获
拼搏到无能为力,坚持到感动自己
1.学习了无参数有返回值的方法以及有参数有返回值的方法的使用,能够进行一些简单的使用
2.进一步学习了文档注释的规范以及要求
3.对局部变量有一个较为清晰的概念,能够较为熟练的使用