static关键字
对一些公共使用的数据,比如是饭店筷子,不可能说每个人去饭店吃饭的时候自带一双筷子,饭店的筷子对于进店吃饭的对象都是公共的;

静态变量,跟其他变量不同的是,它是与类关联的,其他变量则是属于某个对象,每一个对象就会有这个数据的拷贝;

被static 修饰的变量都是共享的,修改属性的值会全局改变.访问静态变量可以通过"类名.属性来访问";

static也可以描述方法,称为静态方法,访问静态方法可以通过"类名.方法名"来访问,不需要创建对象

*注意在普通方法里面不能用static修饰变量,比如如下语句:

public void xxx{
static int a=; //报错
}

         如下通过代码体现静态关键字的特性,声明静态变量和普通变量分别对它们进行赋值操作来体现静态的特性.

 public class staticdemo {
public int a = 1; // 非static属性,每个实例都是独享的.
public static int b = 2; static{ System.out.println("static block"); } public void foo1()
{
System.out.println("non-static");
} public static void foo2()
{
System.out.println("static method");
} public static void main(String[] args) { staticdemo sd = new staticdemo();
System.out.println(sd.a); System.out.println(sd.b);
System.out.println(staticdemo.b); staticdemo sd1 = new staticdemo();
staticdemo sd2 = new staticdemo(); sd1.a = 2;
sd2.a = 3;
System.out.println("sd1.a=" + sd1.a);
System.out.println("sd2.a=" + sd2.a); System.out.println("修改sd1.b=3,sd2.b=4前,sd1.b=" + staticdemo.b
+ " sd2.b=" + staticdemo.b); sd1.b = 3;
sd2.b = 4;
System.out.println("修改sd1.b=3,sd2.b=4后,sd1.b=" + staticdemo.b
+ " sd2.b=" + staticdemo.b); }
}

通过改变静态变量的值,可以看到两个对象的值都改变了.其实该变量作为类变量,所有对象只是共享一个值,通过改变这个变量的值,其他对象访问它自然也是访问到改变之后的值;

运行结果:
static block
1
2
2
sd1.a=2
sd2.a=3
修改sd1.b=3,sd2.b=4前,sd1.b=2 sd2.b=2
修改sd1.b=3,sd2.b=4后,sd1.b=4 sd2.b=4

__________________________________________________________________________________________________________________________

只要是被static修饰的属性,在调用含有静态资源的类的时候,如果静态还没有加载过的时候,就先执行静态资源(除了方法),
等加载完静态在轮到其他资源.
(参考类的执行过程)

所以这里还要注意一个问题:

比如上面的例子,访问成员a使用如下代码时

    public static void main(String[] args) {

        //staticdemo sd = new staticdemo();
//System.out.println(sd.a);     System.out.println(staticdemo.a); //错误代码

运行时就会报错,原因是因为没用static修饰的方法/属性,不能通过(类名.属性)的方式来访问,一定要先创建实例,再用变量名.属性来访问.

static关键字使用的更多相关文章

  1. 浅谈Static关键字

    1.使用static关键字声明的属性为全局属性 未使用static关键字指定city之前,如果需要将Tom,Jack,Mary三人的城市均改成Beijing,需要再次声明三次对象的city为Beiji ...

  2. (转)Java中的static关键字解析

    转载: http://www.cnblogs.com/dolphin0520/p/3799052.html 一.static关键字的用途 在<Java编程思想>P86页有这样一段话: &q ...

  3. PHP的final关键字、static关键字、const关键字

    在PHP5中新增加了final关键字,它可以加载类或类中方法前.但不能使用final标识成员属性,虽然final有常量的意思,但在php中定义常量是使用define()函数来完成的. final关键字 ...

  4. Java Static关键字详解

    提起static关键字,相信大家绝对不会陌生,但是,想要完全说明白,猛的一想,发现自己好像又说不太明白... ...比方说,昨天被一个同学问起的时候... ... 当然,不是所有人都像我一样学艺不精的 ...

  5. 关于Java中的static关键字

    Java中的 static 关键字,确实是一个关键的字(key word),今天就来总结一下它的用法,说说为什么关键. Java中的 static 关键字主要是用来做内存管理的.理解了这句话才能够比较 ...

  6. Java中的static关键字解析

    Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键 ...

  7. c++中static关键字的用法总结

    类中的静态成员真是个让人爱恨交加的特性.我决定好好总结一下静态类成员的知识点,以便自己在以后面试中,在此类问题上不在被动. 静态类成员包括静态数据成员和静态函数成员两部分. 一 静态数据成员: 类体中 ...

  8. static关键字

    static关键字 static是静态修饰符,一般修饰成员.被static修饰的成员属于类,不属于单个这个类的某个对象. 1.static关键字的特点 a:随着类的加载而加载 b:优先于对象存在 (还 ...

  9. C++中的static关键字的总结

    C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static.前者应用于普通变量和函数,不涉及类:后者主要说明static在类中的作用. 1.面向过程设计中的st ...

  10. (转)Java中的static关键字解析

    转自http://www.cnblogs.com/dolphin0520/p/3799052.html 一.static关键字的用途 在<Java编程思想>P86页有这样一段话: “sta ...

随机推荐

  1. 码表 ASCII Unicode GBK UTF-8

    2017-1-3 [ASCII]一个字节(7位,128个字符,2个16进制) 不包含中文 ASCII(American Standard Code for Information Interchang ...

  2. codevs 1200 同余方程 (Extend_Eulid)

    /* 扩展欧几里得 ax%b==1 -> ax-by==1 求不定方程的一组解 使x为最小正整数解 */ #include<iostream> #include<cstdio& ...

  3. Wpf控件ListBox使用实例2

    2.Xaml绑定选择结果 <StackPanel Orientation="Vertical"> <TextBlock Margin="10,10,10 ...

  4. Iframe之间及iframe与父窗体之间值的传递

    方法一:ScriptManager.RegisterClientScriptBlock(this,typeof(Page), "NoInformation", "wind ...

  5. 哥的第一个Jquery程序

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs& ...

  6. MySQL 管理

    MySQL 管理 启动及关闭 MySQL 服务器 首先,我们需要通过以下命令来检查MySQL服务器是否启动: ps -ef | grep mysqld 如果MySql已经启动,以上命令将输出mysql ...

  7. ajax页面数据的传递

    在上一篇文章中,简单提到了ajax的工作流程,那么在这里我们就得实战一回了,真正将ajax的用途展现出来,这一整套流程就是在页面上触发一个ajax事件,然后发送请求,紧接着到数据库读取数据,返回值,然 ...

  8. .NET,你真的 知道了吗

    搞清自己是干什么的 有人问你是做什么的,回答是:"我是做,NET开发的",有的人也会问:"那.NER.是什么?"刚开始我认为是一个开打工具,后认为是一个平台,一 ...

  9. js学习笔记之:时间(二)

    今天来了解一下js中定时器的两种用法.js中包括2种定时器,分别是:           间隔型定时器:setInterval(开)    clearInterval (关)            延 ...

  10. memcache 数据库信息存储到数据库减少IO 操作

    在实际应用中,通常会把数据库查询的结果集保存到 memcached 中,下次访问时直接从 memcached 中获取,而不再做数据库查询操作,这样可以在很大程度上减轻数据库的负担.通常会 将 SQL ...