JAVA程序设计 对象的组合 this调用该类的成员变量和成员方法
- 格式:doc
- 大小:171.50 KB
- 文档页数:9
java中this的用法代码一、Java中this关键字的作用及含义在Java编程语言中,this是一个特殊的关键字,代表当前对象的引用。
它可以被用来引用当前对象的实例变量、方法以及构造函数。
在代码中使用this关键字,能够明确指示当前对象,并且具有以下几个主要作用:1. 指向实例变量当类中存在与方法参数同名的实例变量时,为了区分二者,在方法内部使用this关键字就能够将调用该方法的对象与方法参数进行区分。
2. 调用本类其他方法通过使用this关键字,可以调用该类中的其他成员方法。
这对于多个成员方法之间需要相互调用或者需要在一个成员方法中调用另一个重载版本的成员方法时非常有用。
3. 在构造函数中调用另一个构造函数Java允许一个构造函数内部通过this关键字来调用同一个类中的其他构造函数。
这种方式通常被称为构造器链。
4. 返回当前对象在某些情况下,需要将当前对象作为返回值返回。
通过在方法内部使用return this语句,可以返回当前对象。
二、指向实例变量当类中存在与参数同名的实例变量时,为了避免歧义性和混淆,在局部范围内使用this关键字可以明确指向实例变量。
下面是一个简单的示例代码:public class Person {private String name;public void setName(String name) { = name; // 使用this关键字将参数值赋给实例变量}public void printName() {System.out.println("Name: " + ); // 使用this关键字引用实例变量 }}```在上述代码中,setName方法中的表示当前对象的实例变量name,而printName方法中的也同样表示当前对象的实例变量name。
三、调用本类其他方法在Java中,使用this关键字能够很方便地调用本类的其他方法,特别是在多个成员方法之间需要相互调用时。
java中this关键字的使⽤⼀个对象创建后会有⼀个this指针指向它。
所以this只能在类中的⾮静态⽅法中使⽤,静态⽅法和静态的代码块中绝对不能出现this,并且this只和特定的对象关联,⽽不和类关联,同⼀个类的不同对象有不同的this。
⼀、使⽤this来区分当前对象。
Java中为解决变量的命名冲突和不确定性问题,引⼊关键字this代表其所在⽅法的当前对象的引⽤:1) 构造⽅法中指该构造器所创建的新对象;2) ⽅法中指调⽤该⽅法的对象;3) 在类本⾝的⽅法或构造器中引⽤该类的实例变量(全局变量)和⽅法。
this只能⽤在构造器或者⽅法中,⽤于获得调⽤当前的构造器⽅法的对象引⽤。
可以和任何的对象引⽤⼀样来处理这个this对象。
说明:(1)当实例变量和局部变量重名,JAVA平台会按照先局部变量、后实例变量的顺序寻找。
即,⽅法中使⽤到的变量的寻找规律是先找局部变量,再找实例变量。
如果没⽤找到,将会有⼀个编译错误⽽⽆法通过编译。
(2)如果使⽤this.a,则不会在⽅法(局部变量)中寻找变量a,⽽是直接去实例变量中去寻找,如果寻找不到,则会有⼀个编译错误。
(3)在⼀个⽅法内,如果没有出现局部变量和实例变量重名的情况下,是否使⽤this关键字是没有区别的。
(4)在同⼀个类中,Java普通⽅法的互相调⽤可以省略this+点号,⽽直接使⽤⽅法名+参数。
因为Java编译器会帮我们加上。
public class dududu {/*因为xx是⼀个动态的内部类,创建这样的对象必须有实例与之对应,程序是在静态⽅法中直接调⽤动态内部类会报这样错误。
这样的错误好⽐类中的静态⽅法不能直接调⽤动态⽅法。
可以把该内部类声明为static。
或者不要在静态⽅法中调⽤。
*/public static class desktop{public int h=10,w=10;public desktop(int h,int w) {System.out.println("这是对象的h属性:"+this.h);System.out.println("这是对象的w属性:"+this.w);System.out.println("这是参数h的值:"+h);System.out.println("这是参数w的值:"+w);this.h=h;this.w=w;}public void show() {int h=33,w=44;System.out.println("我的⾼为:"+this.h+",宽为:"+this.w);}}public static void main(String[] args) {// TODO Auto-generated method stubdesktop a = new desktop(1,2);desktop b = new desktop(10,20);a.show();b.show();}}⼆、构造函数中使⽤this调⽤其他构造函数在构造器中可以通过this()⽅式来调⽤其他的构造器。
java中this和super的用法
一、this的用法
1、当this表示当前对象时:
在类的方法中,this表示当前对象,它总是指向调用该方法的对象,这就是说,在类的方法中,“this”永远指向当前对象。
2、局部变量和属性
当一个局部变量或者成员变量名字相同时,this可以用来区分这两个变量,指明属性,要么this引用实例的属性,要么就是方法的局部变量。
3、用this调用构造函数
有时可以使用this调用同一类中其他构造函数,如:
public class A{
public A(){
}
public A(int a){
this();
}
}
4、强调调用成员变量
当this.x和x表示同一个成员变量时,可以使用this.x来强调x是成员变量,而不是局部变量。
二、super的用法
1、调用父类的构造函数
每个子类构造函数默认都会调用父类的默认的无参数的构造函数,可以使用super来调用父类有参数的构造函数。
2、调用父类的成员函数
子类可以调用自己不具备的父类函数,或者重写父类函数,重写时也可以使用super来调用父类函数。
3、调用父类的成员变量
由于子类不能直接访问父类的成员变量,需要使用super来访问父类的成员变量。
java中this的用法This,英语单词,发音:[英][ðɪs][美][ðɪs]。
常翻译为:这,这么。
java中this的用法有哪些呢?本文是店铺整理java中this的用法的资料,仅供参考。
java中this的用法11. 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 = Hello2 -> 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的构造函数中,newB(this)把对象A作为参数传递给了对象B的构造函数。
javathis的使用方法(实用版4篇)目录(篇1)1.JavaThis 的概念与作用2.JavaThis 的使用方法3.JavaThis 的使用示例正文(篇1)一、JavaThis 的概念与作用JavaThis 是 Java 语言中一个特殊的关键字,用于表示当前类的实例。
在 Java 程序中,JavaThis 可以用来调用当前类的方法或访问当前类的属性,使得代码更加简洁明了。
二、JavaThis 的使用方法1.在类的方法中使用 JavaThis在类的方法中,JavaThis 表示当前类的实例。
可以用来调用当前类的方法或访问当前类的属性。
如下所示:```javapublic class Person {private String name;private int age;public Person(String name, int age) { = name;this.age = age;}public void showInfo() {System.out.println("姓名:" + + ",年龄:" + this.age);}}```2.在静态方法中使用 JavaThis在静态方法中,JavaThis 表示当前类的实例。
可以用来调用当前类的静态方法或访问当前类的静态属性。
如下所示:```javapublic class Person {private static String name;private static int age;public static void main(String[] args) { = "张三";this.age = 20;showInfo();}public static void showInfo() {System.out.println("姓名:" + + ",年龄:" + this.age);}}```三、JavaThis 的使用示例下面是一个使用 JavaThis 的示例:```javapublic class Person {private String name;private int age;public Person(String name, int age) { = name;this.age = age;}public void setName(String name) { = name;}public String getName() {return ;}public void setAge(int age) {this.age = age;}public int getAge() {return this.age;}}```从上面的示例中,我们可以看到 JavaThis 在类的方法中表示当前类的实例,可以方便地调用当前类的方法或访问当前类的属性。
Java中的this有哪四种⽤法
JAVA中的this是⼀个⾮常重要的模块。
在编程中有⾮常重要的地位。
擅长⽤this的⼈常常可以使程序更加简洁和⽅便。
今天来了解⼀下this的⽤法。
java中this关键字必须放在⾮静态⽅法⾥⾯,this关键字代表⾃⾝,在程序中主要的⽤途有以下⼏个⽅⾯:
1、引⽤成员变量;
2、在⾃⾝构造⽅法内部引⽤其它构造⽅法;
3、代表⾃⾝类的对象;
4、引⽤成员⽅法;
下⾯我们来分别看⼀下这四种⽤法:
⼀、引⽤成员变量
在⼀个类的⽅法或构造⽅法内部,可以使⽤“this.成员变量名”这样的格式来引⽤成员变量名,有些时候可以省略,有些时候不能省略。
⼆、引⽤构造⽅法
在⼀个类的构造⽅法内部,也可以使⽤this关键字引⽤其它的构造⽅法,这样可以降低代码的重复,也可以使所有的构造⽅法保持统⼀,这样⽅便以后的代码修改和维护,也⽅便代码的阅读。
三、代表⾃⾝对象
在⼀个类的内部,也可以使⽤this代表⾃⾝类的对象,或者换句话说,每个类内部都有⼀个隐含的成员变量,该成员变量的类型是该类的类型,该成员变量的名称是this,实际使⽤this代表⾃⾝类的对象。
四、引⽤成员⽅法
在⼀个类的内部,成员⽅法之间的互相调⽤时也可以使⽤“this.⽅法名(参数)”来进⾏引⽤,只是所有这样的引⽤中this都可以省略。
总之,this的重点在于“当前对象”,只有理解了“当前对象”的概念才能灵活的掌握它的⽤法。
有需要资料的朋友,请评论“求资料”,就可以了。
我会⼀个个分享给留⾔的⼩伙伴,先到先发。
java中的this用法
在Java中,this关键字有以下用法:
1. 指代当前对象:this可以用来指代当前对象,即当前方法被调用的对象。
可以使用this来调用当前对象的属性或方法。
2. 区分局部变量和成员变量:当方法的参数名或局部变量与成员变量重名时,可以通过使用this关键字来引用成员变量。
3. 作为构造器:在一个构造器内部,可以使用this关键字来调用同一类的另一个构造器。
这样可以避免重复的初始化代码。
4. 作为方法参数传递:this关键字可以作为参数传递给其他方法,以便在其他方法中使用当前对象。
5. 作为返回值:this关键字也可以作为返回值返回给调用者。
这样可以实现方法链式调用。
总的来说,this关键字的主要作用是指代当前对象,帮助在类中访问成员变量、方法或调用构造器的重载版本。
Java程序设计_北京林业大学中国大学mooc课后章节答案期末考试题库2023年1.FlowLayout类在()包中。
参考答案:java.awt2.基本数据类型int的封装类是()。
参考答案:Integer3.在Windows操作系统中,Java源程序编译生成的.class文件,在Linux操作系统中不能被正确运行。
()参考答案:错误4.以下关于构造方法的描述,正确的是()。
参考答案:构造方法名与类名相同5.异常类InputMismatchException的直接父类是()。
参考答案:RuntimeException6.下列选项正确的是()。
参考答案:一个接口可以继承多个接口7.以下选项中,错误的是()。
参考答案:静态方法可以访问实例变量8.以下选项中,正确的标识符为()。
参考答案:汽车9.byte a;int n=10;以下选项错误的是()。
参考答案:a=n;10.以下选项中,()是自动装箱。
参考答案:Integer a=6;11.String s1,s2,s3;s1="Hello!";s2="Hello!";s3=new String("Hello!");则s1==s2;和s1==s3;的值为()。
参考答案:true,false12.启动主线程时,()。
参考答案:不需要调用任何方法13.class A{ int m=1; int add() { return m+1; }}class B extendsA{double m=6.0;double decrease() { return m-1; }}A a=new B();则a.m的值为()。
参考答案:114.面向对象有三个特征,分别是封装、继承和()。
参考答案:多态15.窗体默认是可见的。
()参考答案:错误16.File类的对象不可以()。
参考答案:读写文件17.Thread类的join()方法()。
另外,使用this访问属性和方法时,如果在本类中未找到,会从父类中查找。
举例1:class Person{ // 定义Person类public void speak(){System.out.println(“年龄:”+this.age);}}举例2:public class Rectangle {int length;int width;public int area() {return this.length*this.width;}public int perimeter(){return2* (this.length+this.width);}public void print(char sign) {for (int i=1; i<=this.width; i++) {for (int j=1; j<=this.length; j++) {System.out.print(sign);}System.out.println();}}public String getInfo(){return"长:"+this.length+",宽:"+this.width+",面积:"+ this.area() +",周长:"+this.perimeter();}}测试类:public class TestRectangle {public static void main(String[] args) {Rectangle r1=new Rectangle();Rectangle r2=new Rectangle();System.out.println("r1对象:"+r1.getInfo());System.out.println("r2对象:"+r2.getInfo());r1.length=10;r1.width=2;System.out.println("r1对象:"+r1.getInfo());System.out.println("r2对象:"+r2.getInfo());r1.print('#');System.out.println("---------------------");r1.print('&');System.out.println("---------------------");r2.print('#');System.out.println("---------------------");r2.print('%');}}1.2.2 同一个类中构造器互相调用this可以作为一个类中构造器相互调用的特殊格式。
Javathis关键字详解(3种⽤法)Java this关键字详解(3种⽤法)this 关键字是常⽤的关键字,可⽤于任何实例⽅法内指向当前对象,也可指向对其调⽤当前⽅法的对象,或者在需要当前类型对象引⽤时使⽤。
下⾯我们根据⽰例分别讲解 this 关键字的作⽤。
this.属性名⼤部分时候,普通⽅法访问其他⽅法、成员变量时⽆须使⽤ this 前缀,但如果⽅法⾥有个局部变量和成员变量同名,但程序⼜需要在该⽅法⾥访问这个被覆盖的成员变量,则必须使⽤ this 前缀。
例 1假设有⼀个教师类 Teacher 的定义如下:1. public class Teacher {2. private String name; // 教师名称3. private double salary; // ⼯资4. private int age; // 年龄5. }在上述代码中 name、salary 和 age 的作⽤域是 private,因此在类外部⽆法对它们的值进⾏设置。
为了解决这个问题,可以为 Teacher 类添加⼀个构造⽅法,然后在构造⽅法中传递参数进⾏修改。
代码如下:1. // 创建构造⽅法,为上⾯的3个属性赋初始值2. public Teacher(String name,double salary,int age) {3. = name; // 设置教师名称4. this.salary = salary; // 设置教师⼯资5. this.age = age; // 设置教师年龄6. }在 Teacher 类的构造⽅法中使⽤了 this 关键字对属性 name、salary 和 age 赋值,this 表⽰当前对象。
=name语句表⽰⼀个赋值语句,等号左边的 是指当前对象具有的变量 name,等号右边的 name 表⽰参数传递过来的数值。
创建⼀个 main() ⽅法对 Teacher 类进⾏测试,代码如下:1. public static void main(String[] args) {2. Teacher teacher = new Teacher("王刚",5000.0,45);3. System.out.println("教师信息如下:");4. System.out.println("教师名称:"++"\n教师⼯资:"+teacher.salary+"\n教师年龄:"+teacher.age);5. }运⾏该程序,输出的结果如下所⽰。