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));
}
}
java基础 static的更多相关文章
- java基础—static关键字
一.static关键字
- Java基础--static关键字
不管是平时阅读源代码,还是笔试.面试中,static关键字还是经常被问道,这篇文章主要来重新复习一下该关键字. 一.static用途 static方便在没有创建对象的时候调用方法或者变量. stati ...
- java基础--static关键字的使用
一.static关键字的作用 使类成员完全独立于该类的任何对象.通常情况下,类成员必须通过它的类的对象访问,但是被static修饰的成员,能够被自己访问,而不必引用特定的实例. 一旦一个成员被声明为s ...
- Java基础static的探究
static方法就是没有this的方法. 在static方法内部不能调用非静态方法, 但是在非静态的方法中可以调用静态的方法和变量. 而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用stati ...
- java基础——static keyword小节
static 用于修饰成员 修饰成员变量和成员函数 被修饰过的成员的特点: 1.随着类的载入而载入 2.优先于对象而存在 3.被全部对象所共享 4.能够直接被类名调用
- Java基础 static限定符的使用 以及【 static实现的 singleton(单例)设计模式】
static实现的 singleton(单例)设计模式 /** static实现的 singleton设计模式 , 使得一个类只能够创建一个static对象 */ 模板设计结构: package Co ...
- java基础之关键字static
在java当中有很多关键字,static便是其中一个,它很普通但我们经常需要运用到它,所以要了解static是非常有必要的. 鉴于本人知识结构有限,若有错误忘不吝赐教,甚为感谢. 一. ...
- Java基础系列--static关键字
原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/8477914.html 一.概述 static关键字是Java诸多关键字中较常使用的一个,从 ...
- java基础(五)-----关键字static
在Java中并不存在全局变量的概念,但是我们可以通过static来实现一个“伪全局”的概念,在Java中static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,当然也可以修饰代码块. ...
随机推荐
- 【BZOJ4016】[FJOI2014]最短路径树问题(点分治,最短路)
[BZOJ4016][FJOI2014]最短路径树问题(点分治,最短路) 题面 BZOJ 洛谷 题解 首先把最短路径树给构建出来,然后直接点分治就行了. 这个东西似乎也可以长链剖分,然而没有必要. # ...
- java8 Lambda 表达式和函数式接口快速理解
前言 接上篇文章 java8 新特性 由于上篇过于庞大,使得重点不够清晰,本篇单独拿出 java8 的 Lambda 表达式和函数式接口说明. Lambda 表达式 lambda 表达式其实就是使用了 ...
- jQuery浮窗图片到页面中间的代码
jQuery浮窗图片到页面中间的代码 <!doctype html> <html> <head> <meta charset="utf-8" ...
- C# Newtonsoft.Json.JsonReaderException:“Could not convert string to decimal:
使用Newtonsoft.Json,报以上错误,问题的原因是有"",把“”替换成null: 以前的json: [{"WengvNj":"df5c38c ...
- 安装ceres-solver win10遇到Eigen安装的问题
1.无法打开包括文件: “Eigen/Core”: 去github上下载最新的源码 2. "The Eigen/Array header does no longer exist in E ...
- 【微信小程序】抽象组件使用示例
1.配置页面路径 ./app.json { "pages":[ "pages/index/index", "pages/logs/logs&q ...
- android studio学习---怎么创建一个新的module并且再次运行起来(在当前的project里面)
选择File->new module出现的界面,选择android application选择下一步,就出现了和刚刚一样的流程了,一步步创建完成即可. 我们看到多了个secondAndroid的 ...
- sigprocmask阻塞信号
有时候不希望在接到信号时就立即停止当前执行,去处理信号,同时也不希望忽略该信号,而是延时一段时间去调用信号处理函数 1. 信号阻塞和忽略信号的区别 操作系统在信号被进程解除阻塞之前不会将信号传递出去, ...
- Maven项目配置Logback输出JSON格式日志
最近,项目提出需求,日志需要固定输出为JSON格式,以便后端Flink程序解析. 项目背景 项目为简单的Maven项目,日志由Filebeat采集,因此不需要配置输出至Logstash. 下面为pom ...
- idea使用过程中的一些常见问题,做个笔记
:当实现这个接口方法时重载是不允许的. 首先我相信我的代码肯定没问题,因为我实现的接口确实有这个方法.在编程阶段就提示这个错误,于是我有理由相信应该是编译错误!通过google,解决办法so easy ...