static是一个修饰符,用于修饰成员变量,成员方法。作用是将修饰的成员变量或者成员方法可以直接在类的初始化后直接加载到方法区中,且不用通过对象调用,可以直接通过类访问。

    注意:静态可访问调用静态,不可以访问调用非静态;非静态既可以访问调用静态也可以访问调用非静态。

    示例:

    1. package com.bxw.demo.demo04;
    2. public class static静态修饰符 {
    3. public static void main(String[] args) {
    4. // 直接调用静态公共访问方法给静态变量赋值
    5. TestStatic.setName("jack");
    6. TestStatic.setAge(23);
    7. TestStatic.Static();
    8. // 创建变量才能给非静态变量赋值
    9. TestStatic testStatic = new TestStatic();
    10. testStatic.setId(21);
    11. // 对象不能调用静态方法
    12. testStatic.noStatic();
    13. }
    14. }
    15. class TestStatic{
    16. // 创建两个静态私有的成员变量
    17. static private String name;
    18. static private int age;
    19. // 创建一个非静态变量
    20. private int id;
    21. public TestStatic() {
    22. }
    23. // 这里可以发现,构造方法中只有一个非静态的变量,因为静态变量可以通过类直接访问赋值
    24. public TestStatic(int id) {
    25. this.id = id;
    26. }
    27. public static String getName() {
    28. return name;
    29. }
    30. public static void setName(String name) {
    31. TestStatic.name = name;
    32. }
    33. public static int getAge() {
    34. return age;
    35. }
    36. public static void setAge(int age) {
    37. TestStatic.age = age;
    38. }
    39. public int getId() {
    40. return id;
    41. }
    42. public void setId(int id) {
    43. this.id = id;
    44. }
    45. //创建一个非静态的成员方法
    46. public void noStatic(){
    47. System.out.println("非静态可访问调用静态与非静态");
    48. // 这里强调一点,静态变量不可以使用this关键字
    49. System.out.println("非静态变量:" + this.id + "静态变量:" + name);
    50. System.out.println("调用静态的公共访问方法:" + getName());
    51. System.out.println("调用非静态的公共访问方法:" + getId());
    52. }
    53. // 创建一个静态的成员方法
    54. public static void Static(){
    55. System.out.println("静态只可以访问调用静态");
    56. System.out.println("静态变量:" + name);
    57. System.out.println("静态方法" + getName());
    58. }
    59. }