java中static详解
这个博主写的总结很好,这里附上链接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详解相关推荐
- Java中super详解
目录 Java中super详解 super的作用: 1. 通过super可以访问父类的构造方法 2. 通过super可以访问父类的属性(非私有) 3. 通过super可以访问 ...
- Java中CAS详解
转载自 Java中CAS详解 在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁 锁机制存在以下问题: (1)在多线程竞争下,加锁.释放锁会导致比较多的上下文切换 ...
- Java中LinkedList详解
Java中LinkedList详解 LinkedList底层是双向链表 单向链表 双向链表 LinkedList新增的方法 主要增加了针对头结点与尾结点进行操作的方法, 即针对第一个元素和最后一个元素 ...
- java中匿名内部类详解_java 中匿名内部类的实例详解
搜索热词 java 中匿名内部类的实例详解 原来的面貌: class TT extends Test{ void show() { System.out.println(s+"~~~哈哈&q ...
- java中implement_详解JAVA中implement和extends的区别
详解JAVA中implement和extends的区别 extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承,Java中不支持多重继承,但是可以用接口来实 ...
- java中final详解_Java中final用法与详解
Java中final用法与详解 final作为Java中经常用到的关键字,了解final的使用方法是非常有必要的.这里从final关键字在数据域.方法和类中三个方面分析final关键字的主要用法. f ...
- java中getclass_详解java中this.getClass()和super.getClass()的实例
详解java中this.getClass()和super.getClass()的实例 前言: 遇到this.getClass()和super.getClass()的返回值感到疑惑,经过探索豁然开朗. ...
- java中priorityqueue_详解JAVA中priorityqueue的具体使用
Java中PriorityQueue通过二叉小顶堆实现,可以用一棵完全二叉树表示.本文从Queue接口函数出发,结合生动的图解,深入浅出地分析PriorityQueue每个操作的具体过程和时间复杂度, ...
- java中File详解
#第六部分:IO流 ##1. File类的作用 File类是Java.io包中唯一代表磁盘我呢见本身的对象.File类定义类一些与平台无关的方法 来操作文件,File类主要用来获取或处理与磁盘文件相关 ...
最新文章
- 简述事件接口与事件适配器的联系与区别_设计模式——适配器模式
- zigzag扫描matlab,ZIGZAG扫描的MATLAB实现 | 学步园
- Nginx反向代理,负载均衡,redis session共享,keepalived高可用
- 物联网中的无线通信模块到底是什么
- “精耕细作”桌面云市场的锐捷,重磅发布三擎云桌面
- 有家创业公司花重金要请我当CTO?!
- opencv 视频操作入门
- UVa 253 Cube paiting
- oracle用户删除了可以恢复吗,恢复用户误删除的没备份的Oracle数据文件
- C语言 输出螺旋数组
- php全站文章搜索,phpspider在列表页生成内容采集url.(又名:如何通过搜狗搜索关键词,爬取新浪新闻)...
- 折腾修改SQLCipher静态库的符号表
- 手写简单的HashMap(jdk1.7)
- Kindle电子书的资源汇总
- codeforces 645F Cowslip Collections
- modbus串口调试助手 MODBUS调试 智能仪表通讯必备软件 RS485串口通讯
- MySQL临时表创建及旧表建新表
- 小米TWRP格式化data无限重启变砖解决办法
- c#联合vp开发软件-day1
- 论坛复制乱码消除小程序
热门文章
- 计算机二级考试需要怎么备考,计算机二级ms office应该怎么备考 考试内容是什么...
- Git工作原理及功能结构
- SQL语句(DQL)
- xampp运行php中文乱码,dvwa+xampp搭建显示乱码的问题及解决方案
- 【图像超分辨率】End-to-End Super-Resolution for Remote-Sensing Images Using an Improved Multi-Scale Residual
- 图论--LCA--树上倍增法(在线)
- Online Object Tracking Benchmark(OTB)目标跟踪系统评估方式
- pycharm中如何调用Anoconda的库
- 无监督学习 k-means_监督学习-它意味着什么?
- azure_Azure ML算法备忘单