实例变量(instance variable)

实例变量:或叫实例域、实例字段(instance field),或叫成员变量(member variable)。实例的变量,每个实例的变量可能不同。

实例方法(instance method)

实例方法:或叫成员方法(member method)。供实例用的方法,必须要先有实例,才能通过此实例调用实例方法。

类变量(class variable)

类变量:或叫静态域、静态字段(static field),或叫静态变量(static variable)。出现在这样的情况下:一个类的所有实例需要一个公有的属性,比如,一,统计实例个数;二,常量。类变量与类直接关联在一起。内存当中只有一个地方存放这个变量。任何实例都可以修改它的值(前提是它没有被final修饰符修饰,不然就是常量),但是,访问类变量并不需要实例,用类就可以操作了。

类方法(class method)

类方法(class method):跟类变量的基本特点一样。供类用的方法,可以没有实例,直接通过类来调用类方法。
从形式上看,类变量和类方法,比一般的变量和方法多了一个static修饰符。因为这个原因,类变量和类方法也被叫做静态变量和静态方法。

使用方式

  • 实例方法可以直接访问实例变量,调用实例方法;
  • 实例方法可以直接访问类变量,调用类方法。但不推荐这么做,原因是不清晰,容易把类变量误认为是实例变量,把类方法误认为是实例方法(借助IDE,它会给出警告信息);
  • 类方法可以直接调用类变量和类方法;
  • 类方法不能直接调用实例变量和实例方法;
  • 类方法里面不能使用“this”关键字,因为没有实例存在,“this”不知道引用哪个实例。

程序代码:

public class Exam {/*** 类变量*/public static String classVariable = "Class variable.";/*** 实例变量*/public String instanceVariable = "Instance variable.";/*** 类方法*/public static void classMethod() {// 类方法可以直接调用类变量System.out.println("classVariable:" + classVariable);// error,类方法里面不能使用“this”关键字//System.out.println("instanceVariable:" + this.instanceVariable);}public static void classMethodTwo() {System.out.println("Class method.");// 类方法可以直接调用类方法classMethod();// error,类方法不能直接调用实例变量和实例方法//instanceMethod();//System.out.println("instanceVariable:" + instanceVariable);}/*** 实例方法*/public void instanceMethod() {System.out.println("Instance method.");}public static void main(String[] args) {Exam instance = new Exam();// 通过实例引用调用类方法instance.classMethod();// 通过实例引用调用类变量System.out.println(instance.classVariable);// 通过实例引用调用实例方法instance.instanceMethod();// 通过实例引用调用实例变量System.out.println(instance.instanceVariable);}
}

注意这样一个特殊的情形:如果已有一个类变量,再定义一个方法去操作这个类变量。那么此方法可以不加static修饰符,本质上仍然是一个类方法。但是,现在就只能通过该类的一个实例,才能调用这个方法(常见于面试中)。

// 修改上述方法
public void instanceMethod() {System.out.println("Instance method.");// 修改classVariable += "append";System.out.println("classVariable:"+classVariable);
}

字面量、常量和变量之间的区别

字面量是指由字母,数字等构成的字符串或者数值,它只能作为右值出现,所谓右值是指等号右边的值,如:int a = 123这里的a为左值,123为右值。
常量和变量都属于变量,只不过常量是赋过值后不能再改变的变量,而普通的变量可以再进行赋值操作。
例:

// a变量
int a;
// b为常量,10为字面量
final int b = 10;
// str为变量,hello world为字面量
String str = "hello world";

参考链接link。

Java 基础之实例方法,实例变量,类方法,类变量相关推荐

  1. java实例变量成员变量_Java的类成员变量、实例变量、类变量,成员方法、实例方法、类方法...

    总是被这些相似的概念搞晕,查阅了资料后做个小总结,以变量为例,方法辨析类似. 1.多胞胎名字汇总辨析 成员变量和成员方法是范围最大的定义,提到成员变量就可以理解成你所定义在一个类体中的各类变量的统称, ...

  2. Python基础学习——面向对象编程(第一讲:面向对象概述、面向对象三个基本特征(封装性、继承性、多态性)、类和对象(定义类、创建和使用对象、实例变量、类变量、构造方法、实例方法、类方法、静态方法))

    面向对象是Python最重要的特性,在Python中一切数据类型都是面向对象的. 1.面向对象概述 面向对象的编程思想是,按照真实世界客观事物的自然规律进行分析,客观世界中存在什么样的实体,构建软件系 ...

  3. 实例变量和类变量、实例方法类方法区别

    实例变量 实例变量声明在一个类中,但在方法.构造方法和语句块之外: 当一个对象被实例化之后,每个实例变量的值就跟着确定: 实例变量在对象创建的时候创建,在对象被销毁的时候销毁: 实例变量的值应该至少被 ...

  4. 实例变量和类变量、类方法和实例方法

    类体中包括成员变量和局部变量,而成员变量又可以细分为实例变量和类变量,在声明成员变量的时候,用static给予修饰的称作类变量,否则称作实例变量.(类变量也称为static变量,静态变量) 那么,类变 ...

  5. java基础学习 --- 第二节 变量、数据类型和运算符

    java基础学习 - 第二节 变量.数据类型和运算符 一.变量 1.变量就是会发生改变的数据,程序运行时,这些数据以变量的形式被保存到计算机的内存中.如图 2.使用变量的步骤:     声明变量 - ...

  6. python中静态方法可以访问对象变量_python 面向对象-实例变量、类变量、实例方法、类方法、静态方法...

    需要搞清楚的是, 实例方法与类方法是什么?类变量和实例变量又是什么? 类方法中如何访问类变量.类方法要如何调用?当然 实例方法中如何访问类变量?能 实例方法访问实例变量,实例方法如何被调用?当然 类方 ...

  7. Java单例模式个人总结(实例变量和类变量)

    Java单例模式 背景知识:Static关键字. 在对于定义类的变量,分为两种,是否具有static修饰的变量: 没有static修饰的变量,通过类的实例化(对象)引用,改变量称为实例变量: 使用st ...

  8. java 实例变量和类变量

    当JAVA程序执行时,类的字节码文件就被加载到内存,如果该类没有创建对象,类的实例成员变量不会被分配内存,但是类中的类变量在类被加载到内存的时候,就分配了相应的内存空间.如果该类创建对象,那么不同的实 ...

  9. java实例变量,局部变量,类变量和final变量

    题目 答案:B 解析 实例变量: 定义在类中的变量是类的成员变量,可以不进行初始化, java 会自动进行初始化.(如果是引用类默认初始化为 null, 如果是基本类型,默认初始化为 0 ) 局部变量 ...

最新文章

  1. 2022-2028年中国蛋白石行业发展现状分析及投资前景趋势报告
  2. 关于各种回归评价指标MSE、RMSE、MAE、R-Squared、Standard Deviation(标准差)
  3. Webpack中的sourcemap
  4. steam怎么看邮箱绑定的账号_怎么为QQ邮箱设置英文邮箱账号
  5. java类和对象:封装、继承和多态
  6. javaweb(02) JavaScript基础知识
  7. UNIX 环境高级编程(四)—— dirent.h
  8. beetle.express一通讯案例测试结果
  9. 人脸重建github源码总结
  10. 【企业架构】2022年TOGAF认证是否仍然值得
  11. 基于单片机的便携式瓦斯检测仪系统设计-基于单片机超声波停车位自动检测系统-基于单片机产品数量自动计量系统设计-基于单片机激光电子琴设计-基于单片机锂电池电量显示设计-基于单片机温湿度农田自动灌溉设计
  12. 用标准普尔家庭资产象限图规划收入分配
  13. 【对比Java学Kotlin】类型别名
  14. windows修改mysql密码
  15. AGV、IGV、RGV这三者之间的区别浅析
  16. 提交.a文件到svn
  17. Linux strace工具
  18. linux 下跑通pointnet++网络模型
  19. python足球大数据分析_使用Python抓取欧洲足球联赛数据进行大数据分析
  20. CF407B 「Long Path」

热门文章

  1. 实践作业3:白盒测试----小组分工讨论DAY2
  2. django-simple-captcha验证码的验证问题
  3. python画同心圆循环源代码_Python Turtle:使用circle()方法绘制同心圆
  4. golang依赖下载异常解决方法
  5. 存储瘫痪导致虚拟化平台丢失虚拟机该怎么解决
  6. 报403错误的解决办法
  7. C# Convert方法:数据类型转换
  8. 【Unity 3D】元宇宙概念、应用前景、价值链等概述
  9. 海外最早 Cocos 使用者:如何发布游戏至 10 亿用户平台 Viber?
  10. js 删除字条串首尾空格