1、this调用当前属性:其主要作用是当需要给类中的数据进行初始化时,可以通过this来进行赋值,而不用随便定义一个变量来进行赋值,更有利于代码的阅读与理解
如:
class Book{//定义书的类
private String name;//书本名字
private int price;//书本价格
public Book(String name,int price){ //使用this对类的数据进行初始化
this.name = name; this.price = price;
}
/*public Book(String n,int p){ //若不使用this关键字只能这样进行赋值,不利于将变量与属性统一起来
name = n;
price = p;
}*/
public String getInfo(){
return "书籍:" + name + ",价格:" + price;
}
}
public class ThisDemo{
public static void main(String args[]){
System.out.printIn(new Book("Java",89.9).getInfo())
}
}
2、this调用方法(普通方法、构造方法)
(1)普通方法:
class Book{//定义书的类
private String name;//书本名字
private int price;//书本价格
public Book(String name,int price){//使用this对类的数据进行初始化
this.name = name; 6 this.price = price;
this.print();//调用本类普通方法,虽然可以不用使用this也可以进行本类普通方法的调用,但是好的习惯最好应该加上,目的是可以区分方法的定义来源
}
public String getInfo(){
return "书籍:" + name + ",价格:" + price;
}
public void print(){
System.out.printIn("***********");
}
}
public class ThisDemo{
public static void main(String args[]){
System.out.printIn(new Book("Java",89.9).getInfo())
}
}
(2)构造方法:普通方法与构造方法的区别是构造方法在创建后只能掉用一次,用来初始化数据,而普通方法在创建后可以调用多次。
当需要使用构造方法输出同一重复内容时,若不使用this关键字,则只能使用如下代码:
class Book{//定义书的类
private String name;//书本名字
private int price;//书本价格
public Book(){//无参构造
System.out.printIn("*************");
}
public Book(String name){//一参构造
System.out.printIn("*************");
this.name = name;
}
public Book(String name,int price){//二参构造
System.out.printIn("*************");
this.name = name;
this.price = price;
}
public String getInfo(){
return "书籍:" + name + ",价格:" + price;
}
}
public class ThisDemo{
public static void main(String args[]){
System.out.printIn(new Book("Java",89.9).getInfo())
}
}
显然,这样大大浪费了代码行数,而应该使用this进行构造方法的调用,方法如下:、
class Book{//定义书的类
private String name;//书本名字
private int price;//书本价格
public Book(){//无参构造
System.out.printIn("*************");
}
public Book(String name){//一参构造
this();//调用本类中的无参构造
this.name = name;
}
public Book(String name,int price){//二参构造
this(name);//调用本类中的一参构造
this.price = price;
}
public String getInfo(){
return "书籍:" + name + ",价格:" + price;
}
}
public class ThisDemo{
public static void main(String args[]){
System.out.printIn(new Book("Java",89.9).getInfo())
}
}
注:对this调用必须是构造方法中的第一个语句,否则便会出错,当然也不能在普通方法中调用构造方法。
最为重要的是,使用this调用不能形成循环,即不能形成递归调用而没有出口。
3、this表示当前方法
class Book{
public void fun(){
System.out.printIn("FUN方法"+this);
}
}
}
public class ThisDemo{
public static void main(String args[]){
Book b1 = new Book();
System.out.printIn("MAIN方法"+b1);
b1.fun();//有b1调用fun方法(this = b1)
//两个输出结果的地址一样,代表着此时this代表着b1
System.out.printIn("*************")
Book b2 = new Book();
System.out.printIn("MAIN方法"+b2);
b2.fun();//此时输出结果和b2一样
}
}
在整个过程中,this的定义没有变,只要有某一个对象调用本类中的方法,此时this就表示当前执行的对象。
Java技术相关内容
Java this关键字的使用(在构造方法中):http://www.bjpowernode.com/tutorial_java_se/1043.html
Java中static关键字:http://www.bjpowernode.com/tutorial_java_se/1044.html
Java this关键字的使用(在实例方法中):http://www.bjpowernode.com/tutorial_java_se/1031.html
Java中this关键字是什么:http://www.bjpowernode.com/tutorial_java_se/118.html
以上就是动力节点java培训机构的小编针对“编程内容分享,Java中this关键字的作用”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。
你适合学Java吗?4大专业测评方法
代码逻辑 吸收能力 技术学习能力 综合素质
先测评确定适合在学习