JAVA函数中加和不加this的区别
对于当前a()方法没有影响,也没有区别;
为什么没有区别?
因为a方法中没有变量名为b、c、d的变量,这三个变量应该都是当前类中声明的变量(或者父类中的),那么在使用的时候加与不加 关键字this,对结果没有影响。
你可能会问,什么时候有区别?也可能会问,什么是父类中的?
请追问,我原本把问题答案写好了,但是不知道为啥突然没了
注:当方法中没有声明指定的变量(例如变量b),或者方法中没有指定的变量参数(例如变量b)。那么在方法中使用变量b(书写:“b”),java语言便会默认成 “this.b”(前提是,类中声明了变量b ,或者该类继承到了变量b)。
java中this是干什么的,具体的作用是什么。
this
是指当前类本身,它只能在方法内部使用,表示对“调用方法的那个对象”
的引用。
this的用法和其它对象的引用没有什么不同。比如说
class
A{
A
getA(){
return
this;
}
}
这个等价于:
class
A{
A
a;
A
getA(){
return
a;
}
}
在可读性上边的this用法楼上也说了:当传的参数名称和你的属性名称一样的时候需要用this来区别;
public
setA(int
a){
this.a
=
a;
}
还有一点,如果没必要this的地方就不要用this了,这样也许会觉得“表达更明确”但是一般人不会这么写,别人看到这样的this会觉得很奇怪。
比如
class
A{
int
a;
void
setA(){a=3;}
void
setB(){setA();}
}
这个时候就没必要写成this.a=3和this.setB()
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和这个类的对象有区别吗
this只能用于方法方法体内。当一个对象创建后,Java虚拟机就会给这个对象分配一个引用自身的指针,这个指针的名字就是 this。
因此,this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this。
并且this只和特定的对象关联,而不和类关联,同一个类的不同对象有不同的this
Java:关于Java中的this,这里为什么加不加都一样呢
this指直译是“这个”,在java中指“当前的”。不管在哪里,只要用到this,指的一定就是当前的这个对象。最常见的用法是在写java bean中。比如下面的代码
public class Student{
private String name;
private int age;
public Student(){}
public Student(String name,int age){
this();
this.setName(name);
this.age = age;
}
public void setName(String name){
this.name = name;
}
public int getAge() {
return this.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指的只是当前这个对象的“私人”的一些东西,在属性上面就冲突了。
在java多态中,this到底是代表什么?不是当前对象吗?
这个this代表这个类自身
this.setTitle(“xxxxxxxxxxx”);
这个的意思就是调用
类里的setTitle方法
这种情况的话这个this加不加都无所谓
有一种情况下是必须加的
class
a{
String
name
;
void
setName(String
name)
{
this.name
=
name;
}
}
这个用同名变量赋值的时候必须加name
但是如果改成
void
setName(String
arge)
{
name
=
arge;
}
就不需要this