Static静态性

Static静态性

1.什么是静态性,什么是非静态性?

1.静态性:<i>静态数据或静态方法属于类而不属于对象;

                  <ii>对象中不包含有静态数据

                  <iii>是所有对象可共享的数据和方法

                  <iv>静态数据直接初始化

2.非静态性:<i>属于对象,对象单元中含有非静态对象

                     <ii>非静态数据通过构造方法初始化

                     <iii>非静态方法一定要通过对象引用

2.静态数据和非静态数据的存储:

定义:访问权限 static 数据类型 数据名;

如;

Class Myclass{

        Private int x;

        Private int y;//非静态数据属于对象

        Private static int z=30;//静态数据属于类直接初始化

        Public Myclass(int x,int y){

       This.x=x;

       This.y = y;

}//构造函数不可以初始化静态数据      

}

 

Public class Demo{

       Public static void main(string arg[]){

       Myclass my = new Myclass(3,4);

}

}

3.静态数据和静态方法的调用

前提:访问权限

静态方法的定义:

访问权限   static   返回值类型   方法名  ([形参]){

        //函数体

}

 

调用:(1)通过类名直接调用

定义:类名.数据名

         类名.方法名([实参])

Class Myclass{

        Public static int x = 10;

        Public static int y = 20;

        Public static void Print(){

               System.out.println(“y=”+y);

}

}

Public class demo{

        Public static void main(){

               Myclass.x = 10;

               System.out.println(“x=”+x);

               Myclass.Print();

}

}//静态方法的主要作用就是为了访问和处理静态数据

(2)  静态方法和静态数据也可以通过对象访问

定义:对象名.静态数据名        //注意访问权限

          静态方法(实参)

如:

Public class Demo{

          Public static void Print(){

       System.out.println(“static funcation”);

}

       Public static void main(string arg[]){

       Demo.Print();

       Demo D = new Demo();

       D.Print();

}

}

 

4.static块:类内的一个抽象复合体

  1. 具有静态性:编译时为静态变量分配单元,执行静态块,在编译阶段加载类时执行static块
  2. 静态数据初始化:a.定义静态数据时

                             b.通过静态方法

                              c.可以通过static块

       (3) 声明:static{

                                          //数据或方法

}

                     如:

                     Class Demo{

       Private static int x;

       Static{

       X = 30;

       ……//其余静态数据或方法

}

}

5、注意:

  1. Static只在编译阶段执行一次,整个程序运行阶段不再执行
  2. 主要作用:初始化
  3. 不可将static块放在方法中,在类中独立存在
  4. 在static中不可使用this,super等关键词
  5. 若有多个static块,按加载顺序一一执行
  6. 静态方法不能访问非静态数据、方法

如:

Class Myobject{

       Private static string str1 = “static string”;

       Private string str2;

Public Myobject(){

////

}

Public void printf(){

       System.out.println(“str1’);

System.out.println(“str1’);

Print2();

}

              Public static void Print2(){

       System.out.println(“str1”);

       System.out.println(“str2’);

       Print1();

}

}

猜你喜欢

转载自blog.csdn.net/xinanbo/article/details/84066787
今日推荐