this的用法
Java关键字this只能用于方法方法体内。当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是 this。因此,this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this,这在“Java关键字static、final 使用总结”一文中给出了明确解释。并且this只和特定的对象关联,而不和类关联,同一个类的不同对象有不同的this。
package test;
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对象!
}
}
/*
细节问题注释已经写的比较清楚了,这里不在赘述,只是总结一下,其实this主要要三种用法:
1、表示对当前对象的引用!
2、表示用类的成员变量,而非函数参数,注意在函数参数和成员变量同名是进行区分!其实这是第一种用法的特例,比较常用,所以那出来强调一下。
3、用于在构造方法中引用满足指定参数类型的构造器(其实也就是构造方法)。但是这里必须非常注意:只能引用一个构造方法且必须位于开始!
还有就是注意:this不能用在static方法中!所以甚至有人给static方法的定义就是:没有this的方法!虽然夸张,但是却充分说明this不能在static方法中使用!
说明在什么情况下需要用到this:
第一、通过this调用另一个构造方法,用发是this(参数列表),这个仅仅在类的构造方法中,别的地方不能这么用。
第二、函数参数或者函数中的局部变量和成员变量同名的情况下,成员变量被屏蔽,此时要访问成员变量则需要用“this.成员变量名”的方式来引用成员变量。当然,在没有同名的情况下,可以直接用成员变量的名字,而不用this,用了也不为错,呵呵。
第三、在函数中,需要引用该函所属类的当前对象时候,直接用this。
其实这些用法总结都是从对“this是指向对象本身的一个指针”这句话的更深入的理解而来的,死记不然容易忘记而且容易搞错,要理解!
*/
使用this调用本类中的属性\x0d\x0a\x0d\x0a现在观察以下代码,看会有那些问题:\x0d\x0a\x0d\x0apublic void setName(String name){\x0d\x0a\x0d\x0aname = name ;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0a这里面的两个name都是setName方法中的name参数。\x0d\x0a\x0d\x0a此时,特别希望可以通过一个指定的标识明确的表示要把传入的name参数的值给类中的属性,所以此时就需要使用this关键字,使用this.name就表示类中的属性。\x0d\x0a\x0d\x0aclass Person{\x0d\x0a\x0d\x0aprivate String name ;\x0d\x0a\x0d\x0aprivate int age ;\x0d\x0a\x0d\x0apublic Person(String name,int age){\x0d\x0a\x0d\x0athis.setName(name) ;\x0d\x0a\x0d\x0athis.setAge(age) ;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0apublic void setName(String name){\x0d\x0a\x0d\x0athis.name = name ;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0apublic void setAge(int age){\x0d\x0a\x0d\x0athis.age = age ;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0apublic String getName(){\x0d\x0a\x0d\x0areturn this.name ;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0apublic int getAge(){\x0d\x0a\x0d\x0areturn this.age ;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0apublic void print(){\x0d\x0a\x0d\x0aSystem.out.println("姓名:"+this.name+",年龄:"+this.age) ;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0a};\x0d\x0a\x0d\x0apublic class Demo35{\x0d\x0a\x0d\x0apublic static void main(String args[]){\x0d\x0a\x0d\x0aPerson p1 = new Person("张三",30) ;\x0d\x0a\x0d\x0ap1.print() ;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0a};\x0d\x0a\x0d\x0a使用this还可以从一个构造方法中调用其他构造方法。\x0d\x0a\x0d\x0a例如:有以下一个要求,一个类中存在了三个构造方法,但是要求,不管怎么调用,最终都要求可以在对象实例化的时候打印一个“新的对象产生了”的提示。\x0d\x0a\x0d\x0aclass Person{\x0d\x0a\x0d\x0aprivate String name ;\x0d\x0a\x0d\x0aprivate int age ;\x0d\x0a\x0d\x0apublic Person(){\x0d\x0a\x0d\x0aSystem.out.println("新的对象产生了。。。") ;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0apublic Person(String name){\x0d\x0a\x0d\x0aSystem.out.println("新的对象产生了。。。") ;\x0d\x0a\x0d\x0athis.setName(name) ;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0apublic Person(String name,int age){\x0d\x0a\x0d\x0aSystem.out.println("新的对象产生了。。。") ;\x0d\x0a\x0d\x0athis.setName(name) ;\x0d\x0a\x0d\x0athis.setAge(age) ;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0apublic void setName(String name){\x0d\x0a\x0d\x0athis.name = name ;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0apublic void setAge(int age){\x0d\x0a\x0d\x0athis.age = age ;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0apublic String getName(){\x0d\x0a\x0d\x0areturn this.name ;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0apublic int getAge(){\x0d\x0a\x0d\x0areturn this.age ;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0apublic void print(){\x0d\x0a\x0d\x0aSystem.out.println("姓名:"+this.name+",年龄:"+this.age) ;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0a};\x0d\x0a\x0d\x0a以上代码虽然可以实现功能,但是同样的代码出现了三次,而且后面的两次出现纯属多余吧。用this()的形式可以调用类中的无参构造方法。\x0d\x0a\x0d\x0aclass Person{\x0d\x0a\x0d\x0aprivate String name ;\x0d\x0a\x0d\x0aprivate int age ;\x0d\x0a\x0d\x0apublic Person(){\x0d\x0a\x0d\x0aSystem.out.println("新的对象产生了。。。") ;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0apublic Person(String name){\x0d\x0a\x0d\x0a// 最终都是调用无参构造方法\x0d\x0a\x0d\x0athis() ;\x0d\x0a\x0d\x0athis.setName(name) ;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0apublic Person(String name,int age){\x0d\x0a\x0d\x0athis(name) ;\x0d\x0a\x0d\x0athis.setAge(age) ;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0apublic void setName(String name){\x0d\x0a\x0d\x0athis.name = name ;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0apublic void setAge(int age){\x0d\x0a\x0d\x0athis.age = age ;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0apublic String getName(){\x0d\x0a\x0d\x0areturn this.name ;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0apublic int getAge(){\x0d\x0a\x0d\x0areturn this.age ;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0apublic void print(){\x0d\x0a\x0d\x0aSystem.out.println("姓名:"+this.name+",年龄:"+this.age) ;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0a};\x0d\x0a\x0d\x0apublic class Demo36{\x0d\x0a\x0d\x0apublic static void main(String args[]){\x0d\x0a\x0d\x0aPerson p1 = new Person("张三",30) ;\x0d\x0a\x0d\x0ap1.print() ;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0a};\x0d\x0a\x0d\x0a注意点1:\x0d\x0a\x0d\x0a如果使用了this调用其他构造方法,则此语句,必须写在构造方法的首行。\x0d\x0a\x0d\x0apublic void fun(){\x0d\x0a\x0d\x0a// 发现在调用fun方法的时候,必须先设置name的值\x0d\x0a\x0d\x0athis("zhangsan") ;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0apublic Person(String name,int age){\x0d\x0a\x0d\x0athis.setAge(age) ;\x0d\x0a\x0d\x0athis(name) ; //--> 必须放在首行\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0a注意点2:\x0d\x0a\x0d\x0a使用this可以调用本类中的其他构造方法,但是至少留一个构造方法,作为程序的出口。\x0d\x0a\x0d\x0apublic Person(){\x0d\x0a\x0d\x0athis("a",10) ;\x0d\x0a\x0d\x0aSystem.out.println("新的对象产生了。。。") ;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0apublic Person(String name){\x0d\x0a\x0d\x0a// 最终都是调用无参构造方法\x0d\x0a\x0d\x0athis() ;\x0d\x0a\x0d\x0athis.setName(name) ;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0apublic Person(String name,int age){\x0d\x0a\x0d\x0athis(name) ; //--> 必须放在首行\x0d\x0a\x0d\x0athis.setAge(age) ;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0athis最重要的特性 —— 表示当前对象\x0d\x0a\x0d\x0a当前对象在程序中用以下形式体现:\x0d\x0a\x0d\x0a· 当前操作此方法的对象,就称为当前对象。\x0d\x0a\x0d\x0aclass Demo{\x0d\x0a\x0d\x0apublic void print(){\x0d\x0a\x0d\x0aSystem.out.println(this) ;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0a};\x0d\x0a\x0d\x0apublic class Demo38{\x0d\x0a\x0d\x0apublic static void main(String args[]){\x0d\x0a\x0d\x0aDemo d1 = new Demo() ;\x0d\x0a\x0d\x0aSystem.out.println(d1) ;\x0d\x0a\x0d\x0ad1.print() ;\x0d\x0a\x0d\x0aSystem.out.println("---------------------") ;\x0d\x0a\x0d\x0aDemo d2 = new Demo() ;\x0d\x0a\x0d\x0aSystem.out.println(d2) ;\x0d\x0a\x0d\x0ad2.print() ;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0a};\x0d\x0a\x0d\x0a回顾:\x0d\x0a\x0d\x0a之前讲解的两个对象比较的程序。\x0d\x0a\x0d\x0a// 在类的内部增加一个比较的方法\x0d\x0a\x0d\x0apublic boolean compare(Person p){\x0d\x0a\x0d\x0aPerson p1 = this ;\x0d\x0a\x0d\x0aPerson p2 = p ;\x0d\x0a\x0d\x0aif(p1.name.equals(p2.name)&&p1.age==p2.age){\x0d\x0a\x0d\x0areturn true ;\x0d\x0a\x0d\x0a}else{\x0d\x0a\x0d\x0areturn false ;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0a分析程序的运行过程:\x0d\x0a\x0d\x0aclass A{\x0d\x0a\x0d\x0aprivate B b = null ;\x0d\x0a\x0d\x0apublic A(){\x0d\x0a\x0d\x0athis.b = new B(this) ;\x0d\x0a\x0d\x0athis.b.fun() ;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0apublic void hello(){\x0d\x0a\x0d\x0aSystem.out.println("Hello World!!!") ;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0a};\x0d\x0a\x0d\x0aclass B{\x0d\x0a\x0d\x0aprivate A a = null ;\x0d\x0a\x0d\x0apublic B(A a){\x0d\x0a\x0d\x0athis.a = a ;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0apublic void fun(){\x0d\x0a\x0d\x0athis.a.hello() ;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0a};\x0d\x0a\x0d\x0apublic class OODemo40{\x0d\x0a\x0d\x0apublic static void main(String args[]){\x0d\x0a\x0d\x0aA aa = new A() ;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0a};
adj. (形容词)
1、this用作形容词作“这”解时,用于修饰表示在时间、地点、想法上更接近讲话者的事物或人,也可与包括现在的日子或一段时间的词语连用。
2、“this+one's+ n. ”是一种简洁的文体,有强调意味;“this+基数词+时间名词”表示一段时间。this可与of短语连用,后接名词性物主代词或名词所有格。
pron. (代词)
1、this用作代词可用以指叙述中的人或事物,即指前面提到过的人或事物或下文提及的事物;this一般作主语时才指人;在电话用语中,this用来指代自己。
2、当陈述部分的主语是this时,附加疑问部分的主语须用it。
this的英式读音是[ðɪs];美式读音是[ðɪs]。作代词意思是这;这个。作形容词意思是这个。作副词意思是这样;这么。
扩展资料:
单词解析:
1、例句:
用作代词 (pron.)
1)This is, in part, my own mistake.
在某种程度上来说,这是我自己的错。
2)Now don't laugh when you hear this.
听了这个你不要笑。
用作副词 (adv.)
1)It's about this high.
大约有这样高。
2)I didn't think we'd get this far.
我未曾想到我们会走得这么远。
2、反义词that
1)音译:
pron. 那
conj. 引导从句
adj. 那个;上文提到的
adv. 非常;那么地
2)例句:
用作代词 (pron.)
What is the difference between this and that?
这个和那个之间的区别是什么?
用作连词 (conj.)
I am well aware that this is a tough job.
我深知这是一件棘手的工作。
参考资料:
百度百科-this
百度百科-that
this意思为这个。常用this is……,表这是什么。用于判断句,后可跟不可数名词,可数名词的单数形式和单数人称
this
英[ðɪs] 美[ðɪs]
pron. 这,这个,这人,这事,这东西
adj. 今,本;这,这个
adv. 这样,这么
pron.
1.这,这个,这人,这事,这东西
What would this look like?
这看起来怎么样?
Look at this.
瞧瞧这个。
adj.
1.这,这个
This pen is mine.
这支笔是我的。
This girl is my classmate.
这个女孩是我的同学。
adv.
1.【口】这样,这么
Even with their most sensitive apparatus, human chemists cannot approach thisperfection.
人类的化学家即使利用最灵敏的仪器,也难以达到这样完善的程度。
The fish I caught was this big.
我捕到的那条鱼有这么大。
this 的用法:
1.参数名与数据成员名一样this->数据成员用来区别参数
2.指代自己的地址,在防止自赋值时 this来判断是否与自己地址一致
3.指代自己的引用 *this
4.静态成员函数没有this
this和that的用法区分
his和him有什么区别?
his和him的区别用法如下:1、指代不同:his:主格的他的。him:宾格的他。主格有l,he,she,it,you;宾格有me,him,her,it,you,us,them。主格要放在主语位置,宾格要放在宾语位置。2、语法不同:his:he的物主代词,他的东西;他的家属或有关的人。him:在非正式英语中系动词后常用he的宾格形式...
he和his的区别是什么?
一、二者词性不同。he是人称代词主格;his既可以做形容词性物主代词,也可以做名词性物主代词。二、意思不同。he意思是“他”;his意思是“他的”。三、用法不同。he做主语 例句,He is from China.his可以放在名词前修饰名词,例句,This is his book.his可以代替上文提到的名词。This is my ...
his与him的区别?
2、him是he宾格形式:宾格是人称代词,人称代词有主格宾格之分,主格有I,he,she,it,you,宾格有me,him,her,it,you,us,them。主格要放在主语位置,宾格要放在宾语位置。二、用法不同:1、his 后面一般跟名词:只能放在名词前面作定语,如 It is his pen 翻译为:这是他的钢笔。形容词性...
his是什么词性?
his词性:形容词性物主代词、名词性物主代词。作为形容词物主代词时,his不能单独使用,后面必须加上名词。作为名词性物主代词时,his又必须单独使用,后面不能加名词。his的词性及例句 det.他的;上帝的;属于上帝的 pron.他的;属于他的 He took my hand in his.他握住我的手。The choice was ...
him、 his、 he有什么不同?
一、意思不同 1、him:他。2、his:他的。3、he:他,它(指雄性动物)。二、用法不同 1、him:him是宾格,作宾语,英文是object,又称受词,是指一个动作(动词)的接受者。宾语分为直接宾语和间接宾语两大类,其中直接宾语指动作的直接对象,间接宾语说明动作的非直接,但受动作影响的对象。2、...
Him 和his怎么区分 什么时候用Him
一、意思不同 1、Him:他,它(用作动词或介词的宾语,或作表语),(指上帝)。2、his:他的,属于他的。二、用法不同 1、Him:him在句中作宾语,放在动词或介词之后。例句:Is Sam there? Let me talk to him.萨姆在吗?让我和他谈谈。2、his:his在句子中作物主代词,后接名词。例句:He...
his和her的区别
His和Her:表示男性和女性所有格的区别 1. 具体含义 "His" 和 "Her" 是英语中表示男性和女性所有格的词语。 "His" 表示 "他的",用于表示男性的所有权或关系;而 "Her" 表示 "她的",用于表示女性的所有权或关系。这两个词语的使用非常普遍,是英语中必不可少的部分。2. 语法用法 "His" 和...
he,him和his的区别和用法
3、his是形容词性物主代词,后面一般加名词。This is his book,I don't know what it's about.这是他的书,我不知道这是关于什么的书。三、人称代词主格宾格对照表 最后总结,通过以上关于he,him和his的区别和用法内容介绍后,相信大家会对he,him和his的区别和用法有个新的了解,更希望可以对你...
his的名词性物主代词是什么?
此外名词性物主代词:我的、你的、他的、她的、它的、我们的、你们的、他们的、分别对应的是mine,yours,his,hers,its,ours,yours,theirs。名词性物主代词的主要用法:一、名词性物主代词最基本的作用就是既有表示物体的所属性,同时还具有指代作用。我们经常可以使用到名词性物主代词,其实它在...
he和his的区别和用法she和her的区别和用
1、he,解释为他,是名词性物主代词一般用作主语,放在句子开头,例如:He is a baby翻译为他是一个小孩。在此句中,He 为主语。2、His 翻译为他的,是形容词物主代词,一般用于修饰名词,例如:his mother is a teacher翻译为他的妈妈是一位老师。在此句中,his修饰名词mother。3、She,解释为...
占侧苦黄: 通常情况下this是不用来修饰不可数名词的,因为this表示这个,而不可数名词没有“个”的概念. knowledge可以作为可数名词使用,表示不同的知识,所以你这里用this还是说的过去的. this和these分别表示“这个”和“这些”,前者多用来修饰可数名词单数,后者用来修饰可数名词复数,习惯上不用于秀是不可数名词.
泸西县13366283796: this和the的用法有什么不同? - ?
占侧苦黄:[答案] this-------------这(个),指代离说话人较近的人或者物. the-------------可以是单数的this(这)、that(那),也可以是复数的these(这些)、those(那些)
泸西县13366283796: this/that怎么使用? - ?
占侧苦黄:[答案] 1.this/that是指示代词,this这个 that那个2.指离说话人较近的人或事物时,用this指离说话人较远的人或事物时,用that3.this/that作主语时,系动词be用单数形式is,后面的名词也用单数形式.4.介绍某人时,用this或that,而...
泸西县13366283796: this 后面要加助动词吗,可以直接加动词吗this request这样写吗给我具体讲讲this的用法,后面该怎么加答非所问不不要来 - ?
占侧苦黄:[答案] 指示代词 英语中表示指示概念的代词叫指示代词,指示代词用来起指示作用,或用来代替前面已提到过的名词.指示代词包括:this,that,these(这些),those(那些),其用法如下: (1)指示代词在时间或空间上对所指人或事物有远近之分.this和...
泸西县13366283796: 求:JAVA中this的三种用法的详解!!!谢谢 ! - ?
占侧苦黄: 这个详解,我找资料给你吧8.8.1 this关键字 this关键字代表自身,在程序中主要的使用用途有以下几个方面: 使用this关键字引用成员变量 使用this关键字在自身构造方法内部引用其它构造方法 使用this关键字代表自身类的对象 ...
泸西县13366283796: THIS的 用法 谁知到?
占侧苦黄: 通常this多用来修饰可数名词单数 1、距离说话人/物近时用this;eg:This is an apple tree. 2、放在一起的两个东西,先说this,后说that;eg:This is a pen,That is a pencil. 3向别人介绍某人时用This is、、、、;eg:This is Tom. 4、This is 不能缩写 5、在回答this作主语的疑问句时,用it代替this;eg:Is this a book? Yes.it is. 6、打电话介绍自己用this,询问对方用that.
泸西县13366283796: the 和this具体的用法 - ?
占侧苦黄: the是冠词,可以代替this/that/these/those ( eg. the book=this/that book the books=these /those books; the+不可数名词(the water)(this不行)this是代词+可数名词单数
泸西县13366283796: this 的用法(具体) - ?
占侧苦黄: adj. 1. (指已知的或即将提到的人、事物、主意)这, 这个, 此, 本2. (时间、地点、思想等)较近的一个, 这一个3. 〈非正〉某个4. 这样,这么pron. 1. (指较近的人或事物)这,这个, 这事2. (指已提到过的人或事物)这,这个3. 这时;...
泸西县13366283796: this - >的用法,意义, - ?
占侧苦黄:[答案] this用于类中的成员函数中,表示调用这个函数的当前的这个对象的引用,当类中的成员变量与函数的局部变量名相同时,在变量名前加上this->用于区别类的成员变量与函数局部变量. 举个例子: class A { public: int number ;//这是成员变量 A(){} void ...
泸西县13366283796: this的具体用法?
占侧苦黄: this代表本类 比如本类的a属性! 掉用它的时候就可以用this.a去调用!!! 这样就不需要实例华对象就可以调用此类的属性了!!! 一般用在构造方法里面付初始值来使用!!! 同super相似!super可以调用父类的方法在子类中使用,也可以...