水果电商网站建设相关文献,seo学徒,标识设计案例,滨州seo招聘成员变量
成员变量分为静态变量#xff08;类变量#xff09; 和 实例变量。静态变量有static修饰#xff0c;它从该类的准备阶段就存在了#xff0c;直到系统销毁这个类#xff0c;静态变量的作用域与这个类的生存范围相同#xff1b;存储方式#xff1a;存放在方法区…成员变量
成员变量分为静态变量类变量 和 实例变量。静态变量有static修饰它从该类的准备阶段就存在了直到系统销毁这个类静态变量的作用域与这个类的生存范围相同存储方式存放在方法区。 如果这个类的所有对象的属性值都是一样的不建议定义为实例变量会浪费内存空间 建议定义为静态变量在方法区中只保留一份节省内存的开销 实例变量没有static修饰它从该类的实例被创建时就存在直到系统销毁这个实例实例变量的作用域与对应实例的生存范围相同存储方式存放在堆区。
静态变量访问方法通过类名访问不需要创建实例 类.静态变量 实例变量访问方法通过实例访问需要先new一个实例 实例.实例变量 在类的准备阶段系统就为该类的类变量分配内存空间并指定默认初始值静态变量name也是在这个阶段完成了初始化 局部变量
局部变量中的三种不同形式存储方式都存储在栈区。形参 在定义方法签名时定义的变量形参的作用域在整个方法内有效方法局部变量 在方法体中定义的变量作用域从定义该变量的地方生效到该方法结束时失效代码块局部变量 在代码块中定义的变量作用域从定义该变量的地方生效到该代码块结束时失效
和成员变量不同的一点是局部变量除了形参外都需要显式初始化就是指定一个初始值否则无法访问
局部变量在内存中的运行机制 因为局部变量需要显式初始化所以系统不会对它进行初始化即系统并没有给局部变量分配内存空间只有它赋值后系统才会分配内存将该值放入其中 因为局部变量不属于任何对象或者类所以它存放在栈内存中且栈内存的变量不需要系统垃圾回收因为它们会随着方法或者代码块运行结束而结束所以局部变量只保存基本类型或者对象的引用引用变量所以局部变量占用内存比较小
java语法允许局部变量和成员变量重名但是如果在一个方法里局部变量会覆盖成员变量 如果想要在该方法里访问成员变量就需要通过this.变量引用针对实例变量或者类名针对静态变量作为调用者来限定访问成员
对比
成员变量与局部变量的区别
语法形式 从语法形式上看成员变量是属于类的而局部变量是在代码块或方法中定义的变量或是方法的参数成员变量可以被 public,private,static 等修饰符所修饰而局部变量不能被访问控制修饰符及 static 所修饰但是成员变量和局部变量都能被 final 所修饰。存储方式 从变量在内存中的存储方式来看,如果成员变量是使用 static 修饰的那么这个成员变量是属于类的如果没有使用 static 修饰这个成员变量是属于实例的。而对象存在于堆内存局部变量则存在于栈内存。生存时间 从变量在内存中的生存时间上看成员变量是对象的一部分它随着对象的创建而存在而局部变量随着方法的调用而自动生成随着方法的调用结束而消亡。默认值 从变量是否有默认值来看成员变量如果没有被赋初始值则会自动以类型的默认值而赋值一种情况例外:被 final 修饰的成员变量也必须显式地赋值而局部变量则不会自动赋值。