JAVA--静态修饰符(static)理解

原创 2015年11月18日 10:10:23

学习JAVA中,有一个修饰符特别重要。That'sstatic...

下面来总结一下我对Static的理解和对于它的使用场景...

首先要记住一点,静态的资源(静态代码快、静态方法、静态变量、静态内部类...)是随着类在加载的时候产生的,而并非跟非静态资源一样在产生该类对象(new XX())的时候产生。这里就已经体现出了静态资源是跟类有关系的,而并非是该类对象。逐渐也就引伸出静态资源是类共同拥有的,可以理解为全局的资源。

**静态资源在产生时,内存分配空间上是固定的,并且优先分配静态对象的空间,而非静态资源则是在其附属类中进行分配。

**静态资源即是共同拥有的,那么只要有一处修改了,其他使用到此资源的地方也会被更改掉。

**静态资源只能访问静态的数据/方法,它们不能使用this/super。。

**调用静态的方法和变量不需要新建对象,直接用类名.静态资源即可

**静态内部类:

1.静态都是用来修饰类的内部成员的

2.内部类与外部类是有一定关联的,它也是会随着外部类的加载而产生,但不会用单独的java文件去存储,也可以用类名.内部类名去获取到内部类。

--------------------------------------------------------

<pre name="code" class="java">package com.cx;

import java.util.ArrayList;
import java.util.List;

public class StaticTest {
	static List<String> list = new ArrayList<String>();
	static{
		System.out.println("static test!");
	}
	
	public static void test(){
		System.out.println("method test");
	}
	
	public static void main(String[] args) {
		StaticTest.test();
	}
}



输出结果:static test!

method test

静态代码块:

加载类的时候执行,且只执行一次。


---------------------------------对象的初始化顺序:

首先执行对象父类的静态内容,父类静态内容执行完毕之后,接着执行子类的静态内容。然后在看父类有没有非静态代码块{...},有则执行,然后在执行父类的构造方法,接着执行子类的非静态代码块,然后执行构造方法。

总之,优先执行静态内容,然后就是父类的非静态代码块 和构造方法,最后是子类的。

    注:子类的构造方法,不管这个方法带不带参数,默认的他都会先去寻找父类的不带参数的构造方法。如果父类没有不带参数的构造方法,那么子类必须supper调用父类带参数的构造方法,否则编译失败。

版权声明:本文为博主原创文章,未经博主允许不得转载。

Java中的静态修饰符 static

静态修饰符的特点 static是一个修饰符,用于修饰成员(成员变量和成员函数) 静态成员随着类的加载而加载。 静态成员优先于对象存在。 静态成员被所有对象所共享 静态成员多了一...
  • u013310517
  • u013310517
  • 2016年07月31日 18:01
  • 1938

关于JAVA中的static和final修饰符的一点总结

static修饰符 1.静态方法
  • kuitao4232
  • kuitao4232
  • 2016年11月25日 11:05
  • 78

JAVA的静态变量、静态方法、静态类

静态变量和静态方法都属于静态对象,它与非静态对象的差别需要做个说明。 (1)Java静态对象和非静态对象有什么区别?       比对如下:                              ...
  • zhandoushi1982
  • zhandoushi1982
  • 2012年12月30日 20:45
  • 204188

Java中静态跟非静态的区别总结

静态变量跟实例变量的区别,静态方法跟实例方法的区别
  • HaydenYu
  • HaydenYu
  • 2017年06月19日 10:05
  • 1352

java静态方法,静态属性

静态方法,静态属性,都是不需要创建实例对象就可以调用,而且是单例的,不管创建多少个对象,都是共享一个 静态属性。 静态方法不可以调用非静态的变量,只可以调用静态的属性。 静态方法不可以调用非静态的...
  • huangning1995
  • huangning1995
  • 2017年01月27日 13:04
  • 730

JAVA中理解static修饰符的作用

是静态修饰符,什么叫静态修饰符呢?大家都知道,在程序中任何变量或者代码都是在编译时由系统自动分配内存来存储的,而所谓静态就是指在编译后所分配的内存会一直存在,直到程序退出内存才会释放这个空间,也就是只...
  • u013440660
  • u013440660
  • 2014年05月30日 21:02
  • 1903

java中的static(包括类前面修饰的static、方法前面修饰的static、成员变量前面修饰的static)

原文 http://www.cnblogs.com/zhangshitong/p/4881362.html static是静态修饰符: 什么叫静态修饰符呢?大家都知道,在程...
  • sinat_33401127
  • sinat_33401127
  • 2016年08月03日 11:36
  • 1768

Java static修饰属性(类变量)、static修饰方法(类方法)

一、static修饰属性(类变量)  1.由类创建的所有的对象,都共用这一属性。  2.类变量随着类的加载而加载,即使此类还未new过对象,这个类变量也存在,而且仅一份;  然而,实例变量是类new过...
  • u013453970
  • u013453970
  • 2015年08月11日 11:26
  • 10868

java回顾篇——static和非static的区别

关于static和非static变量的区别。 1. static 修饰的变量称为类变量或全局变量或成员变量,在类被加载的时候成员变量即被初始化,与类关联,只要类存在,static变量就存在。非sta...
  • a907691592
  • a907691592
  • 2016年06月14日 08:20
  • 3688

java基础--static、final、abstract修饰符小结

一)static修饰符 二)fianl修饰符 1、fianl、fianlly与fianlize有什么区别? 2、fianl有什么用?什么时候使用fianl 三)abstract修饰符...
  • xiu2016
  • xiu2016
  • 2016年10月15日 02:47
  • 90
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JAVA--静态修饰符(static)理解
举报原因:
原因补充:

(最多只允许输入30个字)