Java 中的实例变量

原文: https://javabeginnerstutorial.com/core-java-tutorial/instance-variable-java/

对象使用 Java 中的实例变量存储其状态。 没有使用STATIC关键字定义的变量,并且在任何方法声明之外的都是特定于对象的,称为实例变量。 之所以这样称呼它们,是因为它们的值特定于实例,而不是在实例之间共享。

实例变量示例

  1. class Page {
  2. public String pageName;
  3. // instance variable with public access
  4. private int pageNumber;
  5. // instance variable with private access
  6. }

Java 中实例变量的规则

  • 实例变量可以使用四个访问级别中的任何一个
  • 他们可以标记为最终
  • 可以将它们标记为瞬态
  • 它们不能标记为抽象
  • 无法将它们标记为已同步
  • 它们不能标记为strictfp
  • 它们不能被标记为本地
  • 它们不能标记为静态

备忘单

  • public, private, protected所有这三种访问修饰符都可以应用于实例变量(默认)。
  • 实例变量可以标记为final
  • 实例变量可以标记为transient
  • 实例变量不能是abstract
  • 实例变量无法具有syncronized修饰符。
  • 实例变量无法具有strictfp修饰符。
  • 实例变量无法具有native修饰符。
  • 实例变量不能具有static修饰符,因为它会变为类级别的变量。
  • 实例变量将获得默认值,这意味着无需初始化即可使用实例变量。 对于局部变量,情况并非如此。
实例变量类型默认值
booleanfalse
byte(char)0
short(short)0
int0
long0l
char\u0000
float0.0f
double0.0d
Objectnull
  1. package com.jbt;
  2. /*
  3. * Here we will discuss about different type of Variables available in Java
  4. */
  5. public class VariablesInJava {
  6. /*
  7. * Below variable is INSTANCE VARIABLE as it is outside any method and it is
  8. * not using STATIC modifier with it. It is using default access modifier.
  9. * To know more about ACCESS MODIFIER visit appropriate section
  10. */
  11. int instanceField;
  12. /*
  13. * Below variable is STATIC variable as it is outside any method and it is
  14. * using STATIC modifier with it. It is using default access modifier. To
  15. * know more about ACCESS MODIFIER visit appropriate section
  16. */
  17. static String staticField;
  18. public void method() {
  19. /*
  20. * Below variable is LOCAL VARIABLE as it is defined inside method in
  21. * class. Only modifier that can be applied on local variable is FINAL.
  22. * To know more about access and non access modifier visit appropriate
  23. * section.
  24. *
  25. * Note* : Local variable needs to initialize before they can be used.
  26. * Which is not true for Static or Instance variable.
  27. */
  28. final String localVariable = "Initial Value";
  29. System.out.println(localVariable);
  30. }
  31. public static void main(String args[]) {
  32. VariablesInJava obj = new VariablesInJava();
  33. /*
  34. * Instance variable can only be accessed by Object of the class only as below.
  35. */
  36. System.out.println(obj.instanceField);
  37. /*
  38. * Static field can be accessed in two way.
  39. * 1- Via Object of the class
  40. * 2- Via CLASS name
  41. */
  42. System.out.println(obj.staticField);
  43. System.out.println(VariablesInJava.staticField);
  44. System.out.println(new VariablesInJava().instanceField);
  45. }
  46. }

掌握 Java 中的静态变量,以了解它与实例变量的不同之处。

参考文献