首页编程java编程java中为什么要用this java当中this应该怎么理解

java中为什么要用this java当中this应该怎么理解

编程之家2023-10-14101次浏览

其实java中为什么要用this的问题并不复杂,但是又很多的朋友都不太了解java当中this应该怎么理解,因此呢,今天小编就来为大家分享java中为什么要用this的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

java中为什么要用this java当中this应该怎么理解

java this什么意思

想理解this首先要理解两个概念,类和对象。一个一般的类可以new很多对象,每一个对象都有一个this来指向这个对象本身。类本身是没有this的,因为类本身是一个抽象的概念。要想用类的方法和属性,就必须new一个他的对象,这时会产生一个对应的this,就是this object;或者用静态方法,静态方法可以不用new对象,因为是属于类的方法,所以所有静态方法里是不能出现this的。

比如:

class A{

java中为什么要用this java当中this应该怎么理解

private int data;

public void setData(int data){

this.data= data;////这个this表示的是这个类new的一个对象,而不是类本身。就是这个类没有new出一个对象之前,是不能调用这个方法的。

java中为什么要用this java当中this应该怎么理解

}

public int getData(){

return this.data;////

public static void print(){

System.out.println("This IS a static functions.");//这是一个静态方法,里面是不允许有this的,因为静态的属性和方法属于类,属于公共的东西,而不专属于某一个对象

}

Java:关于Java中的this,这里为什么加不加都一样呢

this指直译是“这个”,在java中指“当前的”。不管在哪里,只要用到this,指的一定就是当前的这个对象。最常见的用法是在写java bean中。比如下面的代码

publicclassStudent{

privateStringname;

privateintage;

publicStudent(){}

publicStudent(Stringname,intage){

this();

this.setName(name);

this.age=age;

}

publicvoidsetName(Stringname){

this.name=name;

}

publicintgetAge(){

returnthis.age;

}

}

上面的代码是一个javabean。所谓的javabean就是一个类,这个类有一些属性,方法只有这些属性的Getter或者Setter(从Object类继承的方法不算在此列)。

这个bean有两个属性,在构造器中为属性赋值的时候写的this.setName(name).意思是调用当前你创建的这个对象的Setter给这个对象的属性赋值。而setName里面的this.name=name;这一句,等号之前的this.name表示当前对象的name,也就是在类里面定义的privateStringname这个变量,而等号之后的name表示从外界调用这个方法时候传进来的参数。所以这句话的意思就是将外界传来的字符串变量的值赋给当前对象的name属性。

那么构造器第一行的this()是做什么的呢?这句话是调用当前这个对象的无参构造,就是调用上面的publicStudent(){}这个构造器。在这段代码里this()体现不出来什么作用。但是我们知道构造器的作用是在构造对象的时候给属性赋值的。如果上面个无参构造里面写一些赋值语句的话那么这里就可以避免代码的重复了。但是请注意,调用this()的时候一定要写在该方法的第一行,否则会报错。

另外,this关键字不能使用在有static关键字修饰的方法和代码块里面。因为static是这个类的所有对象共用的,而this指的只是当前这个对象的“私人”的一些东西,在属性上面就冲突了。

java里的“this”到底是什么意思

this代表当前对象的意思。

这个this肯定是用在某个类的方法里吧。呵呵,我们继续往下说。

举个例子:

public class persion{

private String name=null;

private int age;

public void setName(String name){

this.name=name;

}

public String getName(){

return name;

}

}

在这个类中setName方法中第一个变量用this是为了和本方法的参数this做区别,表示这个name指的是Person这个类的name属性,而不是name参数,如果去掉这个this,执行完这个方法后,Person类的name属性仍然为null

getName方法返回的Person类的name,之所以不用this是因为没有必要,因为编译器会知道这个name就指的是Person的name而不是其他的name(因为找个方法没有name变量和它混淆)。当然,这个方法你也可以显示的使用return this.name,没错。

这些都是最基本的了。开始学只要记住这个就可以了。慢慢的其他的用法也就无师自通了!

java当中this应该怎么理解

在JAVA程序中似乎经常见到“this”,自己也偶尔用到它,但是到底“this”该怎么用,却心中无数!很多人一提起它,就说“当前对象”,可到底什么是当前对象,是什么当前对象,他自己也不清楚。现在让大家看一个小例子,给你分享一下JAVA中“this”的用法!

本示例为了说明this的三种用法!

public class ThisTest{

private int i=0;

//第一个构造器:有一个int型形参

ThisTest(int i){

this.i=i+1;//此时this表示引用成员变量i,而非函数参数i

System.out.println("Int constructor i——this.i:"+i+"——"+this.i);

System.out.println("i-1:"+(i-1)+"this.i+1:"+(this.i+1));

//从两个输出结果充分证明了i和this.i是不一样的!

}

//第二个构造器:有一个String型形参

ThisTest(String s){

System.out.println("String constructor:"+s);

}

//第三个构造器:有一个int型形参和一个String型形参

ThisTest(int i,String s){

this(s);//this调用第二个构造器

//this(i);

/*此处不能用,因为其他任何方法都不能调用构造器,只有构造方法能调用他。

但是必须注意:就算是构造方法调用构造器,也必须为于其第一行,构造方法也只能调

用一个且仅一次构造器!*/

this.i=i++;//this以引用该类的成员变量

System.out.println("Int constructor:"+i+"\n"+"String constructor:"+s);

}

public ThisTest increment(){

this.i++;

return this;//返回的是当前的对象,该对象属于(ThisTest)

}

public static void main(String[] args){

ThisTest tt0=new ThisTest(10);

ThisTest tt1=new ThisTest("ok");

ThisTest tt2=new ThisTest(20,"ok again!");

System.out.println(tt0.increment().increment().increment().i);

//tt0.increment()返回一个在tt0基础上i++的ThisTest对象,

//接着又返回在上面返回的对象基础上i++的ThisTest对象!

}

}

运行结果:

Int constructor i——this.i: 10——11

String constructor: ok

String constructor: ok again!

Int constructor: 21

String constructor: ok again!

14

细节问题注释已经写的比较清楚了,这里不在赘述,只是总结一下,其实this主要要三种用法:

1、表示对当前对象的引用!

2、表示用类的成员变量,而非函数参数,注意在函数参数和成员变量同名是进行区分!其实这是第一种用法的特例,比较常用,所以那出来强调一下。

3、用于在构造方法中引用满足指定参数类型的构造器(其实也就是构造方法)。但是这里必须非常注意:只能引用一个构造方法且必须位于开始!

还有就是注意:this不能用在static方法中!所以甚至有人给static方法的定义就是:没有this的方法!虽然夸张,但是却充分说明this不能在static方法中使用!

关于java中为什么要用this的内容到此结束,希望对大家有所帮助。

java开发买什么电脑配置(学习java开发电脑什么配置好)java同步锁用什么释放 java线程同步问题