【java】Class类变量和实例变量

目录

一、类变量和实例变量

二、static和final关键字

2.1 static关键字

2.2 final关键字

2.3 final与static的区别


一、类变量和实例变量

1.1 类变量

可以通过类名或对象名访问。类变量的关键字:static

在内存中只有一个地址,为类和所有对象所共享。

1.2 实例变量

只能通过对象名访问。

为每个对象独立开辟内存地址,对象之间互不影响。

package com;
/*
 *用static定义的方法称为类方法,用static定义的变量称为类变量。
 *类方法:可以通过类直接引用。该方法可以通过类名或对象名进行引用 ;
 *类变量:可以通过类直接引用。该变量可以通过类名或对象名进行引用 。
 */

public class MyMath {
	static double x=10;  //在内存中之创建一个地址,为类和所有对象所共享
	double y=20;  //为每个对象独立开辟地址空间,对象之间互不影响
	public static int randInt() {
		return (int)(Math.random()*100)
	}
	public static void main(String args[]) {
		MyMath m1=new MyMath();
		MyMath m2=new MyMath();
		
		System.out.println(m1.randInt());  //通过对象进行引用
		System.out.println(MyMath.randInt());  //通过类名直接引用
		System.out.println(Math.PI);  //public static final double PI:不可变的类变量
		double k=MyMath.x;  //类变量可以通过类名或对象名访问
		System.out.println(k+100);
		
		m1.y=30;
		m1.x=100;
		double t1=m1.y;  //实例变量只能通过对象名进行访问
		System.out.println(t1+200);  //230
		System.out.println(m1.x);  //100
		
		double t2=m2.y;  //实例变量只能通过对象名进行访问
		System.out.println(t2+200);  //220
		System.out.println(m1.x);  //100
	}
	
}

二、static和final关键字

2.1 static关键字

类变量(类属性):static修饰的属性,为所有对象共享。

类方法:static修饰的方法,在同一个类中可以调用这个类方法。

静态代码块:static修饰的代码块。

静态内部类:static修饰的内部类。

引用static关键字的原因: 在用new创建类的对象时,数据存储空间才被分配,方法才供外界调用。但有时只想为特定域分配单一存储空间,不考虑要创建多少对象或者说根本就不创建任何对象,或是在没有创建对象的情况下也想调用方法。在这两种情况下,就需要使用static关键字。

2.2 final关键字

final表示最终的,不可变的。

关键字final可以修饰变量、方法,还有类。

但是final修饰的类无法被继承,修饰的方法无法被覆盖跟重写;final修饰的变量只能赋一次值。

2.3 final与static的区别

(1)final可以修饰类、方法和变量,但static只能修饰方法和变量,不能修饰类;

(2)final可以修饰全局变量和局部变量,但static只能修饰全局变量,不能修饰局部变量;

(3)final不可以修饰代码块,但static可以修饰代码块。
 


Flag:要成为一个日更选手:)