首页 > 编程知识 正文

java中的this,java中的this和python的self

时间:2024-04-27 11:08:31 阅读:334531 作者:RFUY

本文目录一览:

java中“this”的用法是什么

使用this调用本类中的属性x0dx0ax0dx0a现在观察以下代码,看会有那些问题:x0dx0ax0dx0apublic void setName(String name){x0dx0ax0dx0aname = name ;x0dx0ax0dx0a}x0dx0ax0dx0a这里面的两个name都是setName方法中的name参数。x0dx0ax0dx0a此时,特别希望可以通过一个指定的标识明确的表示要把传入的name参数的值给类中的属性,所以此时就需要使用this关键字,使用this.name就表示类中的属性。x0dx0ax0dx0aclass Person{x0dx0ax0dx0aprivate String name ;x0dx0ax0dx0aprivate int age ;x0dx0ax0dx0apublic Person(String name,int age){x0dx0ax0dx0athis.setName(name) ;x0dx0ax0dx0athis.setAge(age) ;x0dx0ax0dx0a}x0dx0ax0dx0apublic void setName(String name){x0dx0ax0dx0athis.name = name ;x0dx0ax0dx0a}x0dx0ax0dx0apublic void setAge(int age){x0dx0ax0dx0athis.age = age ;x0dx0ax0dx0a}x0dx0ax0dx0apublic String getName(){x0dx0ax0dx0areturn this.name ;x0dx0ax0dx0a}x0dx0ax0dx0apublic int getAge(){x0dx0ax0dx0areturn this.age ;x0dx0ax0dx0a}x0dx0ax0dx0apublic void print(){x0dx0ax0dx0aSystem.out.println("姓名:"+this.name+",年龄:"+this.age) ;x0dx0ax0dx0a}x0dx0ax0dx0a};x0dx0ax0dx0apublic class Demo35{x0dx0ax0dx0apublic static void main(String args[]){x0dx0ax0dx0aPerson p1 = new Person("张三",30) ;x0dx0ax0dx0ap1.print() ;x0dx0ax0dx0a}x0dx0ax0dx0a};x0dx0ax0dx0a使用this还可以从一个构造方法中调用其他构造方法。x0dx0ax0dx0a例如:有以下一个要求,一个类中存在了三个构造方法,但是要求,不管怎么调用,最终都要求可以在对象实例化的时候打印一个“新的对象产生了”的提示。x0dx0ax0dx0aclass Person{x0dx0ax0dx0aprivate String name ;x0dx0ax0dx0aprivate int age ;x0dx0ax0dx0apublic Person(){x0dx0ax0dx0aSystem.out.println("新的对象产生了。。。") ;x0dx0ax0dx0a}x0dx0ax0dx0apublic Person(String name){x0dx0ax0dx0aSystem.out.println("新的对象产生了。。。") ;x0dx0ax0dx0athis.setName(name) ;x0dx0ax0dx0a}x0dx0ax0dx0apublic Person(String name,int age){x0dx0ax0dx0aSystem.out.println("新的对象产生了。。。") ;x0dx0ax0dx0athis.setName(name) ;x0dx0ax0dx0athis.setAge(age) ;x0dx0ax0dx0a}x0dx0ax0dx0apublic void setName(String name){x0dx0ax0dx0athis.name = name ;x0dx0ax0dx0a}x0dx0ax0dx0apublic void setAge(int age){x0dx0ax0dx0athis.age = age ;x0dx0ax0dx0a}x0dx0ax0dx0apublic String getName(){x0dx0ax0dx0areturn this.name ;x0dx0ax0dx0a}x0dx0ax0dx0apublic int getAge(){x0dx0ax0dx0areturn this.age ;x0dx0ax0dx0a}x0dx0ax0dx0apublic void print(){x0dx0ax0dx0aSystem.out.println("姓名:"+this.name+",年龄:"+this.age) ;x0dx0ax0dx0a}x0dx0ax0dx0a};x0dx0ax0dx0a以上代码虽然可以实现功能,但是同样的代码出现了三次,而且后面的两次出现纯属多余吧。用this()的形式可以调用类中的无参构造方法。x0dx0ax0dx0aclass Person{x0dx0ax0dx0aprivate String name ;x0dx0ax0dx0aprivate int age ;x0dx0ax0dx0apublic Person(){x0dx0ax0dx0aSystem.out.println("新的对象产生了。。。") ;x0dx0ax0dx0a}x0dx0ax0dx0apublic Person(String name){x0dx0ax0dx0a// 最终都是调用无参构造方法x0dx0ax0dx0athis() ;x0dx0ax0dx0athis.setName(name) ;x0dx0ax0dx0a}x0dx0ax0dx0apublic Person(String name,int age){x0dx0ax0dx0athis(name) ;x0dx0ax0dx0athis.setAge(age) ;x0dx0ax0dx0a}x0dx0ax0dx0apublic void setName(String name){x0dx0ax0dx0athis.name = name ;x0dx0ax0dx0a}x0dx0ax0dx0apublic void setAge(int age){x0dx0ax0dx0athis.age = age ;x0dx0ax0dx0a}x0dx0ax0dx0apublic String getName(){x0dx0ax0dx0areturn this.name ;x0dx0ax0dx0a}x0dx0ax0dx0apublic int getAge(){x0dx0ax0dx0areturn this.age ;x0dx0ax0dx0a}x0dx0ax0dx0apublic void print(){x0dx0ax0dx0aSystem.out.println("姓名:"+this.name+",年龄:"+this.age) ;x0dx0ax0dx0a}x0dx0ax0dx0a};x0dx0ax0dx0apublic class Demo36{x0dx0ax0dx0apublic static void main(String args[]){x0dx0ax0dx0aPerson p1 = new Person("张三",30) ;x0dx0ax0dx0ap1.print() ;x0dx0ax0dx0a}x0dx0ax0dx0a};x0dx0ax0dx0a注意点1:x0dx0ax0dx0a如果使用了this调用其他构造方法,则此语句,必须写在构造方法的首行。x0dx0ax0dx0apublic void fun(){x0dx0ax0dx0a// 发现在调用fun方法的时候,必须先设置name的值x0dx0ax0dx0athis("zhangsan") ;x0dx0ax0dx0a}x0dx0ax0dx0apublic Person(String name,int age){x0dx0ax0dx0athis.setAge(age) ;x0dx0ax0dx0athis(name) ; //-- 必须放在首行x0dx0ax0dx0a}x0dx0ax0dx0a注意点2:x0dx0ax0dx0a使用this可以调用本类中的其他构造方法,但是至少留一个构造方法,作为程序的出口。x0dx0ax0dx0apublic Person(){x0dx0ax0dx0athis("a",10) ;x0dx0ax0dx0aSystem.out.println("新的对象产生了。。。") ;x0dx0ax0dx0a}x0dx0ax0dx0apublic Person(String name){x0dx0ax0dx0a// 最终都是调用无参构造方法x0dx0ax0dx0athis() ;x0dx0ax0dx0athis.setName(name) ;x0dx0ax0dx0a}x0dx0ax0dx0apublic Person(String name,int age){x0dx0ax0dx0athis(name) ; //-- 必须放在首行x0dx0ax0dx0athis.setAge(age) ;x0dx0ax0dx0a}x0dx0ax0dx0athis最重要的特性 —— 表示当前对象x0dx0ax0dx0a当前对象在程序中用以下形式体现:x0dx0ax0dx0a· 当前操作此方法的对象,就称为当前对象。x0dx0ax0dx0aclass Demo{x0dx0ax0dx0apublic void print(){x0dx0ax0dx0aSystem.out.println(this) ;x0dx0ax0dx0a}x0dx0ax0dx0a};x0dx0ax0dx0apublic class Demo38{x0dx0ax0dx0apublic static void main(String args[]){x0dx0ax0dx0aDemo d1 = new Demo() ;x0dx0ax0dx0aSystem.out.println(d1) ;x0dx0ax0dx0ad1.print() ;x0dx0ax0dx0aSystem.out.println("---------------------") ;x0dx0ax0dx0aDemo d2 = new Demo() ;x0dx0ax0dx0aSystem.out.println(d2) ;x0dx0ax0dx0ad2.print() ;x0dx0ax0dx0a}x0dx0ax0dx0a};x0dx0ax0dx0a回顾:x0dx0ax0dx0a之前讲解的两个对象比较的程序。x0dx0ax0dx0a// 在类的内部增加一个比较的方法x0dx0ax0dx0apublic boolean compare(Person p){x0dx0ax0dx0aPerson p1 = this ;x0dx0ax0dx0aPerson p2 = p ;x0dx0ax0dx0aif(p1.name.equals(p2.name)p1.age==p2.age){x0dx0ax0dx0areturn true ;x0dx0ax0dx0a}else{x0dx0ax0dx0areturn false ;x0dx0ax0dx0a}x0dx0ax0dx0a}x0dx0ax0dx0a分析程序的运行过程:x0dx0ax0dx0aclass A{x0dx0ax0dx0aprivate B b = null ;x0dx0ax0dx0apublic A(){x0dx0ax0dx0athis.b = new B(this) ;x0dx0ax0dx0athis.b.fun() ;x0dx0ax0dx0a}x0dx0ax0dx0apublic void hello(){x0dx0ax0dx0aSystem.out.println("Hello World!!!") ;x0dx0ax0dx0a}x0dx0ax0dx0a};x0dx0ax0dx0aclass B{x0dx0ax0dx0aprivate A a = null ;x0dx0ax0dx0apublic B(A a){x0dx0ax0dx0athis.a = a ;x0dx0ax0dx0a}x0dx0ax0dx0apublic void fun(){x0dx0ax0dx0athis.a.hello() ;x0dx0ax0dx0a}x0dx0ax0dx0a};x0dx0ax0dx0apublic class OODemo40{x0dx0ax0dx0apublic static void main(String args[]){x0dx0ax0dx0aA aa = new A() ;x0dx0ax0dx0a}x0dx0ax0dx0a};

java里this是什么意思?

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

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

Java里面的this关键字是什么意思

this关键字可以简单的理解为,谁调用this所在的方法,this就是谁。

类的构造函数与getter、setter方法常用到this关键字(JavaBean)

JavaBean是一种可重用的Java组件,它可以被Applet、Servlet、SP等Java应用程序调用.也可以可视化地被Java开发工具使用。它包含属性(Properties)、方法(Methods)、事件(Events)等特性。

public class Person {

//==========静态属性===========

//--想学编程的可以来我这看看----

private String name; //姓名

private int age; //年龄

private String gender; //性别

//==========动态行为===========

public void readBook(String book) {

System.out.println("reading " + book);

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;//this.name就是上面的private String name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public String getGender() {

return gender;

}

public void setGender(String gender) {

this.gender = gender;

}

}

官方定义

this 是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针。

this 的用法在 Java 中大体可以分为3种:

1.普通的直接引用

这种就不用讲了,this 相当于是指向当前对象本身。

2.形参与成员名字重名,用 this 来区分:

class Person {

private int age = 10;

public Person(){

System.out.println("初始化年龄:"+age);}

public int GetAge(int age){

this.age = age;

return this.age;

}

}

public class test1 {

public static void main(String[] args) {

Person Harry = new Person();

System.out.println("Harry's age is "+Harry.GetAge(12));

}

}

希望对您有所帮助!~

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的用法

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

}

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。