JAVA学习笔记(2023.1.10更)

文章详细介绍了Java中的构造器,包括构造器的作用、语法、构造器重载以及默认构造器的概念。构造器用于在创建对象时初始化其属性,例如Person类的构造器允许指定年龄和姓名。this关键字在此中被讨论,它是用来引用当前对象实例的,常用于访问类的属性和方法。此外,文章还涵盖了对象创建的步骤以及IDEA的一些快捷键功能。
摘要由CSDN通过智能技术生成

面向对象

重点: 构造器/构造方法

引入

我们来看一个需求: 前面我们在创建人类的对象时, 是先把一个对象创建好后, 再给他的年龄和姓名属性赋值, 如果现在我要求, 在创建人类的对象时, 就直接指定这个对象的年龄和姓名, 该怎么做? 这时就可以使用构造器.

语法

public class Study
{
    public static void main(String args[])
    {
        Person p = new Person(70,"杜舆江");
        //在创建p对象时直接为其属性赋值
    }
}


class Person
{
    int age;
    String name;
    //构造器语法
    //1.构造器名应与类名一致: Person.
    //2.没有返回值: 不可以写void int等, 也不可以在代码块的最后加入return.
    //3.在创建对象时, 系统会自动地调用该类的构造器完成对象的初始化.
    //4.形参列表与定义方法时的规则一致.
    //5.构造器前也有访问修饰符.
    public Person(int pAge,Sting pName)
    {
        age = pAge;
        name = pName;
    }
}

要点

  1. 一个类可以定义多个不同的构造器, 即构造器重载

    public class Study
    {
        public static void main(String[] args)
        {
            //构造器重载, 我的实参既可以是数字, 也可以是数字和字符串
            Person p1 = new Person(20);
            Person p2 = new Person(19,"小杜");
            cout
            
        }
    }
    class Person
    {
        int age = 18;
        String name;
        public Person(String pName);
        {
            age = pName;
        }
        public Person(int pAge,String pName)
        {
            age = pAge;
            name = pName;
        }
    }
    

2.如果程序员没有定义构造器, 系统会自动给类生成一个默认无参构造器(也叫默认构造器), 可以用反编译去看.
3.一旦自己定义了自己的构造器, 默认的构造器就被覆盖了, 就不能再使用默认的无参构造器, 如果想使用, 必须显式定义一下.

public class Exercise {
    public static void main(String[] args) {
        Person person = new Person(18,"Jack");
        Person person1 = new Person();
        //如果没有显式定义, 无法运行, 会报错
        System.out.println("运行成功");
    }
}

class Person {
    int age;
    String name;

    public Person(int age, String name) {
        this.age = age;
        this.name = name;
    }

    //显示定义
    public Person() {

    }
}

对象创建流程

public class Exercise {
    public static void main(String[] args) {
        Person jack = new Person(18, "Jack");
    
    }
}

class Person {
    int age = 10;
    String name;

    public Person(int age, String name) {
        this.age = age;
        this.name = name;
    }
}

1.加载Person类信息(Person.class),只会加载一次

2.在堆中分配空间(地址)

3.完成对象初始化[3.1默认初始化 age = 0 name = null(都为默认值) 3.2显式初始化, age = 18 name = null 3.3 构造器初始化 age = 18 name = Jack]

4.把对象在堆中地址, 返回给p(对象名)

this关键字

理解

this 可以理解为替换对象 ,此时涉及的是哪个对象, 那么 this 就是它

语法

public class Exercise {
    public static void main(String[] args) {
        Person jack = new Person(18, "Jack");
        //在这里
        //this.age 和 Jack.age相同
        //this.name 和 Jack.name相同
    }
}

class Person {
    int age = 10;
    String name;

    public Person(int age, String name) {
        this.age = age;
        this.name = name;
    }
}

要点

1.this 关键字可以用来访问本类的属性, 方法, 构造器

2.访问成员方法的语法: this.方法名(参数列表)

3.访问构造器语法:this(参数列表); 注意只能在构造器中使用(即只能在构造器中访问另外一个构造器, 必须放在第一 条语句)

4.this.方法调用 与 方法调用不同(区别在继承讲)

public class Exercise {
    public static void main(String[] args) {
        Person person = new Person();
        System.out.println(person.age + "\t" + person.name);
        person.sayHello();
        person.Marry();
    }
}

class Person {
    int age;
    String name;

    public void sayHello() {
        System.out.println("Hello!");
    }

    //this 在方法中的使用
    public void Marry() {
        this.sayHello();
        System.out.println("Let's marry!");
    }

    public Person(int age, String name) {
        this.age = age;
        this.name = name;
    }
    //this 在构造器中的使用
    public Person() {
        this(18, "Jack");//必须在该构造器的第一行
        System.out.println("成功!");
    }
}

4.this 不能在类定义的外部使用,只能在类定义的方法中使用。

IDEA

快捷键

可在 Settings-Keymap 中配置

删除当前行: ctrl + y

复制当前行并粘贴至下一行: ctrl + d

补全代码: alt + /

增加/取消注释: ctrl + /

导入该行需要的类: 选中,alt + enter

快速格式化代码: ctrl + alt + L

运行程序: shift + f10

生成构造器: alt + insert(insert 使用需要配合 fn)

查看一个类的层级关系: ctrl + H

将光标放在一个方法上, 输入ctrl + B, 可以选择定位到方法

自动地分配变量名, 通过在后面.var

模板

file-settings-editor-Live templates 可以查看有哪些模板, 也可以自定义添加修改

main

sout

fori

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值