zoukankan      html  css  js  c++  java
  • static小结

    static:静态的,用来修饰成员变量和函数,不能修饰构造函数;

    静态函数:被static关键字修饰的函数就是静态函数;

    静态函数的格式:将static关键字写在函数的返回值类型前面

    静态函数的特点:

    1、和类的对象无关,可以直接通过类名调用

    2、只能调用静态函数和静态成员变量,不能使用和类的对象有关的成员(this关键字;super关键字;非静态成员变量;非静态函数;)

    原因:非静态函数和非静态成员变量都必须依赖类的对象使用;

    而静态函数使用都不需要有对象,所以在静态函数中不能直接调用非静态函数和非静态成员变量;

    3、非静态函数可以调用静态函数和非静态函数,也可以使用静态成员变量和非静态成员变量;

    原因:非静态函数只能通过类的对象使用;如果可以调用非静态函数,说明此时已经存在对象;

    已经存在对象,说明类已经加载完毕;

    类已经加载完毕,所以静态函数肯定可以使用;

    4、构造函数不能是静态的

    因为构造函数是在创建对象的时候用来给对象的成员变量赋值用的;如果构造函数可以是静态的,就不需要对象就能使用,就没有意义;

    静态成员变量:被static修饰的成员变量就是静态成员变量;

    静态成员变量的格式:将static关键字写在成员变量的数据类型前面;

    静态成员变量的特点:

    1、和类的对象无关,直接通过类名调用;

    2、保存在方法区的静态区域,被该类的所有对象共享;

    3、在类加载完成时就完成空间分配和赋值;

    什么时候应该使用静态函数和静态成员变量?

    不需要对象,和对象无关的时候,就需要定义为静态成员;

    (静态成员变量又叫做类变量、类字段;静态函数又叫做类函数、类方法)

    什么时候不能将函数定义为静态的?

    如果一个函数中使用了非静态成员变量,就不能将其定义为静态的函数;

    静态成员变量和非静态成员变量的区别:

    1、从保存位置:

    a)         静态成员变量:保存在方法区的静态区域

    b)        非静态成员变量: 保存在堆内存的对象空间中

    2、从书写格式上看:

    a)         静态成员变量: 需要使用static关键字修饰,将static关键字直接写在数据类型前面;

    b)        非静态成员变量: 不需要使用static关键字修饰;

    3、从生命周期上看:

    a)         静态成员变量:    类加载的时候就分配空间和赋值;直到这个类被卸载(或者整个程序结束);

    b)        非静态成员变量: 创建对象的时候才分配空间和赋值;对象成为垃圾空间被回收的时候;

    4、从使用方法上看:

    a)         静态成员变量:    可以直接通过类名使用,和类的对象无关;

    b)        非静态成员变量: 必须通过类的对象使用;

    5、从修改后的影响范围上看:

    a)         静态成员变量:    所有对象都收到影响;

    b)        非静态成员变量:  只对这一个对象有影响;


    本博客文章均已测试验证,欢迎评论、交流、点赞。
    部分文章来源于网络,如有侵权请联系删除。
    转载请注明原文链接:https://www.cnblogs.com/sueyyyy/p/9268827.html

  • 相关阅读:
    SqlConnectionStringBuilder
    什么时候使用“静态方法”(转)
    Dos命令下多文件中查找某字符串
    StructLayout(LayoutKind.Sequential)(转)
    DOS批处理高级教程:第四章 批处理中的变量(转)
    DOS批处理高级教程:第一章 批处理基础(转)
    C#各种进制之间数据转换二进制、八进制、十进制、十六进制
    DOS批处理高级教程:第六章 if命令讲解(转)
    ModbusRTU模式和结束符(转)
    DOS批处理高级教程:第七章 DOS批处理编程高级技巧(转)
  • 原文地址:https://www.cnblogs.com/sueyyyy/p/9268827.html
Copyright © 2011-2022 走看看