学习目标:
理解类的方法
定义和调用类的无参方法
理解变量的作用域
学习内容:
1.方法的组成部分:
访问修饰符 返回值类型 方法名(参数){
方法体//return也属于方法体的一部分
}
public String show(){
return "XZXX";
}
2.return
return的作用是用来结束整个方法的,原则上return语句是需要放在方法的最后一行,但是加上选则结构后,有特殊用法
public String robBall(){
String ball = "球";
if(ball == null){
return "面包";
}
return ball;//?去掉试试
}
解释:假设去掉最后一行的return ball,那么当ball == null时,这个方法的确有return语句了,但是如果ball 不等于null时,这个方法就没有了return语句,这在有返回值的方法中是错误的。
3.无返回值方法和有返回值的方法
无返回值方法:使用的时void 作为返回类型,表示无返回值
public void show(){}
有返回值方法:就看return后面的是什么类型的结果, 那么就将void替换为该类型
例如
return 字符串,则void改为String
public String show(){return "字符串"}
return 整型, 则void改为int
public int show(){return 1;}
return 数组, 则void 改为数组类型
public String[] show(){
String [] strs = {"a","b","aaa","admin"};
return strs;
}
return true 或者false ,则void改为boolean
public boolean show(){
return 3 > 4;
}
......
3.有返回值方法和无返回值方法的使用场景?(如何判断用哪种方法)
任何一个方法都可以定义成为一个有返回值的方法,但是调用者不需要返回值的时候,就不必要定义成有返回值的方法,也就是说,调用者不需要返回数据的时候,只需要定义成无返回值的方法即可。
当调用者或者设计者需要这个方法返回数据的时候,一定不能将该方法定义成无返回值方法。
简单来说就看需不需要这个方法返回数据,需要则定义有返回值方法,不需要则定义无返回值方法。
还有一种情况(重点!!!!!!!!!!!)
方法中的数据如果全部都在方法内部使用,而不需要再调用者方使用,则需要定义成无返回值的方法;
方法中的数据如果有需要再调用者方使用,则必须定义成有返回值的方法;
场景周老师给出两个数字,让小明计算,计算结果可以是小明报出来,也可以是周老师报出来
分析:
方法:小明计算的方法
class 小明{
计算(){
}
}
情况一:计算结果可以是小明报出来
说明,数据在小明这个类中使用,而周老师这个类不需要使用,因此该方法定义为无返回值方法
class 小明{
public void 计算(){
System.out.println(计算结果)
}
}
情况二:计算结果可以是周老师报出来
说明,数据在小明这个类中使用,也在周老师这个类使用,因此该方法定义为有返回值方法,小明需要将数据返回给周老师
class 小明{
public int 计算(){
return 计算结果;
}
}
方法的调用:
如果方法是无返回值,则调用者在调用的时候,不能使用变量来接受!
class A{
public void show(){
}
}
class B{
A a = new A();
a.show();
}
如果方法是由返回值,则调用者再调用的时候,通常是必须要使用一个变量来接受这个方法的调用,接收的变量类型必须与方法的返回值兼容/相同
class A{
public int show(){
}
}
class B{
A a = new A();
int numl = a.show();
//long num2 = a.show();
//double num3 = a.show();
}
同一个类中,方法的调用不需要创建对象,直接写方法名即可
class A{
public int getSum(){
return 结果;
}
public double getAvy(){
return getSum()*1.0/3;
}
}
不同类中,需要先创建对象,然后使用对象名。方法名();
成员变量和局部变量
成员变量:定义在类的内部,属于类的属性
局部变量:定义在方法中、选择结果中、循环结构中、代码块中等
成员变量:Java会给成员变量提供初始值
局部变量:Java不会给局部变量提供初始值,需要开发者手动赋予局部变量初始值,否则在使用时,会报错
同一个方法中不能存在同名的变量,但是不同的方法可以存在同名的变量
在同一个类中,局部变量可以与成员变量同名,当同名时,局部变量具有更高的优先级
也就是说,使用相同的变量名,局部作用域使用的是局部变量
若局部作用域想使用成员变量,需要使用this.变量名
在同一个局部作用域中,更内部的作用域不能再定义一个与外部作用域同名的变量
总结:
凡是带有大括号的都是作用域
并且内部括号的作用域小于外部括号的作用域,
因此内部作用域可以使用外部作用域的变量,但是外部作用域的变量不能使用内部作用域定义的变量。