构造方法所完成的主要工作是帮助新创建的对象赋初值。构造方法可视为一种特殊的方法,它的定义方式与普通方法类似
1、它具有与类名相同的名称
2、它没有返回值
实际上,读者在执行javac编译java程序的时候,如果在程序中没有明确声明一构造方法的话,系统会自动为类加入一个无参的且什么都不做的构造方法。类似于下面代码:
public Person()
{}
所以,之前所使用的程序虽然没有明确的声明构造方法,也是可以正常运行的。
public class test {
public static void main(String[] args){
Person p = new Person(23,"zhanglina");
p.say();
}
}
class Person{
int age;
String name;
public Person(int age,String name){
this.age = age;
this.name=name;
}
public void say(){
System.out.println("My name is "+name+".\nI'm "+age+" years old.");
}
}
在java程序中只要明确的声明了构造方法,则默认的构造方法将不会被自动生成。
public class test {
public static void main(String[] args){
Person p = new Person();
p.say();
}
}
class Person{
int age;
String name;
public Person(){
this(13,"lina");
}
public Person(int age,String name){
System.out.println("I am called!");
this.age = age;
this.name=name;
}
public void say(){
System.out.println("My name is "+name+".\nI'm "+age+" years old.");
}
}
“==”是比较内存地址值的,“equals”是比较内容的。
public class test {
public static void main(String[] args){
Person p = new Person(12,"name");
p.say();
}
}
class Person{
int age;
String name;
public Person(){
System.out.println("I am called!");
}
public Person(int age,String name){
this();
this.age = age;
this.name=name;
}
public void say(){
System.out.println("My name is "+name+".\nI'm "+age+" years old.");
}
}
this用来调用自身,而避免产生新的对象。