全部
技术
PHP
MySQL
前端
Linux
JAVA
工具
纪念日计算器
邮记星
个人记账
笔记侠
历史上的今天
生日密码
生日书
生日密码
生日花语
博古通今
三十六计
鬼谷子
笑林广记
本草纲目
山海经
唐诗宋词
宋词300首
唐诗300首
退出
登录
注册
编辑文章
选择分类
PHP
MySQL
前端
Linux
Java
工具
选择专栏
设计模式
java基础
Angular学习
Java面试题
描述:
this关键字
封面图上传 :
+
点击上传图片
### this关键字 this核心概念指代当前对象,利用this关键字可以实现类属性调用,类方法调用,以及表示当前对象 #### this调用属性 实例代码:如下,我构造方法出入String n 和double p分别赋值car的name属性和car的price属性,这个时没有啥问题的。 ```java class Car{ private String name; private double price; public Car(String n, double p){ name = n; price = p; } public String getCarInfo(){ return "车品牌:"+name+", 价格:"+price; } } public class TestThis{ public static void main(String[] arg){ Car car = new Car("兰博基尼", 5500000); System.out.println(car.getCarInfo());//结果:车品牌:兰博基尼, 价格:5500000.0 } } ``` 实例代码:如下,当我吧构造方法的参数名称换成String name和double price时,结果是**车品牌:null, 价格:0.0**,这是为什么呢?主要是作用域问题,java以**{}大括号**为作用域,当他发现传入的参数为name和price时,这个时候赋值的操作也是name和price,那么**他就不会再去类的属性里面查找对应的name和price(就近原则)**,这就导致car的属性name和price没有被赋值,打印出来的就是对应属性类型的默认值。 ```java class Car{ private String name; private double price; public Car(String name, double price){ name = name; price = price; } public String getCarInfo(){ return "车品牌:"+name+", 价格:"+price; } } public class TestThis{ public static void main(String[] arg){ Car car = new Car("兰博基尼", 5500000); System.out.println(car.getCarInfo());//车品牌:null, 价格:0.0 } } ``` 通过上面代码,这个时候this的作用就体现出来了,代码如下: ```java class Car{ private String name; private double price; public Car(String name, double price){ this.name = name; this.price = price; } public String getCarInfo(){ return "车品牌:"+this.name+", 价格:"+this.price; } } public class TestThis{ public static void main(String[] arg){ Car car = new Car("兰博基尼", 5500000); System.out.println(car.getCarInfo());//结果:车品牌:兰博基尼, 价格:5500000.0 } } ```
保存文章