JAVA中 成员变量和和实例变量区别
java语言支持的变量类型
- 类变量:独立于方法之外的变量,用 static 修饰。
- 局部变量:类的方法中的变量。
- 实例变量(全局变量):独立于方法之外的变量,不过没有 static 修饰。
public class Variable{
static int allClicks=0; // 类变量
String str="hello world"; // 实例变量
public void method(){
int i =0; // 局部变量
}
}
JAVA的局部变量
- 局部变量声明在方法、构造方法或者语句块中;
- 局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁;
- 访问修饰符不能用于局部变量;
- 局部变量只在声明它的方法、构造方法或者语句块中可见;
- 局部变量是在栈上分配的。
- 局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。
JAVA的实例变量
- 实例变量声明在一个类中,但在方法、构造方法和语句块之外;
- 当一个对象被实例化之后,每个实例变量的值就跟着确定;
- 实例变量在对象创建的时候创建,在对象被销毁的时候销毁;
- 实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取实例变量信息;
- 实例变量可以声明在使用前或者使用后;
- 访问修饰符可以修饰实例变量;
- 实例变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把实例变量设为私有。通过使用访问修饰符可以使实例变量对子类可见;
- 实例变量具有默认值。数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null。变量的值可以在声明时指定,也可以在构造方法中指定;实例变量可以直接通过变量名访问。但在静态方法以及其他类中,就应该使用完全限定名:ObejectReference.VariableName。
JAVA的类变量(静态变量)
- 类变量也称为静态变量,在类中以static关键字声明,但必须在方法构造方法和语句块之外。
- 无论一个类创建了多少个对象,类只拥有类变量的一份拷贝。
- 静态变量除了被声明为常量外很少使用。常量是指声明为public/private,final和static类型的变量。常量初始化后不可改变。
- 静态变量储存在静态存储区。经常被声明为常量,很少单独使用static声明变量。
- 静态变量在程序开始时创建,在程序结束时销毁。
- 与实例变量具有相似的可见性。但为了对类的使用者可见,大多数静态变量声明为public类型。
- 默认值和实例变量相似。数值型变量默认值是0,布尔型默认值是false,引用类型默认值是null。变量的值可以在声明的时候指定,也可以在构造方法中指定。此外,静态变量还可以在静态语句块中初始化。
- 静态变量可以通过:ClassName.VariableName的方式访问。
- 类变量被声明为public static final类型时,类变量名称一般建议使用大写字母。如果静态变量不是public和final类型,其命名方式与实例变量以及局部变量的命名方式一致。
权限访问修饰符
默认的,也称为 default,在同一包内可见,不使用任何修饰符。
私有的,以 private 修饰符指定,在同一类内可见。
共有的,以 public 修饰符指定,对所有类可见。
受保护的,以 protected 修饰符指定,对同一包内的类和所有子类可见。
作用域 | 当前类 | 同一包 | 子孙类 | 其他包 |
public | √ | √ | √ | √ |
protected | √ | √ | √ | × |
default | √ | √ | × | × |
private | √ | × | × | × |
JAVA中 成员变量和和实例变量区别相关推荐
- java中成员变量和全局变量的区别_成员变量与全局变量的区别
全局变量:也叫成员变量,是指在类中定义的变量:它在整个类中都有效 全局变量又可分为:类变量和实例变量 1.类变量:又叫静态变量 用static修饰 它可以直接用类名调用 也可以用对象调用 而 ...
- 谈谈java中成员变量与成员方法继承的问题
谈谈java中成员变量与成员方法继承的问题 关于成员变量和成员方法的的继承问题,我也可以做一个小测试,来看看结果. 首先我们先创建一个父类: 其次再创建一个子类,子类中要比父类中少一个成员方法: 这样 ...
- java 实例方法直接调用超类的实例方法_Java继承关系中,父类方法使用实例变量和调用实例方法的探究...
面向对象编程中,某一个实例方法使用实例变量和调用其它实例方法的情况是常见的.当存在继承关系时,这种情况就变得复杂起来.以下就对继承关系中,父类的某实例方法使用实例变量和其它实例方法的情况进行探究.因为 ...
- java 中成员变量的名字和类的方法的名字可以一样.
java 中成员变量的名字和类的方法的名字可以一样. public class fourone {public static void main(String[] args) {int first[] ...
- java线程和内核线程的,Java中内核线程理论及实例详解
1.概念 内核线程是直接由操作系统内核控制的,内核通过调度器来完成内核线程的调度并负责将其映射到处理器上执行.内核态下的线程执行速度理论上是最高的,但是用户不会直接操作内核线程,而是通过内核线程的接口 ...
- java中List的用法和实例详解
Java中List的用法和实例详解 List的用法 List包括List接口以及List接口的所有实现类.因为List接口实现了Collection接口,所以List接口拥有Collection接口提 ...
- 【Java学习笔记之二十九】Java中的equals和==的用法及区别
Java中的"equals"和"=="的用法及区别 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String(&quo ...
- java中public、private、protected的区别
java中public.private.protected的区别 在java中通过三个关键字public.private.protected在类的内部来进行边界的设定,这些访问指定词(access s ...
- java中String new和直接赋值的区别
Java中String new和直接赋值的区别 对于字符串:其对象的引用都是存储在栈中的,如果是编译期已经创建好(直接用双引号定义的)的就存储在常量池中,如果是运行期(new出来的)才 ...
最新文章
- solaris上的pkg管理
- Supervisor重新加载配置启动新的进程
- (转) 对svn分支合并类型和深度的理解
- 星模php格,extend/base/TencentSms.php · 纵之格/ShopXO - Gitee.com
- 阿里云如何二次驱动云计算
- 软件工程之中期学习总结
- 网易财报暗藏玄机,不经意间已编织出电商大网
- java exec mvn_为`mvn exec:java`设置Java属性
- 如何为属性是disabled的表单绑定js事件
- 工作中常用的linux命令,Linux工作中常用到的一些命令(持续更新)常用的
- Linux C语言实现清除文件中的内容
- Java 24 岁!Google 加持的 Kotlin 真能取代它?
- stripslashes和addslashes的使用方法
- 用CentOS 6快速配置一台企业级Web代理服务器
- iMazing支持哪些数据类型
- python巡检网络设备_pyhton对网络设备的日常巡检
- C# Winform 使用 PuppeteerSharp 进行网页截图、生成pdf等操作
- 搬运+机翻 Unity插件 OBICloth插件官方CharDemo分析
- mysql存储函数中游标报错 No data - zero rows fetched, selected
- 分析:很多小程序微商城系统为什么敢永久免费使用