Java教程

Java基础整理(七)

本文主要是介绍Java基础整理(七),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

static关键字

  • 实例相关的,必须先有对象才能通过 “引用.” 访问,可能会出现空指针异常

    静态相关的,不需要对象的参与即可通过 “类名." 访问,没有空指针异常发生

  • 空指针异常只有在什么情况下发生?

    只有在”空引用“访问”实例“相关的,都会出现空指针异常

  • 静态变量在类加载时初始化,不需要new对象,静态变量的空间就开出来了,静态变量存储在方法区

  • 什么时候变量声明为静态的?

    如果这个类型的所有对象的某个属性值都一样,不建议定义为实例变量,浪费内存空间。建议定义为类级别特征,定义为静态变量,在方法区中只保留一份,节省内存空间。

    对于方法来说,什么时候定义为实例方法?什么时候定义为静态方法?

    此方法一般都是描述了一个行为,如果说这个行为必须由对象去触发,则定义为实例方法。也可以说是在方法体中,直接访问了实例变量,也定义为实例方法。

    在开发中,如果是工具类的话,工具类中的方法一般都是静态的,因为静态方法不需要new对象就可以直接通过类名调用,极其方便

  • 静态变量与非静态变量

    public class Demo {
        
        private static int age;
        private double score;
        
        public static void main(String[] args) {
            
            Demo d= new Demo();
            
            d.score=0; //调用非静态
            
            //调用静态
            age=0;
            Demo.age=0;
            
        }
    }
    
  • 静态方法与非静态方法

    public class Demo {
    
        public void run(){
            
        }
        
        public static void go(){
            
        }
    
        public static void main(String[] args) {
    
            Demo d= new Demo();
            //调用非静态
            d.run();
            
            //调用静态
            Demo.go();
            go();
    
        }
    }
    
  • 静态代码块、匿名代码块、构造器

    • 静态代码块:与类一起加载执行,永久==执行一次==,在main方法执行之前执行,一个类中可以编写多个静态代码块,加载时机相同,一般按照自上而下的顺序

      • 语法结构
      static{
          //java语句;
      }
      
      • 静态代码块有什么作用?

        静态代码块不常用,只是给java程序员一个类加载时机,例如需要在类加载时记录日志文档。

    • 匿名(实例)代码块:创建对象时创建,在构造器之前,常用赋初始值,构造方法执行之前执行,每调一次构造方法都会执行一次

      • 语法结构

        {
            //java语句;
        }
        
      • 也是给java程序员的一个对象创建时机

    • 三者执行顺序

      先执行静态代码块,在调用构造方法后,执行构造方法前先执行实例代码块,最后执行构造方法内容

    public class Demo {
    
        {
            System.out.println("匿名");
        }
    
        static{
            System.out.println("静态");
        }
    
        public Demo(){
            System.out.println("构造方法");
        }
    
        public static void main(String[] args) {
            Demo demo = new Demo();//1.静态 2.匿名 3.构造方法
        }
    }
    
  • 静态导入包

    //静态导入包
    import static java.lang.Math.random;
    
    public class Demo {
    
        public static void main(String[] args) {
            System.out.println(random()); //可以直接使用random()
        }
    }
    
这篇关于Java基础整理(七)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!