在Java类中声明属性、方法和内部类时,可使用关键字static作为修饰符,static标记的属性和方法可以由整个类进行共享,因此static修饰的属性称为类成员或者称为类方法;static修饰的方法称为类方法或者静态方法;

  static修饰的语句块在其所属的类中被载入JVM时被执行一次,一般用于一次性的初始化的工作;而非static语句块是每创建一个对象就执行一次,其运行时机实在对象分配空间及实例默认和显示初始化之后和执行构造方法体中语句之前;

/**
*static 操作使用
*@author lihaiming
*Email:912547587@qq.com
*/

public class TestStatic{
//成员变量,在每个对象中各自有一份;
private int i=23;
//类变量,全局中只有一份;
private static int j=32;

public static void method1(){
//i=200;错误!静态方法中不能直接调用变量
new TestStatic().i=90;
j=34;
int k=2;
}
public static void main(String[] args){
TestStatic ts = new TestStatic();
System.out.println("ts.i="+ts.i);
System.out.println("j="+j);
System.out.println("ts.j="+ts.j);
System.out.println("TestStatic.j="+TestStatic.j);
System.out.println("------------------");

TestStatic ts1 = new TestStatic();
TestStatic ts2 = new TestStatic();

ts1.i=100;
ts2.j=200;

System.out.println("j="+j);
System.out.println("ts.j="+ts.j);
System.out.println("ts.j="+ts1.j);
System.out.println("ts2.j="+ts2.j);

System.out.println("------------------");

System.out.println("ts.i="+ts.i);
System.out.println("ts1.i="+ts1.i);
System.out.println("ts2.i="+ts2.i);
System.out.println("------------------");
method1();
System.out.println("ts.i="+ts.i);
System.out.println("j="+j);
Li.i=100;
Li l1 = new Li();
Li l2 = new Li();

}

}

class Li{
static int i=20;
int j=30;
//每创建一个对象就执行非static初始化语句块;
{

j=50;
System.out.println("i="+i);
System.out.println("j="+j);
}
//最先调用static
static{
System.out.println("i="+i);
System.out.println("A Static!");
}
}

程序结果:

ts.i=23
j=32
ts.j=32
TestStatic.j=32
------------------
j=200
ts.j=200
ts.j=200
ts2.j=200
------------------
ts.i=23
ts1.i=100
ts2.i=23
------------------
ts.i=23
j=34
i=20
A Static!
i=100
j=50
i=100
j=50

JAVA基础知识(2)--关键字static的使用的更多相关文章

  1. Java基础知识整理之static修饰属性

    static 关键字,我们在开发用的还是比较多的.在<Java编程思想>有下面一段话 static 方法就是没有 this 的方法.在 static 方法内部不能调用非静态方法,反过来是可 ...

  2. 大话java基础知识一之为什么java的主函数入口必须是public static void

    为什么java的主函数入口必须是public static void main (String[] args); 很多写javaEE好几年的程序员经常会记得java的主函数就是这么写的,但实际上为什么 ...

  3. Java基础知识(壹)

    写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...

  4. java基础知识小总结【转】

    java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...

  5. 学习android学习必备的java基础知识--四大内部类

    学习android必备的java基础知识--四大内部类 今天学习android课程,因为我的主专业是JAVA,但是兴趣班却有这其他专业的同学,学习android 需要具备一些java的基础知识,因此就 ...

  6. Java 基础知识(一)

    Java基础知识篇: 一.关键字解释 1. final:修饰非抽象类,非抽象方法和属性, 以及修饰方法参数,代表“无法改变的”.出于对设计或者效率的考虑使用该关键字. final类无法被继承,fina ...

  7. java 基础知识三 java变量

    java  基础知识 三 变量 1.作用域 {} 包围起来的代码 称之为代码块,在块中声明的变量只能在块中使用 2.常量 就是固定不变的量,一旦被定义,它的值就不能再被改变. 3.变量 变量必须在程序 ...

  8. Java 基础知识总结

    作者QQ:1095737364    QQ群:123300273     欢迎加入! 1.数据类型:  数据类型:1>.基本数据类型:1).数值型: 1}.整型类型(byte  8位   (by ...

  9. 学习Spring必学的Java基础知识(1)----反射(转)

    引述要学习Spring框架的技术内幕,必须事先掌握一些基本的Java知识,正所谓"登高必自卑,涉远必自迩".以下几项Java知识和Spring框架息息相关,不可不学(我将通过一个系 ...

  10. 学习Spring必学的Java基础知识(1)----反射

    引述要学习Spring框架的技术内幕,必须事先掌握一些基本的Java知识,正所谓"登高必自卑,涉远必自迩".以下几项Java知识和Spring框架息息相关,不可不学(我将通过一个系 ...

随机推荐

  1. I/O模型浅析

    引入 首先来说一下进程: 进程在就是一段执行中的代码,他是由一条条指令和数据组成的一个具有生命周期的有头有尾的实体. 进程根据权限大体上可以分为两类:用户进程 和 内核进程. 这两者的主要区别在于权限 ...

  2. Nginx反向代理、CORS、JSONP等跨域请求解决方法总结

    由于 Javascript 同源策略的存在使得一个源中加载来自其它源中资源的行为受到了限制.即会出现跨域请求禁止. 通俗一点说就是如果存在协议.域名.端口或者子域名不同服务端,或一者为IP地址,一者为 ...

  3. SQL CRUD 简单查询

    identity 自增长 primary key 主键 unique 唯一键 not null 非空 references 外键(引用) 1.删除表 drop table Student 2.修改表 ...

  4. asp.net权限认证:OWIN实现OAuth 2.0 之客户端模式(Client Credential)

    asp.net权限认证系列 asp.net权限认证:Forms认证 asp.net权限认证:HTTP基本认证(http basic) asp.net权限认证:Windows认证 asp.net权限认证 ...

  5. Java中Redis简单入门

    Redis是一个开源的,先进的 key-value 存储可用于构建高性能,可扩展的 Web 应用程序的解决方案. Redis官方网网站是:http://www.redis.io/,如下: Redis ...

  6. 通过web sql实现增删查改

    <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...

  7. java socket tcp(服务器循环检测)

    刚才看了下以前写了的代码,tcp通信,发现太简单了,直接又摘抄了一个,运行 博客:http://blog.csdn.net/zhy_cheng/article/details/7819659 优点是服 ...

  8. Tomcat8 + Redis实现session集中管理

      环境准备:   部署两台 tomcat 8.0   安装 redis 服务器   下载工具库( commons-pool2-2.3.jar.jedis-2.7.2.jar .改良版的 tomcat ...

  9. Omi命令行界面omi-cli发布

    原文链接:https://github.com/AlloyTeam/omi/blob/master/docs/deep_in/cn_omi-cli.md 写在前面 通常认为,命令行界面(CLI)没有图 ...

  10. NSKeyedArchiver/NSKeyedUnarchiver归档应用(缓存实现)

    NSKeyedUnarchiver : 从二进制流读取对象; NSKeyedArchiver :把对象写到二进制流中去. 要实现对数据模型的归档,需要我们实现NScoding协议,(NScoping) ...