package com.mgg.review;
import java.util.Random;
/*
*Static与类有关,随着类的加载而加载,存活时间较长;非静态的与实例化后的对象有关,随着对象的存在而存在
*静态方法只能访问静态成员(变量&方法),不能直接访问非静态成员(变量&方法),如果想要访问则需要先创建对象,因为静态成员是优先于对象存在的,在静态方法加载进内存时,非静态成员还未进入内存中
*在静态方法中,没有this/super关键字
*非静态方法可以访问静态/非静态成员
*静态变量用大写,作为常数使用
*调用其他类的静态方法是可以用用类名.方法名 或者 对象名.方法名 即可以不用实例化
*调用其他类的非静态方法必须先实例化创建对象后再用 对象名.方法名的方式调用
*非静态方法既可以访问静态成员也可以访问非静态成员,静态方法只能访问静态成员
*静态虽好,但是不可以乱用
*静态,利:将对象共享的数据进行单独存储,节省空间,可以通过类名.成员名调用
*弊:生命周期过长,访问出现局限性,静态只能访问静态,而不能直接访问非静态成员
*/
class Circle {
//静态变量使用大写,静态变量作为常数使用
static double PI = 3.1415926;
static int R = 9;
}
class ZhengFangXing {
static void zhouChang(){
System.out.println("正方形周长为x");
}
}
public class Demo6_StaticAndNonStatic {
public static void main(String[] args) {
Circle c = new Circle();
System.out.println("该圆的面积为"+c.PI*c.R*c.R);
System.out.println("该圆的周长为"+2*c.PI*c.R);
//Random()方法是非静态方法,而主方法是静态的,所以调用Random()方法必须先实例化对象才可以
Random rand = new Random();
int i = rand.nextInt(100);
System.out.println("100内随机数:"+i);
//通过类名.成员名 调用
ZhengFangXing.zhouChang();
}
}