❶ 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问题
this只Student3这个对象。
public Student3(String name,int age,int classNum){
this.name=name;
this.age=age;
this.classNum=classNum;
}
这里面因为有两个name,为了区分,this.name就是Student3的一个属性,而这个构造方法里的name是传过来的name。
可以这样去理解:
public Student3(String name1,int age1,int classNum1){
//这样就不存在一个name对应参数列表的值和类的属性值,就不用 this指定了。在这里推荐写成原文的形式,用this代表Student3这个类,当然也可以写成Student3.name = name1
name=name1;
age=age1;
classNum=classNum1;
}
当调用new Student3("zhangsan", 10, 1);时,会把Student的name属性,age属性,classNum属性赋成相应值。
❸ 在java中类名.this得到的是什么
你这个问题应该是问在3g平台下面把,那么得到的是上下文对象-context。在j2se得到是当前类的一个对象
❹ 关于JAVA中this关键字的用法问题
你要知道a1对象里面的name是a1,a2对象里面的name是a2,
A a1=new A("a1"); 生成一个a1对象的同时调用构造方法name=a1
a1.func2(); 调用a1对象里面的func2方法,当前对象为a1
A a2=new A("a2"); 生成一个a2对象的同时调用构造方法name=a2
this.func1(); this表示当前对象,this.func1();也就是当前对象的func1方法。就是a1的func1方法。输出的当然func1 of a1 is calling
a2.func1(); 指明为a2的func1()
输出的当然func1 of a2 is calling
❺ Java:关于Java中的this,这里为什么加不加都一样呢
this是指的对象本身,通过this可以调用本对象拥有的所有方法和属性,当然不加this也可版以调用。
一般用this的情权况:
当局部变量与成员变量相同名时,例如 this,x = x;this.x 是个成员变量,而x是个局部变量
在myeclipse下用this可以提示后面的方法或者成员变量
在内部类或匿名内部类中使用this来指向内部类本身
将类本省作为参数传递
❻ java中的this语句
java中this有两种用法:
1、代表当前类
public class Dog{
private String name;
private float age;
public setName(String name){
this.name = name;
}
.......
}
这里的this就代表的当前的这个Dog类。this.name可以理解为dog.name,只是理解,不是等于。
2、在构造函数中的使用
public class Dog{
private String name;
private int age;
//有一个参数的构造函数
public Dog(String name){
this.name = name;
}
public Dog(String name,int age){
this.name = name;
this.age = age;
}
//这个无参构造方法里调用的有两个参数的构造方法,这个也就是this的第二种用法了!
public Dog(){
this("nihao",20);
}
}
❼ 关于java this.getClass();
Java的每个类都带有一抄个运行时袭类对象,该Class对象中保存了创建对象所需的所有信息。
可以用.class返回此 Object 的运行时类Class对象,也可以用getClass()获得。
获得此对象后可以利用此Class对象的一些反射特性进行操作,
例如:
this.getClass().newInstance(); //用缺省构造函数创建一个该类的对象
this.getClass().getInterfaces(); //获得此类实现的接口信息
this.getClass().getMethods();//获得此类实现的所有公有方法
Class.forName(" ... JDBC driver class name...."); // Class类的静态方法forName, 向DiverManager注册这个JDBC driver类
❽ java的.class和.this是什么什么是封闭类为什么只有封闭类才可以使用.this
你可以这样理解,.this是指当前运行时实例化的这个特定对象,因为只有封装的类才能实例化出对象,所以是有封装类才能使用.this;.class是运行时这个实例化对象的类信息,用于反射
❾ 谁能系统的讲解一下JAVA里this的性质和用法
this关键字是对一个对象的默认引用。this关键字用来表示以后调用当前方法的对象的引版用。
Ø 使用this调用权成员变量,解决成员变量和局部变量的同名冲突
Ø 使用this调用成员方法
Ø 使用this调用重载的构造方法,只能在构造方法中使用,必须是构造方法的第一条语句
❿ Java 单例模式同步锁this与Class的区别
synchronized(this) 表示的是所有线程需要排队获取当前类的实例的锁;而 synchronized(xxx.class) 表示的是所有线程内需要排队获容取当前类的锁;区别就在于 this 是一个实例,而 xxx.class 是一个整个的 class 信息。