美文网首页
Java基础-5 static

Java基础-5 static

作者: 往南渡 | 来源:发表于2017-03-16 15:28 被阅读0次
java-5.jpg

static(静态): 修饰符

static修饰成员变量: 如果一个数据需要被所有对象共享使用的时候,那么即可使用static修饰该成员变量。

    访问方式:
            方式1: 可以使用对象进行访问。  格式:对象.静态属性名

            方式2: 可以使用类名进行访问。  格式: 类名.属性名。
    
    推荐使用:可以使用类名进行访问。
    

静态成员变量要注意的细节:
    1. 静态的成员变量可以使用类名或者是对象进行访问。
    2. 非静态的成员变量只能使用对象进行 访问,不能使用类名直接访问。
    3. 千万不要为了方便访问而使用static修饰一个成员变量,只有这个成员变量的数据是需要被共享的时候
        才使用static修饰。

static修饰成员函数:
    
    静态函数的访问方式:
        
          方式一:使用对象访问。  格式: 对象.函数名()

          方式二:使用类名访问。 格式: 类名.函数名();

    
    静态函数要注意的细节:
        1. 非静态的函数只能使用对象调用,不能使用类名调用。
        2. 静态函数可以直接访问静态的成员,但是不能直接访问非静态的成员。
            原因:静态函数可以使用类名调用,而这时候对象可能还没有存在内存中,这时候非静态的数据也就不存在内存中。

        3. 非静态函数可以直接访问静态以及非静态的成员。
            原因:非静态函数必须要由对象调用,如果对象存在了,静态数据以及非静态数据早就存在内存中了。 

        4. 静态函数不能出现this以及super关键字。
            原因:因为静态函数可以使用类名直接调用,而这时候可能还没有对象存在,this又要代表当前对象。


什么时候使用static修饰一个函数呢?
    如果一个函数没有直接访问非静态的成员,那么即可使用static修饰该函数了。(常用于工具类的方法 Arrays)


非静态的成员变量与静态成员变量的区别:

    数量上的区别: 
        (n份)非静态成员变量是在每个对象中都维护一份数据
        (1份)静态成员变量只会在方法中维护一份数据。

    访问方式上的区别:
        非静态的成员变量只能使用对象进行访问. 
        静态成员变量可以使用对象、类名进行访问。
    
    存储位置上的区别;
        非静态成员变量是存储在堆内存中。
        静态成员变量是存储在方法区中。
        
    生命周期的区别:
        非静态成员变量是随着对象的创建而存在,随着对象的消失而消失。
        静态成员变量是随着类文件的加载而存在,随着类文件(字节码文件)的消失而消失。

    作用上的区别:
        非静态成员变量的作用是用于描述一类事物的属性。
        静态成员变量的作用是提供一个共享数据给所有对象使用的。 

class Student{

 String name ; // 非静态的成员变量

static  String country = "中国";  //静态的成员变量

//静态代码块
static{
    System.out.println("静态代码块的代码执行了..");
}

public Student(String name){
    this.name = name;
}

//静态函数  
public static void sleep(){
    System.out.println( "今晚早睡..");
    
}
//非静态函数
public void study(){
    System.out.println(name+"好好学习,为将来可以成为高富帅做准备!!");
}

}

class Person
{
public static void main(String[] args) {

    Student s1 = new Student(“张三”);
    Student s2 = new Student(“李四”);
    System.out.println("姓名:"+ s1.name);
    System.out.println("姓名:"+ s2.name);
    /*
    System.out.println("国籍:"+ Student.country);
    */
}

}

相关文章

  • Java基础-5 static

    static(静态): 修饰符 static修饰成员变量: 如果一个数据需要被所有对象共享使用的时候,那么即可使用...

  • Java基础 --- static

    static --- 数据共享 1 为什么会出现 static (作用) static --- 数据共享 如果很...

  • java基础-static

    概述 static 在java体系里的地位:java语言的一个修饰符,属于非访问修饰符,所谓访问修饰符就是控制访问...

  • Java基础 - static

    一、static初识 static是Java中的一个关键字,它是个非访问修饰符。 我们知道类中的非静态成员,无论是...

  • Java基础系列-static关键字

    原创文章,转载请标注出处:《Java基础系列-static关键字》 一、概述 static关键字是Java诸多关键...

  • Java基础知识汇总(一)

    Java基础知识 一.final 与 Static public static final 类常量,在类内部多个方...

  • 代码查错

    Something1.java 5。 static关键字 static修饰成员变量 用static修饰的成员变量不...

  • Java基础-final static

    final 继承的出现提高了代码的复用性,并方便开发。但随之也有问题,有些类在描述完之后,不想被继承,或者有些类中...

  • JAVA基础之static

    1、static变量 按照是否静态的对类成员变量进行分类可分两种: 被static修饰的变量,叫静态变量或类变量,...

  • Java基础 (9) static

    问题1. 父类的静态方法能否被子类重写问题2. 静态属性和静态方法是否可以被继承?是否可以被重写?以及原因?问题3...

网友评论

      本文标题:Java基础-5 static

      本文链接:https://www.haomeiwen.com/subject/ckrjnttx.html