Java中this关键字的几种用法
this的使用规则
this的使用规则1. 用法一:指示代词"this"可以用作指示代词,表示离说话人较近的事物或概念。
例句:- I like this book.- This car is very fast.- This is my favorite restaurant.2. 用法二:用于事物的介绍或指明"this"可以用于指出或介绍某个特定的事物。
通常用于句子的开头,并与"is"连用。
例句:- This is a new product we just launched.- This is John, my brother.- This is a photo of my family.3. 用法三:指代最近提到的事物"this"也可以用于代指最近提到的事物或概念。
通常用于句子后半部分。
例句:- I went to the park yesterday. This is where I found the lost dog. - My friend recommended this book to me. I can't wait to read it.4. 用法四:强调"this"可以用于强调某个人或事物的重要性或特点。
通常与后面的名词连用。
例句:- This is the best movie I have ever seen.- I can't believe I won this award.- This is the most delicious cake I have ever tasted.总之,"this"主要用于指示、指明特定事物、代指最近提到的事物,以及强调某人或事物的重要性或特点。
this和super
this和super是Java中的两个比较特殊的关键字。
this表示当前对象,而super 表示父类对象,严格来说应该是子类从父类继承过来的部分,包括继承过来的成员变量和成员方法。
这两个关键字用于Java类中自己的方法来访问自己的成员变量和自己的成员方法。
本次内容介绍如何使用this和super,主要内容如下:●∙正常情况下如何访问成员变量和成员方法●∙什么时候需要使用this访问成员和成员方法●∙什么时候需要使用super访问变量和成员方法●∙如何使用this访问其他的构造方法●∙如何使用super访问父类的构造方法下面分别介绍。
1 正常情况下如何访问成员变量和成员方法正常情况下,访问某个对象的方法和属性,通过“对象名.属性名”或者“对象名.方法名”访问成员变量和成员方法。
例:String name;System.out.println(name.length());如果是类自己的方法访问成员变量和成员方法,可以采用如下的方式(setName 方法中的代码)。
例:Public class Animal {protected String id;protected String name;publicvoid setName(String newname){// 正常情况下,应该这样访问成员变量和成员方法name = newname;print("初始化名字");}Public void print(String message){System.out.println("Animal--------"+message);}}这里再访问name属性和print方法的时候为什么没有给出对象名呢?因为在编写类的时候不知道对象的名字,因为对象在运行之后才会产生。
Name属性和print方法应该属于哪个对象呢?应该是当前方法(setName)所属的对象,为了表示这个对象,Java中提供了this关键字用来表示当前对象。
Java考试复习题
Java考试复习题JAVA程序设计练习一、填空题1、目前Java运行平台主要分为下列3个版本是Java se ,Java ee ,Java me 。
2、SDK平台提供的Java编译器是javac.exe 和Java解释器java.exe 位于Java安装目录的bin 文件夹中。
3、Java运行环境JRE由Java虚拟机、Java的核心类以及一些支持文件组成。
4、一个Java应用程序必须有一个称为主类的类,该类含有public static void main (String args[ ])方法。
5、在源文件的命名中如果源文件中有多个类,那么只能有一个类是public类;如果有一个类是public类,那么源文件的名字必须与这个类的名字完全相同,扩展名是java;6、一个Java Applet源文件不再需要main方法,但必须有且只有一个类扩展了Applet类,我们把这个类称作Java Applet源文件的主类。
7、类是组成Java程序的基本要素。
类封装了一类对象的状态和方法。
8、创建一个对象包括对象的声明和为对象分配成员变量两个步骤,对象的声明的一般格式为:类的名字对象名字;使用new运算符和类的构造方法为声明的对象分配成员变量9、用关键字static修饰的成员变量称作静态变量或类变量,类变量不仅可以通过某个对象访问也可以直接通过类名访问。
10、一个类中的方法可以互相调用:实例方法可以调用该类中实例方法或类方法;类方法只能调用该类的类方法,不能调用实例方法。
11、实例方法可以操作实例变量或类变量;而类方法只能操作类变量不能操作实例变量。
12、this关键字出现在类的构造方法中,代表使用该构造方法所创建的对象;this 关键字出现在类的实例方法中,代表使用该方法的当前对象。
13、成员变量在整个类内有效,局部变量仅在方法内有效,如果在方法内部局部变量的名字与成员变量的名字相同,则成员变量被隐藏,此时若要使用成员变量,格式为:this.成员变量。
引用实例字段的方法
引用实例字段的方法在Java中,访问实例字段是通过对象来实现的。
通过使用点号操作符(.)来访问实例字段,Java提供了多种方式来引用实例字段,这些方式在以下的10条方法中得到描述。
1) 通过对象的引用名称使用点号操作符访问实例变量。
这是最基本也是最常见的访问实例变量的方式。
使用这种方式,我们可以直接访问对象内的实例变量。
假设我们有一个名为 "person" 的Person对象,可以通过以下方式访问Person对象内的实例变量 "name": 。
2) 在类中使用 "this" 关键字访问当前对象实例变量。
在Java中,this关键字是一个特殊的关键字,它可以用于引用当前对象实例变量。
在类中,使用this关键字来访问实例变量有很多好处。
可以避免命名冲突,提高代码可读性,并且在代码中引用实例变量时更加直观。
以下代码演示了如何使用this关键字来引用当前对象的实例变量:class Person{private String name;public void setName(String name){ = name;}}在上面的代码中,setName()方法使用了this关键字来引用当前对象的实例变量name。
3) 使用 setter 和 getter 方法访问实例变量。
setter和getter方法是用来设置和获取对象的实例变量的方法。
setter方法用来设置对象实例变量的值,而getter方法用来获取对象实例变量的值。
使用setter和getter 方法的好处是可以封装实例变量,提高代码的可读性和可维护性。
以下代码演示了如何使用setter和getter方法来访问Person对象的实例变量name:class Person{private String name;public void setName(String name){ = name;}public String getName(){return ;}}在上面的代码中,setName()用于设置实例变量name的值,而getName()用于获取实例变量name的值。
JAVA 习题题目及答案
第2章
作业题
1. 参照例 2-1 编写一个 Java 应用程序,输出俄文字母表。 2. 参照例 2-4 编写一个 Java 应用程序,用户从键盘只能输入整数,程序输出这些整数的乘 积。
第 3 章问答题及作业题
第 3 章 问答题
1、下列 System.out.printf 输出的结果是什么? int a=100,x,y; x=++a; y=a--; System.out.printf(“%d,%d,%d”,x,y,a); 2、下列哪些语句有错误? int x=0; x=5.0/2; float y=12.5F; y=5.0/2;
第 5 章问答题及作业题
第 5 章 问答题
1、子类在什么情况下可以继承父类的友好成员? 2、子类通过怎样的办法可以隐藏继承的成员变量? 3、子类重写继承的方法的规则是什么? 4、子类的构造方法的第一条语句是什么? 5、子类对象一旦重写了继承的方法,就会隐藏继承的方法,是这样吗? 6、子类重写继承的方法时,可以降低方法的访问权限吗? 7、关键字 super 的用法? 8、假设父类有一个方法? public double f(double x, double y){ return x+y; }
第 4 章问答题及作业题
第 4 章 问答题
1、在声明类时,类名应遵守哪些习惯? 2、类体内容有哪两种重要的成员?
3、实例方法可以操作类变量吗?类方法可以操作实例变量吗? 4、当类的字节码加载到内存时,类变量就一定分配了内存空间吗? 5、类的实例变量在什么时候会被封分配内存空间? 6、一个类的类变量被该类创建的所有对象共享吗? 7、不同对象的实例变量分配的内存空间地址一定不同吗? 8、什么叫方法重载?构造方法可以重载吗? 9、请阐述,为什么类方法不可以调用实例方法。 10、请阐述,为什么类方法不能操作实例成员变量。 11、实例方法可以用类名直接调用吗? 12、 关键字 this 可以出现在构造方法中吗?可以出现在实例方法中吗?可以出现在类方 法中吗? 13、源文件中声明编写的类一定在同一个包中吗? 14、 “import java.awt.*;”和“import java.awt.Button”有什么不同? 15、程序中如果使用了“import java.util.*” ,程序运行时,要加载 java.util 包中全部的 类到内存中吗? 16、有几种访问权限修饰符?说出其中一种修饰符的作用? 17、怎样反编译一个类?
Java里的this到底是什么意思
Java里的this到底是什么意思
this代表当前对象的意思。
这个this肯定是用在某个类的方法里吧。
呵呵,我们继续往下说。
举个例子:
public class persion{
private String name=null;
private int age;
public void setName(String 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 ,没错。
这些都是最基本的了。
开始学只要记住这个就可以了。
慢慢的其
他的用法也就无师自通了!。
c#this 的使用方法
this(C# 参考)this关键字引用类的当前实例。
以下是this的常用用途:∙限定被相似的名称隐藏的成员,例如:复制代码public Employee(string name, string alias){ = name;this.alias = alias;}∙将对象作为参数传递到其他方法,例如:复制代码CalcTax(this);∙声明索引器,例如:复制代码public int this [int param]{get { return array[param]; }set { array[param] = value; }}由于静态成员函数存在于类一级,并且不是对象的一部分,因此没有this指针。
在静态方法中引用this是错误的。
示例在本例中,this用于限定Employee类成员name和alias,它们都被相似的名称隐藏。
this还用于将对象传递到属于其他类的方法CalcTax。
复制代码// keywords_this.cs// this exampleusing System;class Employee{private string name;private string alias;private decimal salary = 3000.00m;// Constructor:public Employee(string name, string alias){// Use this to qualify the fields, name and alias: = name;this.alias = alias;}// Printing method:public void printEmployee(){Console.WriteLine("Name: {0}\nAlias: {1}", name, alias);// Passing the object to the CalcTax method by using this: Console.WriteLine("Taxes: {0:C}", Tax.CalcTax(this));}public decimal Salary{get { return salary; }}}class Tax{public static decimal CalcTax(Employee E){return 0.08m * E.Salary;}}class MainClass{static void Main(){// Create objects:Employee E1 = new Employee("John M. Trainer", "jtrainer");// Display results:E1.printEmployee();}}输出Name: John M. TrainerAlias: jtrainerTaxes: $240.00比如你的类中有一个成员变量为a。
java基础面经典试题(附答案)
基础知识部分:1. JDK是什么?JRE是什么?a) 答:JDK:java开发工具包。
JRE:java运行时环境。
2. 什么是java的平台无关性?a) 答:Java源文件被编译成字节码的形式,无论在什么系统环境下,只要有java虚拟机就能运行这个字节码文件。
也就是一处编写,处处运行。
这就是java的跨平台性。
3. 在一台电脑上配置java环境,path起什么作用?如何配置?a) 答:path的作用是在DOS环境下,能在任意位置使用JDK目录中b in文件夹中的可执行程序,来编译执行java程序。
b) 在环境变量中找到path变量,把bin文件夹的绝对路径加上即可。
4. 什么样的标识符是合法的?a) 由字母、数字、_和$组成,长度不限。
其中字母可以是大写或小写的英文字母,数字为0到9。
b) 标识符的第一个字符不能是数字。
c) 标识符区分大小写。
d) 标识符不能包含空格。
5. Java有几种基本数据类型?a) byte,short,int,long,float,double,char,boolean6. 什么是隐式类型转换?什么是显示类型转换?a) 当将占位数少的类型赋值给占位数多的类型时,Java自动使用隐式类型转换。
b) 当把在级别高的变量的值赋给级别底变量时,必须使用显示类型转换运算。
7. &&和&区别,||和|区别?a) &&和||是短路与,短路或,当左边的表达式能判断当前结果,则不判断右边的表达式。
b) 而& 和|则将两边的表达式都运算完毕后,再算结果。
8. break,continue区别?a) break结束所有循环,continue结束当次循环,进入下次循环。
9. 类的命名规则是什么?a) 如果类名使用拉丁字母,那么名字的首写字母使用大写字母。
b) 类名最好见名知意,当类名由几个单词复合而成时,每个单词的首写字母使用大写。
10. 类体的内容由两部分构成,哪两部分?a) 一部分是变量的定义,用来刻画属性。
Java中super关键字的用法和细节
Java中super关键字的⽤法和细节⽬录前⾔1.super关键字的⽤法2.super关键字的使⽤细节3.super和this关键字的⽐较总结前⾔ 因为西安疫情的原因在宿舍摆了⼀个⽉,最近在复习前⾯学过的知识的时候发现,⾃⼰在初学⾯向对象时对Super关键字的理解不够深刻,所以现在重新学习⼀下super关键字的⽤法和细节。
1. super关键字的⽤法 在Java中,super关键字共有三种⽤法,分别是:通过 super.属性名来访问⽗类中的成员变量通过super.⽅法名(参数列表) 来访问⽗类中的成员⽅法通过super(参数列表) 来访问⽗类的构造⽅法调⽤⽗类的成员变量:class Person {protected int age;}class Student extends Person{public void func(){int age = super.age; //通过super.属性名访问⽗类的成员变量}}调⽤⽗类中的成员⽅法:class Person {protected void func(){}}class Student extends Person{public void func(){super.func(); //通过super.⽅法名调⽤⽗类的成员⽅法}}调⽤⽗类的构造器:class Person {String name;public Person(String name) { = name;}}class Student extends Person{public Student(String name) {super(name); //通过super(参数列表)调⽤⽗类的构造⽅法}}注意:⼦类⽆法通过super关键字访问⽗类中private修饰的属性和⽅法,因为private修饰的属性和⽅法只能在当前类的内部进⾏访问在⼦类的构造器中通过super关键字调⽤⽗类的构造器时,super关键字必须出现在构造器的第⼀⾏且仅能出现⼀次2. super关键字的使⽤细节当我们查找⼦类中的⽅法时,调⽤规则如下:当⼦类中存在需要调⽤的⽅法时,直接调⽤即可如果⼦类中不存在该⽅法,则向上寻找⽗类,如果⽗类中存在该⽅法,则调⽤⽗类中的⽅法若⽗类中不存在该⽅法,那么向上寻找⽗类的⽗类,直到找到Object类提⽰:如果直到Object类依然没有找到该⽅法,那么会提⽰⽅法不存在,但如果向上找到了这个⽅法但没有权限访问(例如该⽅法被private修饰),则会产⽣错误。
JAVA实用教程(第三版)课后习题及答案
{
void g()
{
A a=new A(); a.weight=23f; a.f(3,4);
}}
答:a.weight=23f;错
1.编写一个类,该类创建的对象可以计算等差数列的和。解:classDengCha{
int start,d; DengCha(){
Case 4: System.out.printf(“%c”,’d’); Break;
}
}
输出:a,b, b,c,d,d
9.下列System.out.printf语句输出的结果是什么?
Char a[]={‘a’,’b’,’c’,’d’,’e’}; For(i=0; i<=a.length/2; i++)
答:不,只加载本程序用到的类到内存中,因为java程序是动态加载, 字节码类文件。
16.有哪几种访问权限修饰符?说出一种的作用。答:访问权限修饰符有public,private,protected.
Private作用是只允许本类的对象访问。
17.怎样反编译一个类?
答:使用SDK提供的反编译器javap.exe文件可以实现将字节码文件反编译为源码文件。可查看源码中public方法和public成员变量的名字。如加入参数-private则可列出其全部的成员方法和成员变量。
9.请阐述为什么类方法不能调用实例方法?
答:对于类方法在该类加到内存时就分配了相应的入口地址,所以即使该类未创建对象,也可以通过类名调用类方法。而这时在类对象创建之前,实例方法还没有入口地址。还不知道一个方法从何处开始执
行,当然不能调用。
10.请阐述,为什么类方法中不能操作实例成员变量?
