做网站公司有什么出路,dedecms医院网站,wordpress行业模板,马鞍山网站建设哪里有this关键字
关于java语言中的this关键字 1.this是一个关键字#xff0c;翻译为#xff1a;这个 2.this是一个引用#xff0c;this是一个变量#xff0c;this变量中保存了内存地址指向了自身#xff0c;this存储在JVM堆内存java对象内部 3.创建100个java对象#xf… this关键字
关于java语言中的this关键字 1.this是一个关键字翻译为这个 2.this是一个引用this是一个变量this变量中保存了内存地址指向了自身this存储在JVM堆内存java对象内部 3.创建100个java对象每一个对象都有this也就是说有100个不同的this 4.this可以出现在实例方法当中this指向当前正在执行这个动作的对象。this代表当前对象 最终结论 在带有static的方法中不能直接访问实例变量和实例方法因为实例变量和实例方法都需要对象的存在 然而static的方法中没有this也就是说当前对象是不存在的 自然无法访问当前对象的实例变量和实例方法 this什么时候不能省略 用来区分局部变量和实例变量的时候this不能省略 public void setAge(int age){ this.ageage;//前面的this.age表示实例变量当前对象的实例变量后面的age是赋值的局部变量 } 新建一个顾客类
package com.lbj.javase06;
/*** 关于java语言中的this关键字* * 1.this是一个关键字翻译为这个* 2.this是一个引用this是一个变量this变量中保存了内存地址指向了自身this存储在JVM堆内存java对象内部* 3.创建100个java对象每一个对象都有this也就是说有100个不同的this* 4.this可以出现在实例方法当中this指向当前正在执行这个动作的对象。this代表当前对象* 5.this在多数情况下是可以省略不写的* 6.this不能使用在带有static的方法中* author 14811**/
public class Customer {//姓名【堆内存的对象内部中存储所以访问该数据的时候必须先创建对象通过引用方式访问】String name;//实例变量必须采用引用.的方式访问//构造方法public Customer(){}//不带有static关键字的一个方法//顾客购物的行为//每一个顾客购物最终的结果不一样的//所以购物这个行为是属于对象级别的行为//由于每一个对象在执行购物这个动作的时候最终结果不同所以购物这个动作必须有对象的参与//重点没有static关键字的方法被称为实例方法实例方法怎么访问通过引用。//重点没有static关键字的变量被称为实例变量//注意当一个行为/动作执行的过程中是需要对象参与的那么这个方法一定要定义为实例方法不要带static关键字//以下方法定义为实例方法因为每一个顾客在真正购物的时候最终返回的结果是不同的。所以这个动作在完成的时候必须有对象的参与public void shopping(){//当张三在购物的时候输出张三在购物//当李四在购物的时候输出李四在购物//这样是最简单无脑的输出//System.out.println(xxx在购物);//由于name是一个实例变量所以这个name访问的时候一定访问的是当前对象的name//所以多数情况下this.是可以省略的//System.out.println(name在购物);//冗余写法//System.out.println(c1.name在购物);//System.out.println(c2.name在购物);//完整写法System.out.println(this.name在购物);}public static void doSome(){//这个执行过程中没有当前对象因为带有static的方法是通过类名的方式访问的//或者收这个上下文中没有当前对象自然也不存在thisthis代表的是当前正在执行这个动作的对象//以下程序为什么编译报错呢//doSome方法调用不是对象去调用是一个类名去调用执行过程中没有当前对象//name是一个实例变量以下代码的含义是访问当前对象的name因为没有当前对象的name//System.out.println(name);//static的方法调用不需要对象直接使用类名所以执行过程中没有当前对象所以不能使用this//System.out.println(this);}public static void doOther(){//假设就是通过static想访问name这个实例变量的话应该怎么做//System.out.println(name);//编译报错//可以采用以下方案但是以下方案绝对不是访问当前对象this的name//创建对象Customer cnew Customer();System.out.println(c.name);//这里访问的name是c引用指向对象的name}}
新建一个顾客测试类
package com.lbj.javase06;public class CustomerTest01 {public static void main(String[] args) {// TODO Auto-generated method stub//创建CustomerCustomer c1new Customer();c1.namezhangsan;//c1购物c1.shopping();//再创建Customer对象Customer c2new Customer();c2.namelisi;//c2购物c2.shopping();//---------------------------//调用doSome方法修饰符列表上有static//采用类名.的方式访问显然这个方法在执行的时候不需要对象的参加Customer.doSome();//调用doOther方法Customer.doOther();//输出为null}}内存示意图