目录
一、类变量和实例变量
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:要成为一个日更选手:)