this的内存原理

1、this的作用:

区分局部变量和成员变量

eg:

public class Student{
		private int age;
		public void method(){
		int age = 10;
		System.out.println(age);//10
		System.out.println(this.age);//0使用this.可以直接使用成员变量的age
		}
}

2、this的本质:

代表所在方法调用者的地址值

3、区分的原理:

代表所在方法调用者的地址值:

此时main方法里面的调用者是s,s记录的地址值是001;this的本质是方法调用者的地址值,所以this指向的地址值是001。

this的内存原理:

解析:

等号的右边name出发了就近原则,表示setName里面形参string name里面的参数,而形参里面接收的是s1.setname里面的竹小玲,所以等号右边就是竹小玲,等号左边用this调用的name是s1指向的地址值001。该句话意思就是把竹小玲赋值给等号左边001里面的name。此时方法执行完毕,进行出栈

成员变量和局部变量的区别

1、成员变量:

类中mian方法外的变量(没有上下规定,在代码中为了方便阅读,把成员变量放在最上面)

2、局部变量:

main方法里面的变量

3、成员变量和局部变量的区别:

(1)类中位置不同:

成员变量:类中,方法外

局部变量:类中,方法里面

(2)初始化值不同:

成员变量:有默认初始化值(一般是null和0)

局部变量:使用之前需要完成赋值

(3)内存位置不同:

成员变量:存储在堆内存对象里面

局部变量:存储在栈内存方法里面

(4)生命周期不同:

成员变量:随着对象的创建而存在,随着对象的消失而消失

局部变量:随着方法的调用而存在,随着方法的运行结束而消失

(5)作用域:

成员变量:整个类中有效

局部变量:仅在当前方法中有效

作者:|xiaoxiao1024|,原文链接: https://www.cnblogs.com/xiao-xiao1024/p/17396436.html

文章推荐

一分钟学一个 Linux 命令 - find 和 grep

promise及异步编程async await

spring boot过滤器实现项目内接口过滤

vue自定义密码输入框解决浏览器自动填充密码的问题

聊聊spring中bean的作用域

RochyLinux 8.6安装Oracle19c Client

使用 zeromq与cppzmq 程序退出遇到的坑

很漂亮的Python验证码(记录)

一文快速回顾 Java 操作数据库的方式-JDBC

Redis概述及基本数据结构

MySQL的Explain总结

基于.NetCore开发博客项目 StarBlog - (8) 分类层级结构展示