java基础语法this关键字
未经允许,禁止转载!!!!!!!!
this关键词在java里面很重要,想了解清楚this就必须对 类;对象;this;成员变量;方法;构造方法 都了解清楚。
一、使用this调用本类中的成员变量(属性)或成员方法
class Student {
private String name; //定义一个成员变量name public void setName(String name) { //设置姓名,定义一个形参name
name=name; //将局部变量的值传递给成员变量
}
public String getName( ) { //获得姓名
return "姓名:"+name;
}
} public class ThisExample01{
public static void main(String args[]) {
Student stu=new Student();
stu.setName("李明");
System.out.println(stu.getName());
}
}
运行结果:姓名:null
由运行结果可以看出,通过name=name并没有正确的将内容赋给属性,为什么呢?因为此时操作的name实际上是方法中的,跟类中的属性完全不沾边。
另外,这个程序代码中,有一个成员变量name,同时在方法中有个形式参数,参数名也是name。然后在方法中将形式参数name的值传递给成员变量name。虽然我们可以看明白这个代码的含义,但是作
为Java编译器它是怎么判断使用哪个变量的呢?到底是将形式参数name的值传递给成员变量name,还是反过来讲成员变量name的值传递给形式参数name呢?
此时this这个关键字就起到作用了,这种情 况下使用this这个关键字代表的就是类中的成员变量,又叫做类的属性。所以此时,为了明确的表示出哪一个是类中的属性,就要加上“this.属性名称”的操作,
将student类的代码改进如下:this.成员变量 = 该方法传的参数
class Student {
private String name; public void setName(String name) {
this.name=name;
}
public String getName( ) {
return "姓名:"+name;
}
}
既然this能够调用本类中的成员变量,那么,this也可以调用本类中的成员方法。以例2为例,程序代码如下:
class Student{
private String name; public void setName(String name){
this.print(); //调用本类中的print方法
//this.name = name; 由于此处把this.name = name注释了,所以向setName传递的名字参数没有被成员变量接收到,所以最后名字是null
} public String getName( ) {
return "姓名:"+name;
} public void print( ) {
System.out.println("设置相关信息如下……");
}
} public class ThisExample02{ public static void main(String args[]) {
Student stu=new Student();
stu.setName("李明");
System.out.println(stu.getName());
}
}
最后输出结果是:
设置相关信息如下……
姓名:null
如果将this.name = name写进去的话,最后输出结果是:
设置相关信息如下……
姓名:李明
一般情况下,在Java语言中引用成员变量或者成员方法都是以对象名.成员变量或者对象名.成员方法的形式。
不过有些程序员即使在没有相同变量的时候,也喜欢使用this.成员变量的形式来引用变量 。这主要是从便于代码的阅读考虑。
一看到这个 this关键字就知道现在引用的变量是成员变量或者成员方法,而不是局部变量。这无形中就提高了代码的阅读性
二、使用this调用构造方法
在一个Java类中,构造方法是一个与类同名的方法,必须与类的名字相同。而且在Java类中必须存在一个构造方法。
如果在代码中没有显示的体现构造方法的话,那么编译器在编译的时候会自动添加 一个没有形式参数的构造方法。
在一个类中可以存在多个构造方法,这些构造方法都采用相同的名字,只是形式参数不同。Java语言就凭用户的参数来判断调用哪一个构造方法。
当一个类中有多个构 造方法时,可以利用this关键字相互调用。
Java编译器会根据所传递的参数数量的不同,来判断该调用哪个构造方法。
所以,我们在实际编程的时候有时候需要在一个构造方法中对另一个构造方法进行调用。但是,在使用this关键字调用其他构造方法的时候,this()调用构造方法只能放在构造方法的首行,
为的是能够为类中的属性初始化;而且至少有一个构造方法是不用this调用,否则程序会出现错误。
注意的是,使用this调用构造方法只适用于构造方法的调用,类中的其他方法不能使用这种方法。
三、使用this引用当前对象
this最重要的特定就是表示当前对象,那什么叫当前对象呢?在Java中当前对象就是指当前正在调用类中方法的对象。
使用this引用当前对象是指如果在类的方法中需要返回一个对象,并且该对象是 方法所在的类的当前对象,可以使用this关键字作为方法的返回值。
package practise; public class Student {
public String getInfo(){
System.out.println("Student类-------->" + this);
return null;
}
}
package practise; public class ThisExample06{
public static void main(String[] args){
Student stu1 = new Student();
Student stu2 = new Student();
System.out.println("MAIN方法---------->" + stu1);
stu1.getInfo();
}
}
输出结果是:
MAIN方法---------->practise.Student@15db9742
Student类---------->practise.Student@15db9742
下面再看一个例子
package practise; public class Students {
private int age;
private String name; public String getInfo(){
System.out.println("Students类-------->" + this);
return null;
}
public Students(){
System.out.println("新对象实例化");
}
public Students(String name,int age){
System.out.println("新对象实例化");
this.age = age;
}
}
package practise; public class ThisExample03 { public static void main(String[] args) {
// TODO Auto-generated method stub
Students stu1 = new Students("李明",20);
System.out.println(stu1.getInfo());
}
}
最后输出结果:
新对象实例化
Students类-------->practise.Students@15db9742
null
下面是this和super调用构造器的方法
java基础语法this关键字的更多相关文章
- Java基础语法(1)-关键字与保留字
title: Java基础语法(1)-关键字与保留字 blog: CSDN data: Java学习路线及视频 1.关键字 关键字(keyword)的定义和特点 定义:被Java语言赋予了特殊含义,用 ...
- Java基础语法(一)---关键字、常量、变量、运算符
一.关键字 定义:被Java赋予了特殊含义的单词. 特点:体现上都是英文小写. 1. 用于定义数据类型的关键字 基本数据类型: 整数类型:byte short int long 浮点类型:f ...
- java——基础语法
java基础语法 1.关键字:java赋予特殊含义的单词. 2.标识符:程序中开发人员自定义的名词,例如:类名,函数名,变量名(注意事项:①不能以阿拉伯数字开头②不能采用关键字). 3.常量:固定的数 ...
- Java基础语法(2)-变量
title: Java基础语法(2)-变量 blog: CSDN data: Java学习路线及视频 1.什么是变量? 变量的概念 内存中的一个存储区域 该区域的数据可以在同一类型范围内不断变化 变量 ...
- JAVA基础语法——标识符、修饰符、关键字(个人整理总结)
JAVA基础语法——标识符.修饰符.关键字 一 . 标识符 1.1 什么是标识符 就是程序员在定义java程序时,自定义的一些名字,例如helloworld 程序里关键字class 后跟的Dem ...
- Java基础语法(11)-面向对象之关键字
title: Java基础语法(11)-面向对象之关键字 blog: CSDN data: Java学习路线及视频 1.this this是什么 它在方法内部使用,即这个方法所属对象的引用: clas ...
- 2、Java 基础语法标识符、修饰符、变量、 数组、枚举、关键字
Java 基础语法 一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作.下面简要介绍下类.对象.方法和实例变量的概念. 对象:对象是类的一个实例,有状态和行为.例如 ...
- 008 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 02 Java 中的关键字
008 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 02 Java 中的关键字 关键字 关键字就是一些有特殊意义的词 之前学习的程序中涉及到的关键字 Java中 ...
- java面向对象编程——第二章 java基础语法
第二章 java基础语法 1. java关键字 abstract boolean break byte case catch char class const continue default do ...
随机推荐
- mybatis由浅入深day02_7.4mybatis整合ehcache_7.5二级缓存应用场景_7.6二级缓存局限性
7.4 mybatis整合ehcache EhCache 是一个纯Java的进程内缓存框架,是一种广泛使用的开源Java分布式缓存,具有快速.精干等特点,是Hibernate中默认的CacheProv ...
- 超全面的JavaWeb笔记day10<Response&Request&路径&编码>
1.Response 2.Request 3.路径 4.编码 请求响应流程图 response 1.response概述 response是Servlet.service方法的一个参数,类型为java ...
- day22<IO流+>
IO流(序列流) IO流(序列流整合多个) IO流(内存输出流) IO流(内存输出流之黑马面试题) IO流(对象操作流ObjecOutputStream) IO流(对象操作流ObjectInputSt ...
- MySQL 密码设置
如何修改 MySQL 密码: [root@localhost ~]$ mysqladmin -uroot password 'newPass' # 在无密码的情况下设置密码 [root@localho ...
- ATL字符宏使用以及代码测试
// ATL_Convert.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #incl ...
- eclipse export runnable jar
如果要导出可运行的JAR文件,需要选择Runnable Jar File. 方法/步骤 1. 选择要到处JAR文件的工程,右键选择“Export”: 2. 选择“Java-->Run ...
- 【LINUX】SVN 代码提交之后。同步到web目录下
1 当你使用svn在成功提交一个新版本的时候,svn仓库目录下的hook文件夹下的post-commit脚本会运行 用shell写一个脚本,在提交完版本后,自动在web目录运行一下svn updat ...
- java基础---->Base64算法的使用
Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,可用于在HTTP环境下传递较长的标识信息.详细的Base64信息,可以参见维基百科:https://en.wikipedia.org ...
- Cookie/Session机制详解 <转>
会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端 ...
- 几何+点与线段的位置关系+二分(POJ2318)
TOYS Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 10666 Accepted: 5128 Description ...