首页 > 系统相关 >java中this的内存原理以及成员变量和局部变量

java中this的内存原理以及成员变量和局部变量

时间:2023-05-12 22:36:30浏览次数:35  
标签:java 变量 成员 局部变量 内存 方法 age

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)作用域:

成员变量:整个类中有效

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

标签:java,变量,成员,局部变量,内存,方法,age
From: https://www.cnblogs.com/xiao-xiao1024/p/17396436.html

相关文章

  • Java基础语法
    注意:​ 用记事本打开本文档,格式较差。​ 可安装typora软件后再次打开。​ 安装包位于:day01\资料\其他软件\阅读笔记的软件\typora-setup-x64.exeday01-Java基础语法1.人机交互1.1什么是cmd?就是在windows操作系统中,利用命令行的方式去操作计算机。我们可以利用cmd命令......
  • Spring实现javaConfig配置
    1、新建一个config的java文件设置注解为Configuration:2、然后在test的执行文件里面进行注解形式的运行ApplicaitonContextcontext=newAnnocationConfigAppication(userConfig.class);3、Configuration这个注解代表了之前的xml的配置文件的意思,也算是将配置文件化成了con......
  • Java中的位运算符号详解(&、|、^、~、<<、>>、>>>)(转载)
    位运算符号概览符号描述运算规则&与两个位都为1时,结果才为1|或两个位都为0时,结果才为0^异或两个位相同为0,不同为1~取反所有位置0变1,1变0<<左移各二进位全部左移若干位,高位丢弃,低位补0>>带符号右移各二进位全部右移若干位,低位丢弃,高位补为符......
  • 22092133《Java程序设计》第一周学习总结
    1本周学习总结: 一个Java源文件可能编译出多个字节码文件。Scanner是Java的一个类,使用Scanner对象读取数据的时候,要注意next()方法只能读取到有效字符之前遇到的空白,并不能得到带有空格的字符串,nextLine()方法以Enter为结束符,返回输入回车之前的字符就可以获得空白2.书面作业......
  • Java程序设计模拟测试(专用试题)
    单选题Thread类中能运行线程体的方法是B.run()。start()方法会启动一个新的线程,init()方法是构造器的一部分,resume()方法是恢复一个暂停的线程。如果要把容器空间分成东、西、南、北、中五个区域,应采用的布局是D.BorderLayout。BorderLayout类可以将容器分为五个区域:EAST,W......
  • JavaWeb过滤器读取并修改POST请求的参数-YhtHttpServletRequestWrapper
    核心原理就是一个类:javax.servlet.http.HttpServletRequestWrapper一个简单的例子,当任何请求的参数里有aaa的时候,把它的值改成bbb新增一个类自定义的类CustomHttpServletRequestWrapper importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpSer......
  • java
    登录验证码是get请求@TableField(exist=false)是MyBatis-Plus框架提供的注解,用于实体类中对应的属性上,表示该属性在数据库表中不存在。也就是说,使用@TableField(exist=false)注解标记的属性不会被加入到SQL的字段列表中。......
  • java学习第一天MarkDown学习
    Markdown学习标题三级标题#+空格表示一级标题,##+空格表示二级标题...最多到六级标题字体内容这是粗体****斜体这是斜体**斜体加粗这是斜体加粗每边个三个*删除线每边个两个~删除线引用">"表示引用分割线三个“-”表示分割线三个“*”也表示分割线图片 英......
  • PHP发送文件到JAVA项目
    https://blog.csdn.net/u012685554/article/details/126995307亲测有用。php代码$file=$_FILES['order_upload']['tmp_name'];////var_dump($file);exit();////判断文件是否存在if(!file_exists($file)){......
  • java可视化开发工具好用不好用?
    java可视化开发工具到底好用不好用?这是不少粉丝朋友经常询问到的一个问题。在数字化发展趋势越发明显的当下,java可视化开发工具可以帮助各中大型企业实现转型升级,它的灵活、简洁、易操作、可视化等功能优势,让很多客户朋友欣慰不已,仿佛寻觅到了市场的发展动向。今天,我们就一起来了......