Java中的关于static的解释和应用
1.什么是高级类的特性修饰符?分别可以修饰哪些内容?
答:1). static: 修饰属性、方法、块、内部类
2). final: 修饰类、常量属性、方法、局部常量
3). abstract: 修饰类、方法
4). synchronized: 修饰方法、同步代码块
2.什么是static?
答:static被称为静态,可以用来修饰类的属性和方法。
3.什么是static属性?
答:如果类的某个属性,不管创建多少个对象,属性的存储空间只有唯一的一个,那么这个属性就应该用static修饰,被static修饰的属性被称为静态属性。
*static属性可以使用对象调用,也可以直接用类名调用。
*静态属性是类的所有对象共享的,即不管创建多少个对象,静态属性在内存中只有一个。
例:public class Employee{
非静态 private string name;
属性 private double salary;
属性 private static int count;
4.什么是静态方法? 并且举例说明各部分是什么?
答:如果某个方法不需要与某个特定的对象绑定,那么该方法可以使用static修饰,被static修饰的方法称为静态方法。
例:
Public static void sellticket(){
System.out.println(“所有火车票都是12306卖的”);
}
5.如何使用static 方法?
答:如果某个方法与实例无关,也就是说不管哪个对象调用这个方法,都执行相同的操作,与对象没有关系,则应该定义为静态方法。不需要创建对象后再使用该方法。
例:API中的Math类,都是静态方法,因为进行数学运算时,与Math对象本身无关,使用类直接调用即可。
**1.任何方法都可以直接调用静态方法。
2.静态方法不能直接调用非静态方法,需要创建对象,用方法名调用非静态方法。
6.什么是static 块?如何在编译器中使用?请举例说明。还有哪些注意事项?
答:static块和static的属性以及方法的性质是相同的,用static修饰的代码块表示静态代码块,当Java虚拟机加载类时,就会执行该代码块。
例:直接在代码块前,加上关键字static即成为静态块。
Static{
System.out.println(“123”);
System.out.println(“123”);
System.out.println(“123”);
}
注意:1).静态块只有在类加载的时候被执行一次,不管创建多少个对象,都不会再执行。
2). 如果一个类加载的时候,总要预先做一些事情,则可以放在静态块中,例如,读取一个属性文件,进行一些常规配置,写一些日志等。
3).一个类中可以有多个静态块,按照顺序执行。
7. 什么是final?如何使用final?
答:final用于声明属性,方法和类
1).属性:定义就必须直接赋值或者在构造方法中进行赋值,并且后期不能修改。
2).方法:定义必须有实现代码,并且子类里不可被覆盖。
3).类:不能被定义为抽象类或是接口,不可被继承。
8.如何使用final修饰属性?
答:当final修饰属性时,基本数据类型的属性将成为常量,不能被修改。
例:* π= 3.14159265358979
E= 2.718281828459045
9.如何给final属性赋值?
答:1).在声明时同时赋值,往往与static一起使用
例:private int index;
private static final double pai = 3.14;
private final int level;
2).声明时不赋值,必须在构造方法中逐一赋值
Public Test(){
Level = 0;
}
3).总的原则:保证创建每一个对象的时候,final属性的值是确定的。
public Test(int index){
this.index = index;
Level = 1;
}
10.如何使用final修饰参数?
答:在方法参数前面加final关键字,为了防止数据在方法体中被修改。
public class Ex{
private int a = 1;
private String b;
Public void ww(final int a){
a = 12;
}
}
11.如何在编译器中使用变量和常量?
答:按作用域区分
Public class Employee{
Private String name;
Private double salary;
Private static int count;
Public void work(String leader){
String taskname = null;
//1).在类中声明的变量或常量叫属性,或者叫成员变量,如:name,salary,count
2).属性可以使用static修饰,局部变量不可以。
3).属性的生命周期很长,随着类加载或者创建对象被初始化,直到没有对象引用才回收。
4).在方法中声明的变量叫局部变量,或者临时变量。
5).属性可以使用四种权限修饰符修饰局部变量不可以。
6).属性可以使用final修饰,局部变量也可以
7).局部变量生命周期很短,执行某个方法时临时被初始化,方法结束即被回收。
8).如果局部变量与属性重名,则遵守就近原则,可以使用this区分。
9).属性可以在整个类中使用,局部变量只在当前方法中使用
10).属性都有默认的初始化值,如引用类型都是null,整型是0等,局部变量不被自动初始化,必须手工初始化,如taskname手工指定为null才为null,而属性name默认就为null
}
}