这个博主写的总结很好,这里附上链接http://www.cnblogs.com/dolphin0520/p/3799052.html

下面进行简要总结:

在《Java编程思想》P86页有这样一段话:

“static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。”

方便在没有创建对象的情况下来进行调用(方法/变量)

1.被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。

2.static是不允许用来修饰局部变量

3.静态成员变量虽然独立于对象,但是不代表不可以通过对象去访问,所有的静态方法和静态变量都可以通过对象访问(只要访问权限足够)。

4.Java中的static关键字不会影响到变量或者方法的作用域

5.static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。

6.static块可以用来优化程序性能,是因为它的特性:只会在类加载的时候执行一次

7.static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。

下面是考题参考:

public class Test extends Base{static{System.out.println("test static");}public Test(){System.out.println("test constructor");}public static void main(String[] args) {new Test();}
}class Base{static{System.out.println("base static");}public Base(){System.out.println("base constructor");}
}

输出

base static
test static
base constructor
test constructor

View Code

转载于:https://www.cnblogs.com/zoulingjin/p/8634076.html

java中static详解相关推荐

  1. Java中super详解

    目录 Java中super详解 super的作用: 1.     通过super可以访问父类的构造方法 2.   通过super可以访问父类的属性(非私有) 3.        通过super可以访问 ...

  2. Java中CAS详解

    转载自  Java中CAS详解 在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁 锁机制存在以下问题: (1)在多线程竞争下,加锁.释放锁会导致比较多的上下文切换 ...

  3. Java中LinkedList详解

    Java中LinkedList详解 LinkedList底层是双向链表 单向链表 双向链表 LinkedList新增的方法 主要增加了针对头结点与尾结点进行操作的方法, 即针对第一个元素和最后一个元素 ...

  4. java中匿名内部类详解_java 中匿名内部类的实例详解

    搜索热词 java 中匿名内部类的实例详解 原来的面貌: class TT extends Test{ void show() { System.out.println(s+"~~~哈哈&q ...

  5. java中implement_详解JAVA中implement和extends的区别

    详解JAVA中implement和extends的区别 extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承,Java中不支持多重继承,但是可以用接口来实 ...

  6. java中final详解_Java中final用法与详解

    Java中final用法与详解 final作为Java中经常用到的关键字,了解final的使用方法是非常有必要的.这里从final关键字在数据域.方法和类中三个方面分析final关键字的主要用法. f ...

  7. java中getclass_详解java中this.getClass()和super.getClass()的实例

    详解java中this.getClass()和super.getClass()的实例 前言: 遇到this.getClass()和super.getClass()的返回值感到疑惑,经过探索豁然开朗. ...

  8. java中priorityqueue_详解JAVA中priorityqueue的具体使用

    Java中PriorityQueue通过二叉小顶堆实现,可以用一棵完全二叉树表示.本文从Queue接口函数出发,结合生动的图解,深入浅出地分析PriorityQueue每个操作的具体过程和时间复杂度, ...

  9. java中File详解

    #第六部分:IO流 ##1. File类的作用 File类是Java.io包中唯一代表磁盘我呢见本身的对象.File类定义类一些与平台无关的方法 来操作文件,File类主要用来获取或处理与磁盘文件相关 ...

最新文章

  1. 简述事件接口与事件适配器的联系与区别_设计模式——适配器模式
  2. zigzag扫描matlab,ZIGZAG扫描的MATLAB实现 | 学步园
  3. Nginx反向代理,负载均衡,redis session共享,keepalived高可用
  4. 物联网中的无线通信模块到底是什么
  5. “精耕细作”桌面云市场的锐捷,重磅发布三擎云桌面
  6. 有家创业公司花重金要请我当CTO?!
  7. opencv 视频操作入门
  8. UVa 253 Cube paiting
  9. oracle用户删除了可以恢复吗,恢复用户误删除的没备份的Oracle数据文件
  10. C语言 输出螺旋数组
  11. php全站文章搜索,phpspider在列表页生成内容采集url.(又名:如何通过搜狗搜索关键词,爬取新浪新闻)...
  12. 折腾修改SQLCipher静态库的符号表
  13. 手写简单的HashMap(jdk1.7)
  14. Kindle电子书的资源汇总
  15. codeforces 645F Cowslip Collections
  16. modbus串口调试助手 MODBUS调试 智能仪表通讯必备软件 RS485串口通讯
  17. MySQL临时表创建及旧表建新表
  18. 小米TWRP格式化data无限重启变砖解决办法
  19. c#联合vp开发软件-day1
  20. 论坛复制乱码消除小程序

热门文章

  1. 计算机二级考试需要怎么备考,计算机二级ms office应该怎么备考 考试内容是什么...
  2. Git工作原理及功能结构
  3. SQL语句(DQL)
  4. xampp运行php中文乱码,dvwa+xampp搭建显示乱码的问题及解决方案
  5. 【图像超分辨率】End-to-End Super-Resolution for Remote-Sensing Images Using an Improved Multi-Scale Residual
  6. 图论--LCA--树上倍增法(在线)
  7. Online Object Tracking Benchmark(OTB)目标跟踪系统评估方式
  8. pycharm中如何调用Anoconda的库
  9. 无监督学习 k-means_监督学习-它意味着什么?
  10. azure_Azure ML算法备忘单