JAVA学习笔记(2023.1.10更)-创新互联

面向对象 重点: 构造器/构造方法 引入

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

创新互联主要从事成都网站制作、成都网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务永善,十载网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575语法
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

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网页标题:JAVA学习笔记(2023.1.10更)-创新互联
文章链接:http://scyanting.com/article/dhhjsj.html