这个博主写的总结很好,这里附上链接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. 阿里全资收购一家核心技术公司,中科院大牛带队加盟
  3. java 大数据处理一
  4. AB测试:基础概念、应用场景及入门指南
  5. Error与RuntimeException
  6. 无法停止‘通用卷’设备的解决方法
  7. c语言课程结束,【计算机】程序设计——C语言基础秋季学期课程圆满结束
  8. 真正能成功的人,不见得是最聪明的,也小见得是学历最高的,而是最能面对问题、锲而不舍的人。...
  9. 设计模式 笔记 命令模式 Command
  10. django获取ip与数据重复性判定
  11. 第4关:HDFS-JAVA接口之删除文件
  12. DirectX11 SDK 例程报错解决方法
  13. 39.伪造重定向ICMP数据包
  14. c语言文件输入调查结论,C语言选修实验报告_调查报告_表格模板_实用文档.doc
  15. 如何用matlab做参数估计,参数估计的MATLAB实现
  16. 写在今年(2022)清明节前
  17. HTTPS是如何保证安全的
  18. 不愧是阿里P8!后端程序员必备的Linux基础知识+常见命令
  19. 行人重识别基础(一)
  20. 操作系统-Linux内核系列

热门文章

  1. flash咏鹅课件_咏鹅flash动画课件下载
  2. Linux文本撤销修改,5个'chattr'命令使重要文件在Linux中不可更改(不可更改)
  3. linux 安装jeakens_Chapter 2. OpenSSL的安装和配置学习笔记
  4. 『设计模式』以为是个王者,后来班主任来了!设计模式--二五仔的观察者模式
  5. 51NOD 1212 无向图最小生成树
  6. QT 文字字体和颜色设置
  7. [机器学习] XGBoost on Spark 分布式使用完全手册
  8. 通过pxe从网络启动安装Windows XP
  9. 【语义分割】PSPNet:Pyramid Scene Parsing Network
  10. PHP执行外部程序的方法