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类主要用来获取或处理与磁盘文件相关 ...
最新文章
- 【每日一算法】最后一个单词的长度
- 阿里全资收购一家核心技术公司,中科院大牛带队加盟
- java 大数据处理一
- AB测试:基础概念、应用场景及入门指南
- Error与RuntimeException
- 无法停止‘通用卷’设备的解决方法
- c语言课程结束,【计算机】程序设计——C语言基础秋季学期课程圆满结束
- 真正能成功的人,不见得是最聪明的,也小见得是学历最高的,而是最能面对问题、锲而不舍的人。...
- 设计模式 笔记 命令模式 Command
- django获取ip与数据重复性判定
- 第4关:HDFS-JAVA接口之删除文件
- DirectX11 SDK 例程报错解决方法
- 39.伪造重定向ICMP数据包
- c语言文件输入调查结论,C语言选修实验报告_调查报告_表格模板_实用文档.doc
- 如何用matlab做参数估计,参数估计的MATLAB实现
- 写在今年(2022)清明节前
- HTTPS是如何保证安全的
- 不愧是阿里P8!后端程序员必备的Linux基础知识+常见命令
- 行人重识别基础(一)
- 操作系统-Linux内核系列
热门文章
- flash咏鹅课件_咏鹅flash动画课件下载
- Linux文本撤销修改,5个'chattr'命令使重要文件在Linux中不可更改(不可更改)
- linux 安装jeakens_Chapter 2. OpenSSL的安装和配置学习笔记
- 『设计模式』以为是个王者,后来班主任来了!设计模式--二五仔的观察者模式
- 51NOD 1212 无向图最小生成树
- QT 文字字体和颜色设置
- [机器学习] XGBoost on Spark 分布式使用完全手册
- 通过pxe从网络启动安装Windows XP
- 【语义分割】PSPNet:Pyramid Scene Parsing Network
- PHP执行外部程序的方法