java基础 static
参考文章:
静态导包:https://blog.csdn.net/u012338954/article/details/51010337
常量池:http://blog.sina.com.cn/s/blog_ee34aa660102wrk3.html
static:http://www.cnblogs.com/xrq730/p/4820992.html
静态变量和静态方法
static关键字最基本的用法是:
1、被static修饰的变量属于类变量,可以通过类名.变量名直接引用,而不需要new出一个类来
2、被static修饰的方法属于类方法,可以通过类名.方法名直接引用,而不需要new出一个类来
被static修饰的变量、被static修饰的方法统一属于类的静态资源,是类实例之间共享的,换言之,一处变、处处变。JDK把不同的静态资源放在了不同的类中而不把所有静态资源放在一个类里面,很多人可能想当然认为当然要这么做,但是是否想过为什么要这么做呢?个人认为主要有三个好处:
1、不同的类有自己的静态资源,这可以实现静态资源分类。比如和数学相关的静态资源放在java.lang.Math中,和日历相关的静态资源放在java.util.Calendar中,这样就很清晰了
2、避免重名。不同的类之间有重名的静态变量名、静态方法名也是很正常的,如果所有的都放在一起不可避免的一个问题就是名字重复,这时候怎么办?分类放置就好了。
3、避免静态资源类无限膨胀,这很好理解
静态方法能不能引用非静态资源?
不能,new的时候才会产生的东西,对于初始化后就存在的静态资源来说,根本不认识它
静态方法里面能不能引用静态资源?
可以,因为都是类初始化的时候加载的,大家相互都认识
非静态方法里面能不能引用静态资源?
可以,非静态方法就是实例方法,那是new之后才产生的,那么属于类的内容它都认识
静态变量的初始化时间
类加载的时候
静态变量的存储位置
常量池
编译时,在字节码文件(.class)中的class常量池中,此时,常量池中包括包括了关于类、方法、接口等中的常量,也包括字符串常量和符号引用
运行时,用于存放编译期生成的各种字面量和符号引用,和运行时动态生成的常量
静态块
static
{
System.out.println("Enter A.static block");
}
静态块里面的代码只执行一次,且只在初始化类的时候执行
静态资源的加载顺序是严格按照静态资源的定义顺序来加载的
静态代码块对于定义在它之后的静态变量,可以赋值,但是不能访问
静态代码块是严格按照父类静态代码块->子类静态代码块的顺序加载的,且只加载一次
静态类
静态类只有一种:静态嵌套类
http://www.cnblogs.com/amei0/p/5039648.html
静态导包
import static是JDK1.5之后的新特性,这两个关键字连用可以指定导入某个类中的指定静态资源,并且不需要使用类名.资源名,可以直接使用资源名
import static java.lang.Math.*;
public class A
{
public static void main(String[] args)
{
System.out.println(sin(2.2));
}
}
最新文章
- ElasticSearch集群未连接 无法发现节点(windows环境)以及windows环境下设置服务 不能自动启动的问题
- 为什么学习Ruby On Rails:
- Android-MediaProvider数据库模式
- ACM题目————列变位法解密
- Android中XML解析
- MSSQL学习笔记
- while循环的跳出
- intellij安装 配置 创建项目
- 化简复杂逻辑,编写紧凑的if条件语句
- 再来,LVS+KEEPALIVED
- 关于Go语言共享内存操作的小实例
- mac电脑批量解压android apk文件图形化工具--apkDecode
- 小记:css特殊性
- BZOJ 3112 Zjoi2013 防守战线 单纯形
- LaTeX入门教程
- JQuery笔记(二)jq常用方法animate()
- C++调用C#之C# COM控件
- [信息安全] 3.HTTPS工作流程
- python爬虫 - Urllib库及cookie的使用
- 从零开始学TensorFlow
热门文章
- .net持续集成cake篇之常见文件及路径操作
- EWS:邮箱的一个开放的接口服务
- .net文件上传的坑记录
- 常用的python内置模块
- SpringBoot静态资源文件
- 完整的房间类游戏解决方案AiJ
- IIS 6.0 cmd iisapp -a C:\WINDOWS\system32\iisapp.vbs不存在
- Tomcat服务器编码格式设置
- 【SSH错误】ssh_exchange_identification: read: Connection reset by peer
- TP框架命令行操作