1、传参机制
- 形参:方法的参数定义;实参:方法的参数传递;
修饰符 返回值类型 方法名称(参数类型 参数名称;...){
方法体
return 返回值;
}
- 范例:
public class hello{
public static void main(String[] args) {
int n1 = 1;
int n2 = 2;
AA a = new AA();
System.out.println("传参1");
a.add(1,2);
System.out.println("传参2");
System.out.println(a.add(1,2));
System.out.println("传参3");
System.out.println(a.add(n1,n2));
}
}
class AA {
public int add(int x, int y){
int z;
z = x + y;
return z;
};
}
- 调用方式
(1)单独调用:没有打印输出
add(1,2);
(2)打印调用:结果打印输出
System.out.println(add(1,2));
(3)赋值调用
int x = 1;
int y = 2;
System.out.println(add(x,y));
- 运行结果
- 附加1:累加练习题
public static int getSum(){
int result = 0;
for (int k=1;k<=100;k++){
result += k;
}
return result;
}
getSum();
- 附加2:比较练习题
public static int getmax(int x,int y){
if (x>y){
return x;
}
else if(x<y){
return y;
}
else{
return x;
}
}
System.out.println(getmax(1,2));
- 附加3:打印指定字符串
public static void printCount(int num){
for (int i=1;i<=num;i++){
System.out.println("hello"+(i+1));
}
}
printCount(2);
2、可变参数
- 含义:传递参数的个数不定
- 使用细节
1、可变参数实参可以为0个;
2、可变参数实参可为数组;
3、可变参数可以和普通类型参数一起放在形参列表,但必须保证可变参数放在最后
4、一个形参列表:普通类型可以有多个,可变参数只能有一个
- 范例
public class hello{
public static void main(String[] args) {
AA a = new AA();
System.out.println("两个参数add方法运行结果:"+a.add(1,2));
System.out.println("三个参数add方法运行结果:"+a.add(1,2,3));
System.out.println("四个参数add方法运行结果:"+a.add(1,2,3,4));
}
}
class AA {
public int add(int... n){
int res = 0;
System.out.println("可变参数个数:"+n.length);
for (int i=0;i<n.length;i++){
res += 1;
}
return res;
};
}
- 运行结果
3、属性&局部变量
(1)局部变量和全局变量的区别
①局部变量和全局变量:
局部变量:一般是指在成员方法(及代码块)中定义的变量,即类属性之外的变量
全局变量:类的属性
②赋值:
全局变量可以不赋值,有默认值
局部变量必须赋值,没有默认值
③作用域:
全局变量:作用域为整个类体;
局部变量:作用域为方法体中;
- 范例
public class hello {
public static void main(String[] args) {
dog dog1 = new dog();
System.out.println("全局变量name:"+dog1.name);
System.out.println("全局变量age:"+dog1.age);
System.out.println("全局变量sal:"+dog1.sal);
dog1.cry();
}
}
class dog {
//全局变量:即属性,作用域为整个类体
//属性在定义时,可以不赋值,有默认值
String name = "小花";
int age;
double sal;
public void cry(){
//1、局部变量一般实在成员方法中定义的变量
//2、n和name就是局部变量
//3、n和name作用域在cry方法中
int n = 10;
double d = 1.2;
System.out.println("局部变量n:"+n);
System.out.println("全局变量name:"+name);
System.out.println("局部变量:"+d);
}
}
- 运行结果
(2)作用域注意事项
- 作用域
①属性和局部变量可以重名,访问时遵循就近原则;
②在同一个作用域中,比如一个成员方法中,两个局部变量不能重名
③生命周期
属性的生命周期较长,伴随着对象的创建而创建,伴随着对象的死亡而死亡;
局部变量的生命周期较短,伴随着代码块的执行而创建,伴随着代码块的死亡而死亡;
④作用域范围不同
全局变量:可以被本类使用,或者其他类使用(通过对象调用),所以可以加修饰符;
局部变量:只能在本类中对应的方法中使用,不可以加修饰符;
⑤修饰符不同
全局变量:可以加修饰符
局部变量:不可以加修饰符
- 范例
public class hello {
public static void main(String[] args) {
dog dog1 = new dog();
System.out.println("全局变量name:"+dog1.name);
dog1.cry();
}
}
class dog {
String name = "小花";
public void cry(){
String name = "小白";
System.out.println("局部变量name:"+name);
}
}
- 运行结果
4、成员方法重载
4.1、重载定义
- 重载:在同一个类中,方法同名,但是形参列表不同
- 范例
public class hello{
public static void main(String[] args) {
AA a = new AA();
System.out.println("两个参数add方法运行结果:"+a.add(1,2));
System.out.println("三个参数add方法运行结果:"+a.add(1,2,3));
}
}
class AA {
public int add(int x, int y){
int z;
z = x + y;
return z;
};
public int add(int x,int y,int z){
int num;
num = x + y + z;
return num;
};
}
- 运行结果
4.2、重载使用细节
-
重载使用细节
- ①方法名:必须相同
- ②形参列表:必须不同(形参类型或个数,至少有一样不同,参数名无要求)
-
范例
public class hello{
public static void main(String[] args) {
AA a = new AA();
System.out.println("两个参数add方法运行结果:"+a.add(1,2));
System.out.println("三个参数add方法运行结果:"+a.add(1,2,3));
System.out.println("两个参数类型为String的运行结果:"+a.add("hello","word"));
}
}
class AA {
public int add(int x, int y){
int z;
z = x + y;
return z;
};
// 1、参数个数不同
public int add(int x,int y,int z){
int num;
num = x + y + z;
return num;
};
// 2、参数类型不同
public String add(String x, String y){
String z;
z = x + y;
return z;
};
}
- 运行结果