1. static修饰的类只能为内部类,普通类无法用static关键字修饰。static修饰的内部类相当于一个普通的类,访问方式为(new 外部类名.内部类的方法() )。如下所示:

  1. public class OuterClass {
  2. public static class InnerClass{
  3. InnerClass(){
  4. System.out.println("============= 我是一个内部类'InnerClass' =============");
  5. }
  6. }
  7. }
  8.  
  9. public class TestStaticClass {
  10. public static void main(String[] args) {
  11. // 不需要new一个InnerClass
  12. new OuterClass.InnerClass();
  13. }
  14. }

 注:普通内部类的访问方式为 (外部类对象.new 内部类方法()

2.static修饰静态方法的访问方式为  (类名.方法名)

3.静态变量和实例变量的区别

static修饰的变量为静态变量,静态变量在内存中只有一份存储空间,静态变量不属于某个实例对象,被一个类中的所有对象所共享,属于类,所以也叫类变量,可以直接通过类名来引用。

实例变量属于某个固定对象所私有,实例变量的使用必须先创建一个类的实例,然后通过这个实例来引用使用。

  1. public class Person {
  2. int age = 10;
  3. static int age1 =11;
  4. }
  1. public class Test {
    public static void main(String[] args) {
    Person person = new Person();
    person.age=11;
    person.age1 = 12;
  2.  
  3. Person person1 = new Person();
  4.  
  5. System.out.println(person.age);
    System.out.println(person.age1);
    System.out.println(person1.age);
    System.out.println(person1.age1);
    }
    }
  1.  

结果:   11

    12

    10

    12

4.static关键字加载顺序问题:

静态变量和静态块的加载都是在类加载器加载完成以后加载到一块固定内存区,按代码编写的顺序依次加载。

  1. public class Father {
  2. static int i = 10;//先加载
  3. static {
  4. System.out.println("初始化父类的静态块...");
  5. }//后加载
  6. public Father() {
  7. System.out.println("初始化父类的构造方法...");
  8. }
  9. public static void speak(){
  10. System.out.println("静态方法...");
  11. }
  12. public void speak1(){
  13. System.out.println("普通方法...");
  14. }
  15. }
  16.  
  17. public class A extends Father {
  18. static {
  19. System.out.println("初始化子类静态块...");
  20. }
  21. public A(){
  22. System.out.println("初始化子类构造方法...");
  23. }
  24. public static void main(String[] args) {
  25. System.out.println(Father.i);
  26. Father a = new A();
  27. a.speak1();
  28. }
  29. }

输出结果:   初始化父类的静态块...

      初始化子类静态块...
      10
      初始化父类的构造方法...
      初始化子类构造方法...
      普通方法...

static关键字的作用(修饰类、方法、变量、静态块)的更多相关文章

  1. Java面向对象-static关键字、静态方法与普通方法、静态成员变量

    Java面向对象-static关键字.静态方法与普通方法 static关键字的基本作用:方便在没有创建对象的情况下来进行调用(方法/变量). 很显然,被static关键字修饰的方法或者变量不需要依赖于 ...

  2. Java第11次作业:什么是继承?继承的好处?什么是覆写?super()?构造代码块?子父类初始化顺序? 抽象类能用final声明吗?final关键字声明类 方法 变量以及全局常量?抽象类的构造方法?

    什么是继承? 继承是以父类为基础,子类可以增加新的数据或新的功能.子类不能选择性地继承父类.这种技术使得复用以前的代码非常容易. JAVA不支持多继承,单继承使JAVA的继承关系很简单,一个类只能有一 ...

  3. C#: static关键字的作用(转)

    C#: static关键字的作用   static意思是静态,可以修饰类.字段.属性.方法 标记为static的就不用创建实例对象调用了,可以通过类名直接点出来 static三种用法: 1.用于变量前 ...

  4. abstract关键字、final关键字、static关键字、访问修饰符详解

     abstract关键字.final关键字.static关键字.访问修饰符详解 abstract关键字: final关键字: static关键字: 访问修饰符:

  5. Java第7次作业:造人类(用private封装,用static关键字自己造重载输出方法)什么是面向对象程序设计?什么是类和对象?什么是无参有参构造方法 ?什么是封装?

    什么是面向对象程序设计? 我们称为OOP(Object  Oriented  Programming) 就是非结构化的程序设计 要使用类和对象的方法来进行编程 什么是类,什么是对象 类就是封装了属性和 ...

  6. Static和Final修饰类属性变量及初始化

    1.static修饰一个属性字段,那么这个属性字段将成为类本身的资源,public修饰为共有的,可以在类的外部通过test.a来访问此属性;在类内部任何地方可以使用.如果被修饰为private私有,那 ...

  7. java中static关键字的作用

    java中static关键字主要有两种作用: 第一:为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关. 第二,实现某个方法或属性与类而不是对象关联在一起 简单来说,在Java语言中,s ...

  8. 转:C#: static关键字的作用

    tatic意思是静态,可以修饰类.字段.属性.方法 标记为static的就不用创建实例对象调用了,可以通过类名直接点出来 static三种用法: 1.用于变量前,表示每次重新使用该变量所在方法.类或自 ...

  9. 【转载】Static 关键字的作用

    原始日期:2016-07-16 17:53   一   普通的static关键字 1.  静态全局变量 在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量.我们先举一个静态全局变 ...

随机推荐

  1. 本地git工作流

    一:add后的回退代码 1.在原有已经的基础上,又新增加了一个小需求 经过修改,添加到暂存区. 这个时候,会存在modified文件: 2.然后,又说需求不需要存在了 可以进行丢弃 在reset后,需 ...

  2. Android 多用户

    下面几篇介绍的不错,推荐看看 https://www.jianshu.com/p/3ad2163f7d34   Android 9.x 多用户机制 1 #Profile user创建过程 https: ...

  3. Qt编写控件属性设计器11-导入xml

    一.前言 上一篇文章负责把设计好的控件数据导出到了xml文件,本偏文章负责把导出的xml数据文件导入,然后在画布上自动生成对应的控件,Qt内置的xml数据解析功能,非常强大,都封装在QtXml组件中, ...

  4. 【技术】Arduino PID自整定库

    最近看到了Brett Beauregard发表的有关PID的系列文章,感觉对于理解PID算法很有帮助,于是将系列文章翻译过来!在自我提高的过程中,也希望对同道中人有所帮助.作者Brett Beaure ...

  5. 【VS开发】VS2015没修改源文件也导致重新编译的解决办法

    在使用VS2010编译C++程序的时候,每次修改工程中的某一个文件,点击"生成-仅用于项目-仅生成**"时,往往都是整个工程都需要重新编译一遍.由于这个工程代码量太大,每次编译完成 ...

  6. redis如何实现主从数据的同步

    Redis的主从同步机制可以确保redis的master和slave之间的数据同步.按照同步内容的多少可以分为全同步和部分同步:按照同步的时机可以分为slave刚启动时的初始化同步和正常运行过程中的数 ...

  7. was8.5调用HttpPost使用httpClient-4.5.1.jar与was原生自带jar包冲突

    一.更换jar方法. 1.将httpClient4.5.1.jar包去掉,更换使用commons-httpclient-3.1.jar. 2.更换方法,将HttpPost类转换为PostMethod类 ...

  8. SpringBoot常用注解(一)

    控制层:controller 1.@RestController注解相当于@ResponseBody + @Controller合在一起的作用.即这样写每一个方法返回的是 JSON 类型的数据. 2. ...

  9. 8、2 es数据库的使用

    1.注意问题.es和redis同时使用会报错 解决: package com.bw; import org.springframework.beans.factory.InitializingBean ...

  10. Python脚本-自动下载安装

    #coding=utf-8 import os import sys if os.getuid() == 0: pass else: print 'no' sys.exit(1) version = ...