java中static学习笔记


static

1、可以用来定义静态的成员变量

2、可以用来定义静态的函数

3、可以定义静态代码块



1、静态成员变量语法特点

定义方法:起名Person.java

class Person {

        staticint i;   //int i 前加上static  i 就是静态成员变量

}


a)、常用的调用成员变量方法,先生成

“类的对象”例如:(1) Person person = new person();

                                                   person.i= 10

class test{

        publicstatic void main (String args []){

                  Personperson = new Person(); //红色警报 Person person中间不加.

                  person.i= 10;

        }

}


当我们将Person.java中定义为静态成员变量时候如上边1、静态成员变量


的语法特点)

我们在test中就可以直接调用

class test{

        publicstatic void main (String args []){

                  Person.i= 10

        }

}

注:1、静态成员变量【可以】使用类名进行直接调用;

2、静态成员变量同时也可以用对象来调用,即普通调用方法;

P1 是一个person的对象;将p1i成员变量赋值为10

P1 p2 都是一个引用他们分别指向堆内存当中的一个对象;

P1 对象中i的变量为10

wKioL1L8Jh2wePIyAAE0B3z0YS0729.jpg

注意

如果i设置为静态的成员变量

wKiom1L8JmfQt1AsAAEit4ToBKI244.jpg

此时p1p2使用的i的这个成员变量是同一个,


所有的对象使用的静态变量的值都是同一份;

wKiom1L8JruiVpPuAABKFF7UAd8124.jpg

wKioL1L8JrXDf_VYAADOAY5FDoM987.jpg

此为代码,先编译Person.java 然后编译Test.java然后执行Test

wKiom1L8JurARoFoAACD4rTnmKo995.jpg








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

//定义一个Person的类

class Person {

        staticint i;   //int i 前加上static  i 就是静态成员变量

}


//定义一个Test的类

class Test{

   public static void main (String args[]){

   Person p1 = new Person();

   Person p2 = new Person();

   Person.i = 10;

   System.out.println("p1的i值为" + p1.i);

   System.out.println("p2的i的值" +p2.i);

/*

   p1、p2使用的i的这个成员变量是同一个,任何一个成员变量的值得到修改,其他的所有的成员变量的值一同修改

*/

   p1.i=20;

   System.out.println("p1的i值为" + p1.i);

   System.out.println("p2的i的值" +p2.i);

   }

}

分别编译执行java Test

wKioL1L8NA7Rn1QzAACBOUKjqDw737.jpg





总结 1、定义静态变量在变量的类型前面加上static

    2、既可以用对象名调用,又可以用类名调用

    3、所有的对象使用的静态变量都是同一份,任何一个静态变量得到修改,其他的静态变量都会跟着修改







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

静态函数:

class Person{

//static int i ;

   static void fun() {

   System.out.println("我是静态函数");

   }

}

--------

class Test{

   public static void main (String args[]){

/*

   Person p1 = new Person();

   Person p2 = new Person();

   Person.i = 10;

   System.out.println("p1的i值为" + p1.i);

   System.out.println("p2的i的值" +p2.i);

   //p1、p2使用的i的这个成员变量是同一个,所以修改p1的成员对象值时,p2也会同时修改

   p1.i=20;

   System.out.println("p1的i值为" + p1.i);

   System.out.println("p2的i的值" +p2.i);

*/

 Person.fun ();

   }

}




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

class Person3{

   static String name;

   static void talk(){

   System.out.println("I most love the human is " + name);

   }

}

---

class Test3{

   public static void main (String args[]){

   Person3.name = "刘晶晶";

   Person3.talk();

   }

}

1、静态函数前边需要加上static

2、静态函数是可以用类名直接调用的 如上 class Test3 中 Person3.talk(); Person3就是类名

3、在静态函数中不可以引用非静态的成员变量 wKioL1L9fGfiVEKrAACTFhwAYHo262.jpg

如果红线处可以应用非静态的成员变量,那么this就无法解释,因为没有所谓的调用这个函数的对象。



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

静态代码块:

class Person3{

   static{

   System.out.println("静态代码块");

   }


   static String name;

   static void talk(){

   System.out.println("I most love the human is " + name);

   }

}

------

class Test3{

   public static void main (String args[]){

   Person3.name = "刘晶晶";

   Person3.talk();

   }

}


如果单一执行 Person3 会产生错误:提示找不到主函数

wKiom1L9f4jgZL8QAACioqEW3EQ888.jpg

此静态代码块需要在装载这个类的时候执行


作为一个类要执行分为几个步骤

步骤:先把这个类装载到内存当中,装载到虚拟机里边去,装载完了之后再进行解释执行


对于静态代码块来说他无需调用,只要这个类里边有静态代码块,那么装载这个类的时候就会执行这个静态代码块,

静态代码块主要作用就是为静态变量name来赋一些初始值





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

总结static

1、可以定义一个静态的成员变量 而且他的值只有一份,,,所有的对象使用的静态成员变量都是同一个。

2、static可以定义静态函数,静态函数也是可以用类名进行调用,在静态函数中不能使用this,即不能在静态函数中引用非静态的成员变量。

3、静态代码块的主要作用是为静态成员变量赋初始值。





你可能感兴趣的:(java,静态变量,static,函数变量,person)