第二章 方法和方法重载

第二章 方法和方法重载

一、方法的参数传递

<访问修饰符>  返回类型  <方法名>(<形式参数列表>) {
        //方法的主体
    return 返回值;
}
//举例
public void add1(float a,float b,float c){
        float sum=a+b+c;
        System.out.println(sum);
}
//方法的调用,参数类型要一致,数量也要一致;
sc1.add1(11.4F,11.6f,11.8f);
//调用方法时不能指定实参类型!(直接写就行,不用在设置类型)

二、基本数据类型和引用数据类型数据在传参时区别

1、参数传递方式

基本数据类型:传递的是变量的值本身。即使方法内部改变了形参的值,也不会影响到实参的值。
引用数据类型:传递的是数据的引用,即对象的地址。如果在方法内部通过形参修改了对象的内容,那么这些改变会影响到实参所指向的对象。

2、参数修改

基本数据类型:方法内部对形参的任何修改都不会影响实参的值。每个变量都有自己的独立的存储空间。
引用数据类型:由于形参和实参可能指向内存中的同一块区域,因此通过形参对对象进行的修改会反映到实参上。但若在方法内部使形参指向一个新的对象,则不会影响到实参的指向。

3、内存分配

基本数据类型:变量直接存储在栈内存中,赋值和传递都是值的拷贝,不会相互影响。
引用数据类型:对象的存储位于堆内存中,变量存储的是对象的引用地址。
    //
public class Test {
         public void calc1(int num){
                  num=num+1;
          }
          public void calc2(Student student){
                  student.age=student.age+1;
          }
}
// 测试类
Test test=new Test();
int n=8;
test.calc1(n);
Student stu=new Student();
stu.age=18;
test.calc2(stu);
System.out.println(n+"---"+stu.age);
输出结果8--19

三、构造方法

1、构造方法
访问修饰符   构造方法名 ( ) { 
       //初始化代码
}
要求:
无返回值类型
方法名与类名相同
可以指定参数 



2、自定义构造方法
    方法名相同
    参数项不同
    与返回值、访问修饰符无关
public   Student(){}
//自定义构造方法
public  Student(String name,int age){
	 this.name=name;
     this.age=age;
}//使用this关键字将传入的参数值分别赋给类的实例变量name和age。
3this 关键字(代表当前对象这个)
    它主要有四个作用:
    1、访问成员变量
    this.age = 10; 
    2、调用成员方法
    this.print(); 
    3、调用构造方法
    this("小黑",100);//姓名小黑,年龄100;
    4、返回当前对象的引用
	public class MyClass {
    		private int value;
            public MyClass setValue(int value) {
                this.value = value; // 设置成员变量value的值
                return this; // 返回当前对象的引用
            }
            public int getValue() {
                return this.value; // 获取成员变量value的值
            }
	}

       使用return this语句时,必须确保该方法的返回类型与当前类的类型相同或者是其子类的类型 

四、方法重载

同一个类中
方法名相同
参数个数或类型不同
与返回值、访问修饰符无关
public NetWork(int id,int password,String email){
        this.id=id;
        this.password=password;
        this.email=email;
    }
public NetWork(int id,int password){
        this.id=id;
        this.password=password;
 }

五、成员变量和局部变量

作用域不同
        局部变量的作用域仅限于定义它的方法
        成员变量的作用域在整个类内部都是可见的
初始值不同
        Java会给成员变量一个初始值 int 为0,String 为null
        Java不会给局部变量赋予初始值
注意:
    1、在同一个方法中,不允许有同名局部变量
    2、在不同的方法中,可以有同名局部变量
    3、在同一个类中,成员变量和局部变量同名时,局部变量具有更高的优先级


public class Vehicle {
    public int speed;
    public int size; //成员变量
    public  static void main(String[] args) {
        
    }
   //j 局部变量
    public int[] Add(int stu[]){
            for (int j=0;j<stu.length;j++){
                if (stu[j]<60){
                    for (int i=0;i<stu.length;i++){
                        stu[i]+=2;
                    }
                }
            }
            return stu;
        }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值