记录使用过程中混淆或者不清楚的点。

static

参考:公众号《方志明》 感谢作者。

  关键字static声明的方法、变量,可直接通过类名进行访问。不需要new对象去访问。

  1. 没有new对象,就没有this上下文环境,就不能使用this调用非静态方法、使用非静态变量。

     public class CustomerService {public static String name="Spring boot";public String age="25";public void printAge(){System.out.println(name);System.out.println(age);printName();}public static void printName(){System.out.println(name);// System.out.println(this.age);}}
    

    使用非静态变量提示错误。

    或者使用this提示错误。

    在静态方法中new一个对象就调用非静态方法、变量了。

     public static void printName(){CustomerService customerService = new CustomerService();System.out.println(name);System.out.println(customerService.age);// customerService.printAge();}
    
  2. 静态变量在类初此加载时被初始化。且被所有对象共享,内存中只有一个副本。
    在主程序中创建两个CustomerService对象实例、观察静态变量和静态变量。

    这边是通过类的构造器对变量进行初始化赋值,具体查看第五点

     public static void main(String[] args) {CustomerService c1 = new CustomerService("高飞",42);System.out.println(c1.name+","+c1.age);CustomerService c2 = new CustomerService("红颜",32);System.out.println(c1.name+","+c1.age);System.out.println(c2.name+","+c2.age);// new CustomerService();System.out.println("main:"+CustomerService.name);SpringApplication.run(DemoApplication.class, args);}
    

      日志打印name静态变量的值为最后一次的对象实例,说明了静态变量被对象共享。而普通变量age则是对象私有。

  3. static代码块,在类初次加载时执行,且执行一次。(可用作初始化操作)

    在类内部但不能在方法中。多个static 代码块,按序执行。

     static{System.out.println("static block");}public CustomerService() {System.out.println("construct");}//在主程序中调用public static void main(String[] args) {new CustomerService();new CustomerService();SpringApplication.run(DemoApplication.class, args);}
    

    日志打印中static只执行了一次。构造函数执行了两次。

  4. static不允许用来定义局部变量。

  5. 类的构造器也是静态方法。
    所以在类的构造器可以使用this关键字引用静态方法。

     public CustomerService(String name,int age) {this.age = age;this.name = name;}
    

    但是编辑器给出警告,尽量不要再类内部使用静态方法、变量。在类实例化使用。


Java static理解相关推荐

  1. java static 块作用_java static块有什么具体的作用和注意事项?说具体点

    展开全部 在Java语言中,static表示"全局"或者"静态"的62616964757a686964616fe4b893e5b19e3133333035346 ...

  2. 谈谈你对Java的理解

    谈谈你对Java的理解 这个考察的很宽泛,答案不是唯一的,往往考察多个方面,其实这个问题考察的是你是否真的掌握了Java,对基础知识点的理解是否真的很清楚.是否掌握主要的模块和运行 原理等,同时也会对 ...

  3. Java 深入理解深拷贝和浅拷贝区别

    title: Java 深入理解深拷贝和浅拷贝区别 date: 2021-6-19 updated: 2021-6-19 tags: Java 深拷贝和浅拷贝 categories: 面试 Java ...

  4. java static 函数_详解java中的static关键字

    Java中的static关键字可以用于修饰变量.方法.代码块和类,还可以与import关键字联合使用,使用的方式不同赋予了static关键字不同的作用,且在开发中使用广泛,这里做一下深入了解. 静态资 ...

  5. 从Java代码到Java堆理解和优化您的应用程序的内存使用

    从Java代码到Java堆理解和优化您的应用程序的内存使用 简介: 本文将为您提供 Java? 代码内存使用情况的深入见解,包括将 int 值置入一个Integer 对象的内存开销.对象委托的成本和不 ...

  6. java static method_java static关键字静态方法详解,静态方法实例分享

    之前给大家介绍了一下java static关键字静态变量,那么下面要接着给大家介绍的就是静态方法,主要有成员方法涵盖内容以及静态方法与实例方法的区别以及实例介绍. 和成员变量相似,成员方法也能够分成下 ...

  7. JVM面试1 :谈谈你对Java的理解

    谈谈你对Java的理解 如何查看字节码? 使用 javap

  8. java static面试题_Java static面试题

    首页 > 基础教程 > 关键字 > static关键字 Java static面试题 1. 为什么要用static关键字? 通常来说,用new创建类的对象时,数据存储空间才被分配,方 ...

  9. Java——深入理解Java异常体系

    Java--深入理解Java异常体系 参考文章: (1)Java--深入理解Java异常体系 (2)https://www.cnblogs.com/wugongzi/p/11858228.html 备 ...

最新文章

  1. 面试:TCP协议面试10连问,总会用得到,值得收藏!
  2. django模型的继承
  3. 换掉 Postman + Swagger + JMeter,这 5 个 Java 项目绝了!
  4. 详解SSH框架和Redis的整合
  5. 新奇漂亮的Ajax/CSS表格设计汇集
  6. 092:QuerySet API详解-切片操作
  7. 3月19日学习内容整理:redis
  8. Socket开发框架之框架设计及分析
  9. (原创)sqlite封装库SmartDB1.3发布
  10. [2018.07.31 T3] 第三题
  11. python 爬取起点中文网的小说(学习记录)
  12. 11.微信小程序图片操作总结
  13. 破解隔壁wifi的实践——网络攻击,抓取握手包,解包
  14. Java面试题精选四(oracle、mysql数据库)
  15. flask url_for()和redirect的区别
  16. [渝粤教育] 中国科学技术大学 化学实验安全知识 参考 资料
  17. 鸿蒙开发|呼吸训练实战项目(二)
  18. 多年锤炼,迈向Kata 3.0 !走进开箱即用的安全容器体验之旅| 龙蜥技术
  19. 第一章 教育基础(01 教育与教育学的产生与发展)
  20. python编辑word的格式_Python 如何对word文档(.docx)的页眉和页脚进行编辑?

热门文章

  1. 当AI开始改造“文房四宝”:腾讯教育的脑洞与逻辑
  2. 在vscode中创建vue项目
  3. android 虚拟导航监听,Android另类判断NavigationBar虚拟导航栏状态
  4. Oracle的Cast的用法,cast函数(sql中cast函数用法)
  5. 到底什么是 IoC 和 AOP,区别是什么?一文搞懂
  6. 华为鸿蒙搭载芯片,华为P50系列搭载麒麟9000系列芯片:提供鸿蒙和安卓两种版本...
  7. 字符串的分类统计的两种方法(C语言)
  8. ClipboardUtils 剪切板工具类
  9. 爱奇艺谢丹铭:用AI让创作者提升效率,让消费者简单快乐
  10. Docker环境部署