㈠ java中this的用法
1. this指当前对象。
当在一个类中要明确指出使用对象变量或函数时加上this引用。如下面例子中:
public class Hello {
String s = "Hello";
public Hello(String s){
System.out.println("s = " + s);
System.out.println("1 -> this.s = " + this.s);
this.s = s;
System.out.println("2 -> this.s = " + this.s);
}
public static void main(String[] args) {
Hello x=new Hello("HelloWorld!");
}
}
运行结果:
s = HelloWorld!
1 -> this.s = Hello
2 -> this.s = HelloWorld!
在这个例子中,构造函数Hello中,参数s与类Hello的变量s同名,这时直接对s进行操作则是对参数s进行操作。对类Hello的成员变量s进行操作就应该用this进行引用。运行结果的第一行就是直接对构造函数中传递过来的参数s进行打印结果;
第二行是对成员变量s的打印;第三行是先对成员变量s赋传过来的参数s值后再打印,所以结果是HelloWorld!
2. this作为参数传递
当你要把自己作为参数传递给别的对象时如:
public class A {
public A() {
new B(this).print();
}
public void print() {
System.out.println("Hello from A!");
}
}
public class B {
A a;
public B(A a) {
this.a = a;
}
public void print() {
a.print();
System.out.println("Hello from B!");
}
}
运行结果:
Hello from A!
Hello from B!
在这个例子中,对象A的构造函数中,new
B(this)把对象A作为参数传递给了对象B的构造函数。
㈡ js中this关键字如何应用
你说的没错,‘this’就是指向调用其方法的对象,所以person.prop.getFullName()是person.prop调用了getFullName(),获得的是person.prop的fullname,也就是Jane了
var test=person.prop.getFullName 注意这句是没有括号的,person.prop.getFullName是一个function,所以test也会是一个function类型,而实现内容是和person.prop.getFullName一样的,但没有任何调用关系,也就是说,这句话等同于:
var test= function() {
return this.fullname;
}
你这么看的话,如果用了test(); 就等于是调用了同级的fullname,就是Anna了
不是很懂你这一问的意思,不过不加()的话,只是一个function类型,他代表了一段代码的实现,但不会去执行这段代码,加了()就是调用执行这个方法
㈢ this.对象名.方法名()与对象名.方法名()区别
this指的是当前所在类,而对象名.方法名比较通用,当你new一个别的包的类时,调用方法只能用后者,而不能用前者,
㈣ java中“this”的用法是什么
一、指自己所在的对象。
比如在一个方法中,调用其他对象的变量或方法时,可以使用那个对象的对象名,比如aa.abc();
而调用自己所在对象的方法或变量时,不知道别人给起了什么名,所以直接用this.abc()就可以了。
二、看一个小例子中“this”的用法!
/**
* @author feng-neusoft
*
* 本示例为了说明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对象!
}
}
运行结果:
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.方法名和super.方法名和对象名.方法名这三者调用方法有什么异同点啊,希望说
this通常指当前对象的意思,如果想应用当前对象的一些方法就用this.方法名
如果在子类中想调用父类方法就用super.方法名
㈥ java中的this.name=name是什么意思啊this 有什么用啊,再哪出现
用术语解释只会让初学者听得满头包,我也说说吧,慢慢的来了解,弄清楚每一个东西是什么,再你往下看前你必须确定你自己有足够的耐心,呵呵,刚起步都很累的。
借用yzbczq朋友的例子:
public class People{
String name;
//这个name这就是我们说的类的成员变量(也叫类的属性)
public void getName(String name){
//这里的是name是一个参数,是getName这一个方法(也叫函数)的一个参数(变量),跟上面的name不是一样的东西!你必须弄清楚现在有两个变量(参数)的存在
this.name = name;
}
}
好了,然后到问题来了这时候我们有一个成员变量,跟一个方法里面的局部变量(先弄清楚我说的两个东西分别是什么,不然别往下看),但是它们的名字是一样的!
好了,我们先别管this,如果我们有一个这个类的实例对象叫person(所谓类的对象,就是根据什么People这一个类(图纸)所制造出来的实例),那么这时候
this.name=name的意思也就相当于person.name,现在知道this说的是什么了吧?然后后面的那个name就是我们那个函数方法里面的参数,如果我们getName(String x),把这个name改名成为x,那么我们可以写成:
name = x,为什么此时可以直接用name呢?因为name是我们People这个类中的一个成员变量,而我们getName这里面没有一样名为name的变量,它就会直接引用我们的成员变量了。但是如果getName这个函数里面也定义了一个同名为name的变量,那么!这个函数就会以它自身的这个变量为准,所以如果在你的原例子中不用this,那么在这个函数里面不就是相当于说,我的一个变量等于它自己本身,这不是废话吗?
好了,我们再说this,this就是说现在这个实例(还记得实例把,我们这里的实例名字叫person),我们的getName可不止只有person这个实例引用的啊,如果我们写成person.name=name,那么如果我创建一个名字叫person2的实例,引用这个函数会是什么样的情况?那么现在明白this的作用了吧,它就是“我”的意思,你说的我,跟我本人说的我,都是我(都是this),但却指代了不同的东西。
呵呵,说得有点罗嗦了,但是,应该能看懂了吧。你这个this.name=name是在一个方法里面的吧,有点想起张孝祥的那个教程。
还有作为一个过来人,其实到后面的语法很简单,很容易看明白,但是理论基础却非常的苦涩难懂!但这个非常的重要,你看完上面朋友的留言没办法看懂的话就是基础不过关,你的基础不过关你即使请教别的高手你也没办法明白他们在说什么。呵呵,开始才是最难的,反复的看完再看,必须把教程的每一句弄懂,不然你即使知道了语法,以后也会出很多问题,最难的莫过于这些抽象的概念。你必须先了解清楚面向对象,对于初学者,下面的这篇文章是我见过的最好的,有点长,但如果没那个耐心,你还是放弃java吧:
http://hi..com/vrhero/blog/item/1936f319a1420d7adab4bda6.html
㈦ Java中this关键字与方法
就普通方法或者属性而言,写this和不写this没区别。
this主要是用来和super区分的。this调用本类的构造方法,super调用父类的构造方法。
㈧ JAVA(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是指向对象本身的一个指针”这句话的更深入的理解而来的,死记不然容易忘记而且容易搞错,要理解!
*/
㈨ Java成员方法中能用this吗
可以的。在一般方法中,在你的方法中的某个形参名与当前对象的某个成员有相同的名字,这时为了不至于混淆,你便需要明确使用this关键字来指明你要使用某个成员,使用方法是“this.成员名”,而不带this的那个便是形参。另外,还可以用“this.方法名”来引用当前对象的某个方法,但这时this就不是必须的了,你可以直接用方法名来访问那个方法,编译器会知道你要调用的是那一个。下面的代码演示了上面的用法:
public class DemoThis{
private String name;
private int age;
DemoThis(String name,int age){
setName(name); //你可以加上this来调用方法,像这样:this.setName(name);但这并不是必须的
setAge(age);
this.print();
}
public void setName(String name){
this.name=name;//此处必须指明你要引用成员变量
}
public void setAge(int age){
this.age=age;
}
public void print(){
System.out.println("Name="+name+" Age="+age);//在此行中并不需要用this,因为没有会导致混淆的东西
}
public static void main(String[] args){
DemoThis dt=new DemoThis("Kevin","22");
}
}