导航:首页 > 编程语言 > java什么是this

java什么是this

发布时间:2024-05-06 02:00:49

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;
}
}

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

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

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

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


说到this就得顺带提一下super关键字了。super关键字的用法同this差不多,同样不能与static一起使用。同样有super()的写法,且需要写在方法第一行。但是super所指示的东西可不一样,一般指的是当前这个类的直接父类。如果在子类中需要使用父类的构造器或者属性的时候可以使用super关键字。比如下面的代码:

{
publicStudent(){
super();
}
@Override
publicbooleanequals(Objectobj){
returnsuper.equals(obj);
}
}

上面这段代码就是在实现equals方法的时候调用其直接父类的Object类的equals方法。而在构造这个类的对象的时候也调用了其父类的构造方法。

注:上面代码中的extends Object其实完全不必写,因为所有的类都直接或者间接是Object类的子类(除了Object类本身)。如果不写extends的话默认继承Object类。这里为了需要所以这样写

❷ java里this是什么意思

Java关键字this只能用于方法方法体内。

个对象创建后,Java虚拟机(JVM)就会给这 个对象分配一个引用自身的指针,这个指针的 名字就是 this。因此,this只能在类中的非静 态方法中使用,静态方法和静态的代码块中绝 对不能出现this,这在“Java关键字static、fina l 使用总结”一文中给出了明确解释。并且this只 和特定的对象关联,而不和类关联,同一个类 的不同对象有不同的this。

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

this为一系统资源,只允许用户读而不允许写,它存放当前对象的地址(引用)。

this变量有以下作用:

1. 构造方法重用:

public class Rectangle{
public Rectangle(Location at, Shape size) {…}
public Rectangle(Shape size,Location at){
this(at, size); }
public Rectangle(Location at) {
this(at, new Shape(100,100));
}
public Rectangle(Shape size) {
this(size, new Location(1,1));
}
public Rectangle() {
this(new Location(1,1), new Shape(100,100));
}
}

2、消除歧义:

Location{
private int x;
private int y;
public Location(int x,int y) {
this.x=x;
this.y=y;
}
……
}

3、返回对象-链式方法调用:

public class Count {
private int i = 0;
Count increment() {
i++;
return this; //返回对象的地址,所以我们可以链式访问它
}
void print() {
System.out.println("i = " + i);
}
}
public class CountTest{
public static void main(String[] args) {
Count x = new Count();
x.increment().increment().print();
}
}

4、作为参数传递"this”变量-进行回调:

假设有一个容器类和一个部件类,在容器类的某个方法中要创建部件类的实例对象,而部件类的构造方法要接受一个代表其所在容器的参数。例如:
class Container
{
Component comp;
public void addComponent()
{
comp = new Component(this); //代表你所创建的对象,因为它要用到.
}
}
class Component
{
Container myContainer;
public Component(Container c)
{
myContainer = c;
}
}

其中我们开发中最常用到的地方是第二点,消除歧义。

比方说有类
public class A
里面有几个变量
private String aa,
private String bb;

this 在这里就代表A ,其实它是对对象A的引用。
我们在用到aa或者bb的时候,this.aa 和 直接用aa 是没有区别的。
但是假如你在某个方法里也有个变量aa,比如:
public void dosomething(String aa){
this.aa = aa;
//这个时候就this.aa 代表对象A中的变量,而不加this的话,代表方法中的变量。
}

❹ this()在java中什么意思

this表示类实例本身。

this的用法:

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

publicclassA{

publicAgetA(){

returnthis;//表示获取当前实例本身

}

}

2、表示类的成员变量,而非函数参数,注意在函数参数和成员变量同名是进行区分!

publicclassA{

privateinta=0;//位置1

publicAgetA(inta){

this.a=a;//前面this.a表示位置1的a,赋值=号右侧的表示参数a

}

}

3、用于在构造方法中引用满足指定参数类型的构造器。

publicclassA{

publicA(inta){

}

publicA(){

this(1);//这里调用自身的构造函数publicA(inta){

}

}

阅读全文

与java什么是this相关的资料

热点内容
怎么把安卓视频传到苹果上面 浏览:79
手机拍鬼片用什么app 浏览:640
爬山虎app是干什么用的 浏览:505
有哪些写给程序员的歌 浏览:49
成都市命令 浏览:993
建立系列文件夹 浏览:983
苹果开机白屏带文件夹问号 浏览:733
体验服为什么服务器会关闭 浏览:41
酒店命令 浏览:750
中走丝线切割编程视频 浏览:80
衣服压缩袋手泵原理 浏览:714
通达信编程书籍 浏览:981
车用压缩天然气瓶阀 浏览:971
鞋的程序员 浏览:259
车的压缩比是什么意思 浏览:202
网站源码怎么传到文件夹 浏览:914
海南压缩机在哪里 浏览:491
电脑文件夹清晰的文件结构 浏览:839
如何把苹果手机的app转到安卓 浏览:305
java同步并发 浏览:249