java静态变量、方法、常量

1.存在的意义
在们在学习的过程中,诸如重力加速度g,圆周率π,假如在椭圆这个类中我们需要用到π,园这个类中也需要用到π,如果我们反复创建π这个量,首先很麻烦,并且浪费内存,可能有人会说可以让椭圆继承于圆这个类,但在有些时候这个方法却不适用,所以我们引入了static
2.使用

import static java.lang.System.out;
public class staticxx {
    
    
	static int x=999;
	public class yf{
    
    
		final static int y=222;
		
	}
     static void love()
     {
    
    
    	System.out.println("喜欢你"); 
     }
	
	public static void main (String[] args) {
    
    
	
        out.println(staticxx.x);
        out.println(staticxx.yf.y);
        staticxx.love();

	}

}


运行结果
在这里插入图片描述

可以看到我们并没有对类进行实例化而是通过类名直接调用的变量,细心的同学可能发现了我在yf类里定义y时前面加了个final,为什么了,因为yf类不是静态类,我们知道在初始化一个类时会优先执行static修饰的代码,因为yf类不是静态类,我们最先执行的就是“final static int y=222;”但因为它所在的类并没有初始化,故会报错。

当然我们也可以通过对象调用静态变量

import static java.lang.System.out;
public class staticxx {
    
    
	static int x=999;
	public class yf{
    
    
		final static int y=222;
		
	}
     static void love()
     {
    
    
    	System.out.println("喜欢你"); 
     }
	
	public static void main (String[] args) {
    
    
	
       staticxx love=new staticxx();
       yf you=love.new yf();
       System.out.println(love.x);
       System.out.println(you.y);
	}

}

但我们一般不建议这样使用,因为容易混淆静态成员和非静态成员。

通过上面的代码我们看到,一个内部类是需要外部类的引用才能创建,但静态内部类可以直接创建

import static java.lang.System.out;
public class staticxx {
    
    
	static int x=999;
	public static class yf{
    
    
		final static int y=222;
		
	}
     static void love()
     {
    
    
    	System.out.println("喜欢你"); 
     }
	
	public static void main (String[] args) {
    
    
	
      yf yjl=new yf();
      System.out.println(yf.y);
	}

}

以上是基本方法;
这里提供几个遗忘,易错的知识点:
1.静态类中可以调用非静态成员,但静态方法中不行,且不能使用this关键字;
2.不能再非静态类中定义静态成员(通过final修饰的可以);
3.不能在方法体(静态方法也不行)内申明静态成员;

猜你喜欢

转载自blog.csdn.net/jahup/article/details/105917866
今日推荐