zoukankan      html  css  js  c++  java
  • Static关键字

    static 来修饰方法 : 有点类似OC中的类方法 :

    1.只能用类名来调用

    2.类中是不允许访问属性。

    1. 访问方式:

    1.可以通过对象来访问

    对象.方法名();

    2.可以通过类名来访问

           .方法名();

      推荐使用类名调用。

    2. 作用:

                 1.用来修饰成员变量

                 2.用来修饰方法

    3. Static修饰方法的使用注意点:

    1.静态方法可以用对象和类名调用。非静态方法只能用对象来调用。

    2.静态方法是可以访问静态的成员变量,不能够访问非静态的成员变 量。非静态方法中可以访问任何成员变量。

    原因:有可能静态方法被调用了,但是对象还没有被创建出来。

    3.静态方法可以直接访问静态方法,但是不能访问非静态方法.非静态方法是可以访问静态方 法。

    原因:有可能静态方法被调用了,但是对象还没有被创建出来 ,非静态方法只能由对象调用。

             如果对象被创建出来,静态方法早就存在内存中了。

    4.静态方法中是不允许出现this关键字和super关键字

    this : 表示一个方法调用者对象。

    可能对象没有被创建出来。

    //特点 :

    静态的数据早于非静态的数据存在内存中。

    4. 什么情况下使用static来修饰方法:

    当一个方法不需要直接放味非静态数据,这个时候就可以用static修饰 (定义工具类)

    代码实例一:

    class Student{
    
     
    
     
    
    String name; // 非静态的成员变量
    
    static String country; // 静态的成员变量
    
     
    
    public Student(String name){
    
    this.name = name;
    
    }  
    
     
    
    //公有的方法
    
    public void study(){
    
    eat(); //非静态是可以调用静态的方法。
    
     
    
    System.out.println(name+"正在学生");
    
    }
    
     
    
    //用static 来修饰吃饭的方法
    
    //结构上就是在public后面多了一个static
    
    //静态方法
    
    public static void eat (){
    
     
    
    //study(); 不允许调用非静态方法。
    
    sleep();
    
     
    
    System.out.println(country+"正在吃饭");
    
    }
    
     
    
    //静态方法
    
    public static void sleep (){
    
     
    
    System.out.println("学生在睡觉");
    
    }
    
    }
    
     
    
    class Demo4 {
    
     
    
    //静态方法
    
    public static void main(String[] args){
    
     
    
     
    
    Student s = new Student("张三");
    
    s.study();
    
    s.country = "中国";
    
    //调用吃饭的方法
    
    //Student.eat();
    
    s.eat();
    
     
    
    }

    代码实例二:

    class Student{
    
     
    
     
    
    String name; // 非静态的成员变量
    
    static String country; // 静态的成员变量
    
     
    
    public Student(String name){
    
    this.name = name;
    
    }  
    
     
    
    //静态代码块
    
    //编译的java.class文件被使用的时候就执行了.
    
    static{
    
    System.out.println("我是静态代码块");
    
    }
    
     
    
    //公有的方法
    
    public void study(){
    
     
    
    eat(); //非静态是可以调用静态的方法。
    
     
    
    System.out.println(name+"正在学生");
    
    }
    
     
    
    //用static 来修饰吃饭的方法
    
    //结构上就是在public后面多了一个static
    
    //静态方法
    
    public static void eat (){
    
     
    
    //study(); 不允许调用非静态方法。
    
    sleep();
    
     
    
    System.out.println(country+"正在吃饭");
    
    }
    
     
    
    //静态方法
    
    public static void sleep (){
    
     
    
    System.out.println("学生在睡觉");
    
    }
    
    }
     
    
    class Demo5 {
    
     
    //静态方法
    
    public static void main(String[] args){
    
     
    
    Student.eat();
    
     
    
    /*
    
    Student s = new Student("张三");
    
    s.study();
    
    s.country = "中国";
    
    //调用吃饭的方法
    
    //Student.eat();
    
    s.eat();
    
    */
    
     
    
    }
    
    }
  • 相关阅读:
    C++类型前置声明
    Qt 引用头文件 QT_BEGIN_NAMESPACE QT_END_NAMESPACE
    Qt emit的使用
    特定于类的内存管理---《C++必知必会》 条款36
    C++深入理解虚函数
    使用网页预加载顶部进度条
    简单读取 properties文件
    win2012r2 关闭中英文悬浮小方框显示
    bootstrap的Alerts中 可以放置p标签 设置 align="center" 用来设置文本居中
    char和String 在jsp java代码中与jstl代码中的区别
  • 原文地址:https://www.cnblogs.com/binzhihua-666/p/6103766.html
Copyright © 2011-2022 走看看