Java Static关键字引发的思考
2016-06-14 10:52
344 查看
看技术博客介绍static关键字时,想起了之前的面试问题:static函数的特点。当时只说了可以在不创建对象的前提下使用类名直接调用,并没有举例子。总结面经时才想起本可以举main函数和单例模式的例子。
main函数:作为java程序的入口,此时没有创建任何类的任何对象,所以他只能是static,用类名直接调用从而执行此java程序。
单例模式:单例类只能有一个实例对象、单例类必须自己创建唯一的实例并提供给其他方法使用。所以单例类中构造函数是私有private的,还有一个用于产生唯一实例的方法,显然,该方法必须是static静态方法。
面试时还问到:java是解释型语言,编译形成字节码之后,类加载器加载class文件,之后运行,期间还会编译吗?所以,今天看了一系列博文,整理java代码从编译到运行整个过程的原理。
事实上,java运行过程中,类加载器加载字节码,之后JVM执行引擎执行字节码,因为是解释一句,执行一句,速度会很慢,所以JVM中有JIT编译器以及代码缓存,JIT将频繁执行的方法形成的汇编代码保存在代码缓存中,使用时直接执行即可。
命令行编译运行java程序:java教程之java程序编译运行图解(java程序运行) Java
命令行编译和运行
Java类加载的原理:Java类加载原理解析 Three
principles of Classloader operation(Classloader操作三原则) Java类加载器(Class Loader)之详解
java代码的编译和执行:Java代码编译和执行的整个过程
java中的main函数:java中main函数解析
JIT编译器:小谈JVM及JIT
main函数:作为java程序的入口,此时没有创建任何类的任何对象,所以他只能是static,用类名直接调用从而执行此java程序。
单例模式:单例类只能有一个实例对象、单例类必须自己创建唯一的实例并提供给其他方法使用。所以单例类中构造函数是私有private的,还有一个用于产生唯一实例的方法,显然,该方法必须是static静态方法。
面试时还问到:java是解释型语言,编译形成字节码之后,类加载器加载class文件,之后运行,期间还会编译吗?所以,今天看了一系列博文,整理java代码从编译到运行整个过程的原理。
事实上,java运行过程中,类加载器加载字节码,之后JVM执行引擎执行字节码,因为是解释一句,执行一句,速度会很慢,所以JVM中有JIT编译器以及代码缓存,JIT将频繁执行的方法形成的汇编代码保存在代码缓存中,使用时直接执行即可。
命令行编译运行java程序:java教程之java程序编译运行图解(java程序运行) Java
命令行编译和运行
Java类加载的原理:Java类加载原理解析 Three
principles of Classloader operation(Classloader操作三原则) Java类加载器(Class Loader)之详解
java代码的编译和执行:Java代码编译和执行的整个过程
java中的main函数:java中main函数解析
JIT编译器:小谈JVM及JIT
相关文章推荐
- java基础--Collections.sort的两种用法
- java javac命令详解
- JAVA 8-学习笔记(一)
- java回顾——final关键字的作用
- Java内部类
- JDK、JRE和JVM三者之间关系
- ubuntu16.04 安装 eclipse
- 个人学习-java-springmvc
- 对象初始化过程
- 环境变量中系统变量和用户的环境变量及在配置JAVA环境变量时两着有什么区别
- 百度地图java.lang.NoSuchMethodException:startScan解决
- MyEclipse优化1--光标乱跳、卡死、启动加速、自动拼全、检查拼写
- 计算回文子序列(Java语言,穷举法,递归)
- java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
- Spring源码分析——AOP实现(1)
- MyEclipse下打开ftl文件
- [LeetCode][13]Roman to Integer解析 罗马字符转int类型关于栈的常数实现-Java实现
- 快捷键汇总(VS2013,PHP,MyEclipse,Java)
- 关于马士兵的java教学视频
- Spring 对事务管理的支持