1.类中的this关键字表示当前对象的引用。它可以被用于解决变量名冲突问题,或者在一个方法中调用类的另一个方法。如果在方法中没有明确指定要使用哪个变量,那么编译器就会默认使用this关键字来表示当前对象。
下面是一个输出this关键字的示例代码:
public class MyClass {private int num;public MyClass(int num) {this.num = num;}public void printNum() {System.out.println("num = " + this.num);}
}
public class ThisTest {public static void main(String[] args) {MyClass myClass = new MyClass(5);myClass.printNum();}
}
在上面的代码中,构造方法中的参数num和类属性num同名,为了避免变量名冲突,我们使用了this关键字来表示类属性num。在printNum方法中,我们使用this关键字来表示当前对象调用的属性num。
2.构造器首先,构造方法是一种特殊的方法,用来创建一个对象并初始化对象的属性。每个类都必须有至少一个构造方法,因为它负责初始化对象的状态。
构造方法的名字必须和类名完全相同,没有返回值类型,包括void。当使用new关键字创建一个对象时,Java编译器会根据参数的类型和数量来匹配合适的构造方法,并自动调用该方法来初始化对象的状态。
构造方法可以有不同的访问修饰符,例如public、private、protected和默认(即不声明访问修饰符)。如果声明为private,该构造方法只能在本类中被访问,其他类无法调用该构造方法,这种情况也被称为私有构造方法。
构造方法可以接受参数,这些参数通常用来为对象的属性赋初值。在调用构造方法时,实参传递给形参,构造方法体内使用这些参数来初始化对象的属性。如果没有给出构造方法,Java会默认提供一个无参构造方法,该方法不执行任何操作,仅仅是初始化对象属性的默认值。
当一个类有多个构造方法时,Java可以根据参数的不同来自动调用相应的构造方法,这被称为构造方法的重载(overloading)。
下面是一个使用构造方法的示例代码:
public class Book {private String title;private String author;private int pages;public Book(String title, String author, int pages) {this.title = title;this.author = author;this.pages = pages;}public void printInfo() {System.out.println("Title: " + this.title);System.out.println("Author: " + this.author);System.out.println("Pages: " + this.pages);}
}
在上面的代码中,Book类有一个构造方法,用来初始化Book对象的属性。在printInfo方法中,我们打印了Book对象的属性。我们可以通过下面的代码来创建一个Book对象并调用printInfo方法:
public class ConstructorTest {public static void main(String[] args) {//无参构造Book book1 = new Book();System.out.println(book1);book1.printInfo();//有参构造Book book = new Book("Java Programming", "John Smith", 300);System.out.println(book);book.printInfo();}
}
输出结果为:
如果没有给出构造方法,Java会默认提供一个无参构造方法,该方法不执行任何操作,仅仅是初始化对象属性的默认值。
通过上面的示例代码,我们可以看到构造方法的作用是在创建对象时对对象进行初始化,以确保对象在使用时能够正常、准确地工作。