JAVA面向对象①(构造方法,this,null/NullPointException)

面向对象1

  1. 构造方法: 构造函数,构造器,构建器,--------复用给成员变量赋初始值代码
  • 作用:给成员变量赋初始值
  • 与类同名,没有返回值类型
  • 在创建(new)对象时被自动调用
  • 若自己不写构造方法,则编译器提供一个无参构造方法,若自己写了,则不再默认提供
  • 构造方法可以重载 
class Student{
    String name;
    int age;
    String address;
    //利用构造方法给成员变量赋初始值
    //构造方法必须与类名相同,没有返回值类型,在创建对象时被自动调用,
    //若自己不写构造方法,则编译器提供一个无参构造方法,若自己写了,则不再默认提供
    Student (String name1,int age1,String address){//给成员变量赋初始值
            name=name1;
            age=age1;
            address=address1;
    }
}
//在创建对象的时候就会自动调用我们在类中建立好的构造方法
Student zs=new Student("张三",25,"廊坊");
Student ls=new Student("里斯",20,"佳木斯");
Student ww=new Student("王五",20,"冰岛");
Student oi=new Student();//编译错误
                         //因为我们建立了有参构造方法,所以系统将不再提供默认的无参构造方法
s Student{
    String name;
    int age;
    String address;
    Student(){
            
    }
    //利用构造方法给成员变量赋初始值
    //构造方法必须与类名相同,没有返回值类型,在创建对象时被自动调用,
    //若自己不写构造方法,则编译器提供一个无参构造方法,若自己写了,则不再默认提供
    Student (String name1,int age1,String address){//给成员变量赋初始值
            name=name1;
            age=age1;
            address=address1;
    }
}
//在创建对象的时候就会自动调用我们在类中建立好的构造方法
Student zs=new Student("张三",25,"廊坊");
Student ls=new Student("里斯",20,"佳木斯");
Student ww=new Student("王五",20,"冰岛");
Student oi=new Student();//编译正确因为我们自己建立了一个无参构造(并非系统提供的默认无参构造)

class Student{
    //成员变量
    String name;
    int age;
    String address;
    //给成员变量赋初始值//构造方法
    Student(String name1;int age1;Stirng address1){
            name=name1;
            age=age1;
            address=address1;
    }
}

Student zs=new Student("张三",25,"廊坊");





1.创建了一个学生对象
2.给成员变量赋默认值
3.调用构造方法
Student zs=new Student();



 
Student zs= new Student();
zs.name="张三";
zs.age=19;

zs.address="哈尔滨";
  1. this:指代当前对象,哪个对象调用方法它指的就是哪个对象
  • 只能用在方法中,方法中访问成员变量之前默认有this.

this的用法

  • this.成员变量--------访问成员变量

注意!!!!! 当成员变量与局部变量同名的时候,如果想访问局部变量要使用this.

  • this.方法名()--------调用方法(一般不用)
  • this()-------------------调用构造方法

补充:

  1. 成员变量:类中方法外 ,作用范围为整个类

局部变量:方法里(包括方法参数),作用范围为当前方法中

  1. java规定:成员变量和局部变量可以同名,使用的时候 默认采取的是 就近原则
  2. 内存管理:由JVM(Java虚拟机)来管理
  • 堆:new出来的对象(包括成员变量)都放在堆区
  • 栈:局部变量(包括方法参数)都放在栈区
  • 方法区:
Student zs=new Student("zhangsan",25,"langfang");
//创建zs对象且调用构造方法
//并且将"zhangsan"传给局部变量name 将25传给局部变量age 将"langfang"传给局部变量address
//后观察构造方法this.name=name;//这句话的含义是zs.name="zhangsan";
             //this.age=age;//zs.age=25;
             //this.address=address;//zs.address="langfang";
class Student{
    String name;//成员变量(整个类都能访问):类里且方法外的都是成员变量
    int age;
    String address;
    //构造方法:给成员变量初始化
    Student(String name,int age,String address){//局部变量
            this.name=name;//把局部变量赋值给成员变量
            this.age=age;
            this.address=address;
    }
    void study(){//方法
        System.out.println(this.name+"在学习");    
    }
    void sayHi(){//方法
            System.out.println("大家好我叫"+this.name+"今年"+this.age+"岁了,家住在"+this.address);
    }
} 
Student zs=new Student();
zs.name="zhangsan";
zs.address="河北廊坊";
zs.age=25;
zs.study();
zs.sayHi();
  1. null和NullPointerException
  • null 表示空,没有指向任何对象 如果引用的值为null则不能进行任何点操作了,若操作则发生NullPointerException(空指针异常)

若引用的值为null,则该引用不能再进行任何点操作了,

若操作则发生NullPointException空指针异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值