zoukankan      html  css  js  c++  java
  • Java学习之Static

    Static(静态)是一种修饰符,用于修饰成员(成员变量、成员函数)

    1.静态方法只能访问静态成员。

    2.静态随着类的加载而加载

    通过代码分析:

     1 class PersonDemo
     2 {
     3     public static void main(String[] args)
     4     {
     5         Person p=new Person("zhangsan",25);
     6         Person p1=new Person("lisi",22);
     7     }
     8 }
     9 
    10 class Person
    11 {
    12     //成员变量的默认初始化
    13     private String name;
    14     //
    15     private int age;
    16     //静态成员
    17     private static String country="cn";
    18     
    19     //构造函数
    20     Person(String name , int age)
    21     {
    22         //this关键字:代表当前对象
    23         this.name=name;
    24         this.age=age;
    25     }
    26     //成员函数
    27     public void setName(String name)
    28     {
    29         this.name=name;
    30     }
    31     public void speak()
    32     {
    33         System.out.println("Speak");
    34     }
    35     
    36     //静态方法
    37     public static void showCountry()
    38     {
    39         System.out.println("静态方法:"+country);
    40     }
    41     //静态代码块
    42     static
    43     {
    44         showCountry();
    45         System.out.println("静态代码块");
    46     }
    47     //构造代码块
    48     {
    49         //System.out.println("构造代码块");
    50         System.out.println("构造代码块;;" + "name="+name+";age="+age);
    51     }
    52 }

    运行结果:

     Person p=new Persong("XXX",XXX);

    做了哪些事情

    1.通过new从硬盘中找到的Person.class文件加载到内存中

    2.Person类被加载到内存,静态成员就被加载到内存(方法区)中

    3.执行该类的静态代码块

    4.在堆内存中开辟空间,分配地址

    5.在堆内存中建立对象的成员(成员变量,成员方法),并进行初始化

    6.对对象构造代码块初始化

    7.对对象构造函数初始化

    8.将内存地址赋值个栈内存中的p变量

    内存表现形式

     补充一点:

    p.setName("wangwu");内存表现:

  • 相关阅读:
    实习一面+二面+三面面经
    内核协议栈2
    android之activity生命周期图
    gcc1
    实习一
    android之startActivityForResult
    KFS
    android之使用DDMS帮助开发
    设计模式——工厂模式
    博客备份工具(博主网)开发略谈
  • 原文地址:https://www.cnblogs.com/WarBlog/p/12050472.html
Copyright © 2011-2022 走看看