重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
我们来看一个需求: 前面我们在创建人类的对象时, 是先把一个对象创建好后, 再给他的年龄和姓名属性赋值, 如果现在我要求, 在创建人类的对象时, 就直接指定这个对象的年龄和姓名, 该怎么做? 这时就可以使用构造器.
创新互联主要从事成都网站制作、成都网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务永善,十载网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务: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;
}
}
要点一个类可以定义多个不同的构造器, 即构造器重载
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元起,快前往官网查看详情吧