java static 关键词介绍

来源:互联网 发布:linux系统jdk下载官网 编辑:程序博客网 时间:2024/06/05 16:20

static关键词

      定义

          在定义一个类时,只是在描述某类事物对象的特征和行为,并没有产生具体的数据。只有通过new关键字创建该类的实例化对象后,系统才会为每个对象分配空间,存储各自的数据。

          有些时候,我们希望某些特定的数据在内存中只有一份,而且能够被一个类的所有实例化对象所共享。这个时候要在属性或者方法的前面加上修饰符static。

     举例:

               静态变量:

        在某个班级里,所有同学的班主任都是“李达康”,此时不必要在每个同学对象所占用的内存空间中都定义一个变量来表示班主任是谁(内存优化),但是我们可以在对象以外的空间定义一个表示“李达康”的变量来让所有对象共享。具体如下:

                   

      在java类中,可以使用static关键字来修饰成员变量,变量称为静态变量。静态变量被所有实例所共享。可以使用“类名.变量名”的形式来访问

        具体代码如下:

class Student{static String teacher;     //定义静态变量teacher}public class Example01 {  public static void main(String []args){  Student stu1=new Student();   //实例化第一个学生对象  Student stu2=new Student();   //实例化第二个学生对象  Student.teacher="李达康";    //为静态变量teacher赋值“李达康”  System.out.println("我的班主任是:"+stu1.teacher);//打印第一个学生的老师  System.out.println("我的班主任是:"+stu2.teacher);//打印第二个学生的老师  }}
   
    最重要的一点是:只有一个李达康!系统只分配一个空间给teacher!俩个学生共享一个李达康,这一点在多线程中各个线程共享数据十分重要!

     

     需要注意的一点就是static关键词只能修饰成员变量不能修饰局部变量。成员变量就是整个类中所定义的变量,局部变量就是类中方法里面的变量  

     

class Student{   int age;       //成员变量   可以用static修饰 public void print(){   int number;    //局部变量,不可用static修饰 }}
                  


       静态方法:

      有些时候我们需要测试程序正确与否的时候必须得实例化一个对象才能调用其方法,这不免有些麻烦,所以java里可以用static关键词来修饰方法,这种被修饰之后的方法不必要和对象捆绑在一起使用,这种被static修饰的方法我们称为静态方法。同静态变量一样,静态方法可以使用“类名.方法名”的方式来引用。

      代码如下:

class Student{       public static void print(){  System.out.println("hello"); }}public class Example01 {  public static void main(String []args){ Student.print();  }}

   

         最需要的注意的一点:在一个静态方法中只能访问用static修饰的成员!

接下来我就我所掌握的知识介绍一下原因是什么。首先类里面除了static修饰以外的成员和方法,他们都是不占用内存空间的,只有在这个类实例化对象以后系统才会给他们分配空间,而static关键词修饰成员或方法之后,就会第一时候给他们分配内存,我画个图补充一下:


通过这个四格漫画应该明白了,只有成员或者方法有了内存以后才可以调用(也就是他们确确实实的存在了),这就是为什么在一个静态方法中只能访问用static修饰的成员。的原因。


    





0 0
原创粉丝点击