Java 关键字之static详解

原创 2016年05月30日 16:33:48

Static 关键字

总结归纳:

1.        静态方法和静态变量是属于某一个类,而不属于类的对象;

2.        静态方法和静态变量的引用可以直接通过类名+. 或者引用+.;

3.        在静态方法中不能调用非静态的方法和引用非静态的成员变量。反之,则可以。

4.        静态变量在某种程序上与其他语言的全局变量相类似,如果不是私有的就可以在类的外部进行访问

5.        static变量前可以有private修饰,表示这个变量可以在类的静态代码块中,或者类的其他静态成员方法中使用(当然也可以在非静态成员方法中使用--废话),

           但是不能在 其他类中通过类名来直接引用,这一点很重要。

         换个思路理解:private是访问权限限定,static表示不要实例化就可以使用,这样就容易理解多了。

         static前面加上其它访问权限关键字的效果也以此类推。eg:public

6.     用public修饰的static成员变量和成员方法本质是全局变量和全局方法,当声明它类的对象市,不生成static变量的副本,而是类的所有实例共享同一个static变量

注:Static修饰的变量为静态变量,static修饰的方法叫静态方法

static修饰的成员变量和成员方法习惯上称为静态变量和静态方法,可以直接通过类名来访问,访问语法为:
类名.静态方法名(参数列表...) 
类名.静态变量名

一:static 修饰代码块/类时:

Static还可以定义静态语句块。

Static 定义静态语句块实例如下:

Public class StaticTest01{

//静态语句块:在类加载的阶段执行,并且只执行一次,并且是自上而下的顺序执行

Static{

System.out.println(“1”);

}

Static{

System.out.println(“2”);

}

Static{

System.out.println(“3”);

}

Static{

System.out.println(“4”);

}

//入口

Public static void main(String[] args){

}

关于实例语句块每次调用构造方法之前会执行一次,自上而下执行

public class StaticTest02{

//静态语句块

Static{

System.out.println(“A”);

}

//实例语句块

{

System.out.println(“1”);

}

{

System.out.println(“2”);

}

//构造方法

StaticTest02(){

System.out.println(“StaticTest02无参数的构造方法执行!”);

public static void main(string[]args){

//调用构造方法

new StaticTest02();

}

}

二:Static 修饰方法时:

Static修饰的方法为静态方法

一般情况下工具类中的方法大部分都是静态方法,静态方法不用创建对象也可以直接访问方法

public class StaticTest03{

//成员方法:必须使用“引用.”调用

public void m1(){

 当前

}

//静态方法可以使用“类名.”方法调用,不能直接访问非静态数据(成员变量和方法);

//静态方法中不能使用this

public static void m2(){

}

//入口

public static voidmain(String[] args){

StaticTest03 st=newStaticTest03();

st.m1();

 m2();

//静态方法按照正规方式访问:”类名.”,同时也可以用”引用.”访问

//st.m2();//编译阶段检查出st是StaticTest03 类型,编译通过,运行时仍使用 “StaticTest03.“方式访问,不需要对象;

//空的引用去访问成员的时候才会出现空指针异常

M2方法不是成员,而是静态的所以及时引用是空的,也不会报空指针异常;

StaticTest03 s=null;

S.m2();

 }

}

三:Static 修饰变量时:

Static 修饰的变量为静态变量


变量分类:局部变量,成员变量(实例变量,非静态变量),静态变量;

public class StaticTest04{

public void main (String[] args){

Animal a1=new Animal(“AAA”,10);

Animal a1=new Animal(“BBB”,11);

}

}                                                        

//抽象现实世界中“陆生”动物

class Animal{

//Field

//成员变量(一个对象一份)

//在创建对象的时候初始化,并且存储在堆中的每一个对象中

String name;                  

int age;

String type=“陆生

//Constructor

Animal(string name,int age){

this.name=name;

this.age=age;

}

}

变更:static string type=“陆生”;//静态变量,被存储在方法区,所有的java 对象共享这一份,所以是类级别的变量,使用”类名.”方式访问。

什么时候声明静态变量?

  如果这个属性所有的对象都有,且这个属性的值是相同的,则该属性声明为静态变量

如何访问静态变量

//类名.

System.out.println(Animal.type);

//引用.

System.out.println(a1.type);

Animal a3=null;

System.out.println(a3.type);//静态变量底层访问的时候一定使用的”类名.”和对象无关,不会出现空指针异常

什么时候初始化

成员变量:创建java对象时初始化

静态变量:在类加载阶段赋值,并只赋值一次

关于代码的顺序:

//非法向前引用

Public classstaticTest05{

Static{

System.out.println(i);

}

Static int i=100;

}

结果:加载失败

应改为:

Public classstaticTest05{

Static int i=100;

Static{

System.out.println(i);

}

}

最后总述:

类{

//必须对象存在才可以访问,采用”引用.”;

成员变量

成员方法

//可以通过 ”类名.”也可以使用 ”引用.”底层也是 ”类名.”访问;

静态变量

静态方法

//类加载时且执行一次;

静态语句块

//构造方法每调用之前执行一次;

实例语句块

//创建对象,给成员变量赋值;

构造方法

//用在成员方法和构造方法中;

this

}

空指针异常:空引用访问成员时

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

Duanxx的Java学习:关键字Static详解

  • 2014年08月04日 10:49
  • 302KB
  • 下载

java详解 --- 构造方法和static关键字

一.构造方法1.作用 构造方法是一个方法,作用是对对像的属性(就是成员变量)进行初始化. 2.写法 a.构造方法的方法名和类名完全一样(大小写必须一样); b.没有返回值(没有return)和...

JAVA中静态代码块的用法 static关键字用法详解 类的加载顺序

转自:http://www.cnblogs.com/guanghuiqq/archive/2012/10/09/2716898.html java中静态代码块的用法 static用法详解...

java关键字static详解

static在英语中有静态变量和全局的意思.用来修饰成员变量和成员方法,也可以形成静态static代码块.被static修饰的成员变量和成员方法独立与该类的任何对象,也就是说,不依赖与认识对象实例,在...

Java Static关键字详解

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

Java 关键字static详解

一、static基本描述对于关键字static ,大家应该不会陌生,因为一直编写: public static void main(String args[]) {...}那static表示什么呢?...
  • wei_zhi
  • wei_zhi
  • 2016年10月09日 15:57
  • 687

java static 关键字详解

提到static 关键字 就要想到3点分别是 1.static 修饰的 类 java中static一般用来修饰成员变量或者函数。但是有一种特殊的用法 用static 修饰内部类,普通类是不允许声明为静...

Java中的关键字static、this、super、final详解

一、static 请先看下面这段程序: public class Hello{     public static void main(String[] args){//(1)       S...
  • kbest
  • kbest
  • 2011年08月15日 09:20
  • 1184

java中的static关键字详解及面试

深入理解java的static关键字

java笔记 static关键字详解

----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------ static关键字 作       用:修饰符,用于修饰成员对象(成员函...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java 关键字之static详解
举报原因:
原因补充:

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