Java中static静态关键字的使用
我们可以基于一个类创建多个对象,每个对象都拥有自己的成员,所有成员变量的值是根据对象而存在的,有些时候我们希望一个类的所有对象共享一个成员,这就用到了static静态关键字
被静态关键字修饰的成员属于静态成员,它属于整个类所有,而并不仅仅是一个对象中的成员所共享,当系统第一次使用该类时,就会为其分配内存空间,直到该类被销毁是才进行资源回收,静态成员也有自己特有的访问方法
static可以修饰变量、方法、代码块
1、静态变量
因为局部静态变量和局部变量的使用方法一样,直接使用即可,所以对于类中定义的静态成员变量,非静态方法可以直接通过变量名访问,不用考虑其他,对于静态方法,最典型的就是public static void main(String[] args)这个入口方法,如果在这样的静态方法内部访问,需要用"类名.静态变量名"的方式进行访问,比如Hello.abc当然也可以先实例化对象,然后通过对象.静态变量名的方式来访问,但是还是推荐使用类名.静态变量名进行访问
2、静态方法
上面说了静态方法内部访问静态成员变量的方法,并且静态方法可以直接访问本类的静态变量和静态方法,不用加任何修饰,访问其他类则推荐使用类名.成员名的方式访问;那么访问普通成员变量呢?不能直接访问,应该先实例化对象,然后通过对象.成员变量名的方式进行访问,但是普通方法可以直接访问静态方法和静态变量;同理静态方法不能直接访问普通方法,也需要实例化对象.方法,这样的方式来访问普通方法。
3、静态代码块
Java在初始化变量的时候可以使用public String name = "abc";这样的方法来初始化变量的值,也可以通过下面代码块实现:
public class Hello {
public String name; //定义成员变量
{ //初始化块赋值
name = "abc";
}
}
可以使用多个初始化块,当创建类的实例时,会依次执行这些代码块,通过static关键字修饰的代码块称为静态代码块;
静态代码块的初始化内容只能执行一次,再次被实例化时将不会被执行;
静态代码块中只能初始化静态变量,不能放置普通变量;
我们可以看个例子:
public class Hello {
int num1;
int num2;
static int num3;
public Hello(){
num1 = 30;
System.out.println("通过构造方法给num1赋值");
}
{
num2 = 60;
System.out.println("通过初始化块给num2赋值");
}
static {
num3 = 90;
System.out.println("通过静态初始化块给num3赋值");
} public static void main(String[] args){
Hello he = new Hello();
System.out.println("num1:" + he.num1);
System.out.println("num2:" + he.num2);
System.out.println("num3:" + num3);
Hello he1 = new Hello();
}
}
这个输出什么呢?可能输出和我们想象的有点相反,正确输出如下:
通过静态初始化块给num3赋值
通过初始化块给num2赋值
通过构造方法给num1赋值
num1:30
num2:60
num3:90
通过初始化块给num2赋值
通过构造方法给num1赋值
根据上面的输出结果可以看出,在实例化对象时静态初始化块最先执行,然后执行普通初始化块,最后才执行构造方法;并且由于静态初始化块只在类被加载时执行一次,所以第二次实例化对象时没有被执行,这就是静态初始化块的执行顺序和特点
最后总结一点静态和普通就好像是两个权限,普通的好像权限高一些,可以直接操作静态,但是静态要操作普通的则要复杂一些,需要实例化才可以
Java中static静态关键字的使用的更多相关文章
- php中static 静态关键字
一直依赖对于php中static关键字比较模糊,只是在单例模式中用过几次.上网查了查,没有找到很全的介绍,自己总结一下. 根据使用位置分为两部分 1.函数体中的静态变量 2.类中的静态属性和方法 1 ...
- Java之static静态关键字详解|final关键字详解
前言 在Java语言中,static表示"静态"的意思,使用场景可以用来修饰成员变量和成员方法,当然也可以是静态代码块.static的主要作用在于创建独立于具体对象的域变量或者方法 ...
- php中static静态关键字的使用
php中除了常规类和方法的使用,访问控制之外,还有静态关键字static,静态变量可以是局部变量也可以是全局变量,当一个程序段执行完毕时,静态变量并没有消失,它依然存在于内存中,下次在定义时还是以前的 ...
- php中static静态关键字的使用方法和应用场景
php中除了常规类和方法的使用,访问控制之外,还有静态关键字static,静态变量可以是局部变量也可以是全局变量,当一个程序段执行完毕时,静态变量并没有消失,它依然存在于内存中,下次在定义时还是以前的 ...
- java中static关键字的作用
java中static关键字主要有两种作用: 第一:为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关. 第二,实现某个方法或属性与类而不是对象关联在一起 简单来说,在Java语言中,s ...
- 关于Java中的final关键字
Java中的final关键字是用来限制用户行为的,说白了,就是用来限制我们这些程序员的.final可以用来修饰:变量.方法.类. 1)Java final variable final用来修饰变量时, ...
- Java之Static静态修饰符详解
Java之Static静态修饰符详解 Java之Static静态修饰符详解 一.特点 1.随着类的加载而加载,随着类的消失而消失,生命周期最长 2.优先于对象存在 3.被所有类的对象共享 4.可以直接 ...
- Java中static、this、super、final的用法
一. static 请先看下面这段程序: public class Hello{public static void main(String[] args){//(1)System. ...
- Java中static的用法,初始化块
使用 Arrays 类操作 Java 中的数组语法: Arrays.sort(数组名); 可以使用 sort( ) 方法实现对数组的排序,只要将数组名放在 sort( ) 方法的括号中,就可以完成对该 ...
随机推荐
- Java基础-JVM内存回收
Sun的JVMGenerationalCollecting(垃圾回收)原理是这样的:把对象分为年青代(Young).年老代(Tenured).持久代(Perm),对不同生命周期的对象使用不同的算法.( ...
- CSS布局自适应高度解决方法
这是一个比较典型的三行二列布局,每列高度(事先并不能确定哪列的高度)的相同,是每个设计师追求的目标,按一般的做法,大多采用背景图填充.加JS脚本的方法使列的高度相同,本文要介绍的是采用容器溢出部分隐藏 ...
- vbox下安装arch
http://tieba.baidu.com/p/2663744019 安装介质: archlinux-2013.10.01-dual.iso 准备存储设备: 警告: 磁盘分区有时会毁掉原分区内的数据 ...
- MySQL安装最后一步apply security settings错误
网上查了很久都是说删除各种文件什么的,直接百度apply security settings,说是mysql没卸载干净.不是的. 看日志发现 You must SET PASSWORD before ...
- CODEVS1995 || TYVJ1863 黑魔法师之门
P1863 [Poetize I]黑魔法师之门 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 经过了16个工作日的紧张忙碌,未来的人类终于收集到了足够的能源 ...
- Threat Risk Modeling Learning
相关学习资料 http://msdn.microsoft.com/en-us/library/aa302419(d=printer).aspx http://msdn.microsoft.com/li ...
- 与Java Web Service相关的若干概念(JAX-WS,JAX-RS)
WS ,JAX-WS ,JAX-RS,REST,Restlet,SOAP l JWS: 是指与webservice相关的J2EE(其实现在应该叫做Java EE吧)技术叫做 JWS(全称就是 jav ...
- easyui 动态修改窗口title
http://blog.csdn.net/liu251890347/article/details/39292307?utm_source=tuicool 使用easyui作为前台框架极大的节省了项目 ...
- MyEclipse2014中SVN的使用方法
MyEclipse中的SVN操作手册 1.导入项目 点击工具栏上的[File-Import],进入下图 (如果你的对话框中没有SVN这一条目,可能是因为你没有安装SVN插件,请安装完成后,在看这篇博客 ...
- CentOS 6.5(6.4)安装过程图文教程
CentOS 6.4是最新的出的系统,这里分享下安装教程,有些设置大部分教程没出现过,特分享下,方便需要的朋友 1.首先,要有一张CentOS 6.4的安装介质,使用介质启动电脑出现如下界面 界面说明 ...