Java面向对象------static

版权声明:欢迎转载 https://blog.csdn.net/qq_37875585/article/details/88116047

static

static 静态的

属于对象的属性和方法是动态的,相反属于类的就是静态的。

静态的用途

  1. 修饰类的成员变量,称为静态变量,

    1. 静态变量是属于类的变量,可以使用“类名.变量名”访问, 在类的内部可以省略类名。

    2. 静态变量只有一份,可以被全体对象共享!软件中只有一份的数据应该使用static修饰。

    3. 静态变量在类加载期间,随着类在方法区中初始化,只有一份属于类。

      	public class Demo04 {
      		public static void main(String[] args) {
      			/*
      			 * 测试静态变量 
      			 */
      			Hoo h1 = new Hoo();
      			Hoo h2 = new Hoo();
      			h1.a = 5;
      			h2.a = 8;
      			Hoo.b = 11;
      			System.out.println(h1.a +","+h1.b); 
      			System.out.println(h2.a +","+h2.b);
      			System.out.println(Hoo.b);
      		}
      	}
      
      	class Hoo{
      			int a;
      			//只有一份,被全体类的实例共享
      			static int b;
      		}
      
  2. 修饰方法,称为静态方法:

    1. 静态方法是属于类的方法
    2. 一般使用“类名.方法”
    3. 相对于对象方法(非静态方法),静态方法可以不创建对象直接使用类名调用。
    4. 静态方法的好处就是:直接使用类名就可以调用方法。
    5. 一般请情况下当方法计算时候用到当前对象(this)的属性(数据)时候,使用非静态方法。 相反方法在计算时候没有用到当前对的属性,则应该定义为静态方法。
    6. 非静态方法中,包含默认的局部变量 this 引用当前 的对象,静态方法中没有 this这个变量!
      	public class Demo05 {
      		public static void main(String[] args) {
      			/*
      			 * 静态方法
      			 */
      			//静态方法: 不用创建对象,直接使用类名就可以调用
      			Person.add(8, 9);
      			//非静态方法也就是对象的方法,需要先创建对象,
      			//再使用对象的引用调用
      			Person p = new Person("Tom");
      			p.whoru();
      			
      			//一般和对象无关的工具方法,使用静态方法。
      			//Arrays.toString(a)
      			//Arrays.sort(a);
      			System.out.println(Math.sin(Math.PI/2));
      			System.out.println(Math.cos(Math.PI/2));
      			//sqrt 计算平方根
      			System.out.println(Math.sqrt(2));
      		}
      	}
      
      	class Person{
      		String name;
      		public Person(String name) {
      			this.name = name;
      		}
      		public static void add(int a, int b) {
      			System.out.println(a+b); 
      		}
      		public void whoru() {
      			System.out.println("我是"+name); 
      		}
      		public String toString() {
      			return "Person [name=" + name + "]";
      		}
      	}
      
  3. 修饰代码块,称为静态代码块: 在类中使用static修饰的代码块。

    1. 在类加载期间按照顺序执行
    2. 一般用于初始化静态资源(静态属性)
      	public class Demo06 {
      		public static void main(String[] args) {
      			/*
      			 * 测试静态代码块执行一次
      			 */
      			Circle c1 = new Circle();
      			Circle c2 = new Circle();
      			System.out.println(Circle.n); 
      		}
      	}			
      
      	class Circle{
      			static double n;
      			//在类加载期间执行,由于类只加载一次,所以静态代码
      			//只执行一次, 经常用于加载 图片,配置文件等静态资源
      			static {
      				System.out.println("HI"); 
      				//利用静态代码块初始化了变量n
      				n = Math.PI*2;
      			}
      		}
      
  4. 修饰内部类,称为静态内部类

    1. 用静态关键字修饰的内部,一般用于在静态方法中使用
    2. 静态方法只能访问静态资源: 静态方法中没有this,不能使用当前对象的属性,不能使用当前对象的方法,也不能使用成员内部类!

猜你喜欢

转载自blog.csdn.net/qq_37875585/article/details/88116047