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. codevs2618核电站问题

    /* 因为m为连续放的个数 所以状态要包括这个条件 定义状态:f[n][m]表示第n个坑连续放了m个 转移:分两种 1. 第x个坑 放 即m>=1 则 f[x][k]=f[x-1][k-1] 2 ...

  2. c#将Excel数据导入到数据库的实现代码(OleDb)

    sing System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web ...

  3. Oracle存储过程及函数

    1.在Oracle中,存储过程包括三部分组成:定义部分.执行部分.和异常处理部分(即例外) eg1:输入员工编号,查询员工的姓名和薪资 create or repalce  procedure myp ...

  4. How do I size a UITextView to its content?

    UITextView 自适应高度,搬来一篇stack上的:   Is there a good way to adjust the size of a UITextView to conform to ...

  5. Objective-C中的内存管理——手动内存管理

    一.引用计数(retainCount) 1.内存的申请 alloc和new是Objective-C语言中申请内存的两种常用方式. 当我们向一个类对象发送一个alloc消息的时候,其会向操作系统在堆中申 ...

  6. jsp中button传值

    onclick=location.href("linker.jsp?custno="+ from1.custno.value)或者onClick ="a()" ...

  7. 【USACO 1.3.2】修理牛棚

    [描述] 在一个夜黑风高,下着暴风雨的夜晚,farmer John的牛棚的屋顶.门被吹飞了. 好在许多牛正在度假,所以牛棚没有住满. 牛棚一个紧挨着另一个被排成一行,牛就住在里面过夜. 有些牛棚里有牛 ...

  8. magnific-popup 一款优秀, 多种功能于一身的弹出层jQuery插件.

    功能很强大:灯箱, 画廊, 放大图片, 弹出Youtube GoogleMap, ajax读取popup等等文档:http://dimsemenov.com/plugins/magnific-popu ...

  9. JavaScript设计模式之建造者模式

    一.建造者模式模式概念 建造者模式可以将一个复杂的对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示.也就是说如果我们用了建造者模式,那么用户就需要指定需要建造的类型就可以得到它们,而具体 ...

  10. 19 Remove Nth Node From End of List(去掉链表中倒数第n个节点Easy)

    题目意思:去掉链表中倒数第n个节点 思路:1.两次遍历,没什么技术含量,第一次遍历计算长度,第二次遍历找到倒数第k个,代码不写了   2.一次遍历,两个指针,用指针间的距离去计算. ps:特别注意删掉 ...