1. 静态变量和方法从属于类,不需要通过对象调用,可以直接通过类调用
public class Test{
public static void main(String[] args){
System.out.println(Student.name);
System.out.println(Student.getAge());
}
}
class Student{
public static String name="郭靖";
private static int age=23;
public static String getAge(){
return age;
}
}
2. 静态变量不能通过this赋值,因为this指的是当前对象,而不是当前类。
public class Test{
public static void main(String[] args){
}
}
class Student{
public static String name="郭靖";
private static int age=23;
public static void setAge(int Age){
age=Age;
}
public static void setName(String name){
this.name=name;
}
}
3. 类中的普通方法可以调用静态方法和普通方法,但静态方法只能调用静态方法不能调用普通方法,问题的关键在于静态发放从属于类,普通方法从属于对象。
public class Test{
public static void main(String[] args){
Student s1=new Student();
s1.sayAge();
}
}
class Student{
public static String name="郭靖";
private static int age=23;
public void sayAge(){
System.out.println(getAge());
}
private static int getAge(){
return age;
}
public static void say(){
sayAge();
}
}
4. 类中的普通方法可以调用静态变量和普通变量,但静态方法只能调用静态变量不能调用普通变量。
public class Test{
public static void main(String[] args){
}
}
class Student{
public static String name="郭靖";
private int age=23;
public void sayName(){
System.out.println(name);
}
public static void sayAge(){
System.out.println(age);
}
}
5. 静态代码块
- 静态代码块运行在构造方法之前,静态代码块中可以调用静态方法静态变量,不能调用非静态方法和没有在代码块里面的非静态变量。
public class Test{
public static void main(String[] args){
Student s=new Student();
}
}
class Student{
public static String name="郭靖";
static {
int age=23;
System.out.println(name);
System.out.println(age);
sayName();
}
public Student() {
System.out.println("构造方法");
}
public static void sayName(){
System.out.println(name);
}
}
运行结果是:
郭靖
23
郭靖
构造方法