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

}

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

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

Java 关键字static详解

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

Static关键字所有用法详解

以前总是对static的涵义模棱两可,不太敢用,也不知道什么地方改用,static用法非常广泛,静态变量、静态成员、静态函数等,如果用的好,会是程序提升一个等级,并且可以解决很多实际问题,比如单例模式...
  • yanglusheng
  • yanglusheng
  • 2016年07月13日 10:22
  • 1243

PHP 类和对象(static静态关键字)

静态属性和方法可以在不实例化类的情况下调用,直接使用  类名: :方法名  的方式 进行调用。所以伪变量$this在此处不可用。 静态属性不可以由对象通过“->”操作符来访问。 用静态...
  • actorWen
  • actorWen
  • 2017年12月17日 11:29
  • 40

Java关键字:static详解

你真的了解Static吗? 事实上,static大体上有五种用法: 静态导入。 静态变量。 静态方法。 静态代码段。 静态内部类。 1. 静态导入 我在之前并不知道静态导入,接下来先看一段代...
  • zhenyushao
  • zhenyushao
  • 2017年02月07日 14:40
  • 270

java static 关键字详解

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

java关键字Static详解

一、 static代表着什么        在Java中并不存在全局变量的概念,但是我们可以通过static来实现一个“伪全局”的概念,在Java中static表示“全局”或者“静态”的意思,用...
  • u013310119
  • u013310119
  • 2016年05月31日 13:22
  • 210

java关键字static详解

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

Java static 关键字详解

引言 使用情况 1static成员变量 2static成员方法 3static代码块 4静态类 经典用法引言在《Java编程思想》中有这样一段话:static方法就是没有this的方法。在static...
  • zhongxianyao
  • zhongxianyao
  • 2017年04月07日 20:24
  • 173

JAVA中的关键字static,final和const

一、static 1.static修饰变量 C的局部变量,全局变量(即外部变量)和静态变量 局部变量:在函数内定义的变量,采用动态存储方式。 全局变量:在函数外定义的变量,采用静态存储方式。 exte...
  • cwdysg
  • cwdysg
  • 2017年03月09日 08:41
  • 3268

java中 static,final,transient,volatile关键字的作用

static 和final   static  静态修饰关键字,可以修饰 变量,程序块,类的方法;  当你定义一个static的变量的时候jvm会将将其分配在内存堆上,所有程序对它的引用都会指向这...
  • i0048egi
  • i0048egi
  • 2017年02月12日 21:27
  • 1335
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java 关键字之static详解
举报原因:
原因补充:

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