1、static关键字的特点:
a.随着类的加载而加载
b.优先于对象存在
c.被类的所有对象共享
d.可以通过类名调用
其实它本身也可以通过对象名调用。
推荐使用类名调用。
静态修饰的内容一般我们称其为:与类相关的,类成员
2、static的注意事项:
a.在静态方法中是没有this关键字的。
因为静态是随着类的加载而加载,this是随着对象的创建而存在。
静态比对象先存在。
b.静态方法只能访问静态的成员变量和静态的成员方法
静态方法:
成员变量:只能访问静态变量
成员方法:只能访问静态成员方法
非静态方法:
成员变量:可以是静态的,也可以是非静态的
成员方法:可是是静态的成员方法,也可以是非静态的成员方法。
例如:
class Demo {
int num1 = 10; //非静态的成员变量
static int num2 = 20; //静态的成员变量
public void print1() {//非静态的成员方法,既可以访问静态的成员也可以访问非静态的
System.out.println(num1);
System.out.println(num2);
}
public static void print2() { //静态的成员方法
//System.out.println(this.num1);//静态的成员方法不能访问非静态的,报错。
System.out.println(num2);
}
}
3、静态数据加载内存图:
4、final关键字:
final是最终的
final修饰特点
a.修饰类,类不能被继承
b.修饰变量,变量就变成了常量,只能被赋值一次
c.修饰方法,方法不能被重写
比如你的类里面的一些重要的方法不想被子类修改,你可以定义为final
如果你类里面所有方法都不想被改写,把整个类定义为final
String 类就是一个final类
例如:
class Son {
final int NUM = 10; //常量命名规范,如果是一个单词,所有字母大写,如果是多个单词,每个单词都大写,中间用下划线隔开
public static final double PI = 3.14; //final修饰变量叫做常量,一般会与public static共用
public void print() {
//NUM = 20;//不能修改了
System.out.println(NUM);
}
}
注意:书写的顺序最好是 static final ,代码检查可能报个警告错误。
5、final关键字修饰局部变量:
修饰基本类型,是值不能被改变
修饰引用类型,是地址值不能被改变,对象中的属性可以改变
例如:
class Demo2_Final {
public static void main(String[] args) {
final int num = 10;//final修饰基本类型
//num = 20;//不能被修改
System.out.println(num);
final Person p = new Person("张三",23);//final修饰引用类型
//p = new Person("李四",24);//地址不能被改变了
p.setName("李四");//可以修改属性值
p.setAge(24);
System.out.println(p.getName() + "..." + p.getAge());
method(10);//会输出10
method(20);//会输出20
//因为在执行第一个method的时候,执行完了就弹栈消失了,
//第二个方法调用重新进栈,重新赋值了,所以会打印20
}
public static void method(final int x) {//修饰形参,在这个方法的匿名内部类可以访问。
System.out.println(x);
}
}
class Person {
private String name; //姓名
private int age; //年龄
public Person(){} //空参构造
public Person(String name,int age) {
this.name = name;
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
}
注意:有时候我们在方法内部类中(android setListener中),想访问形参数据,这个时候我们可以用final修饰。