1、static
package ClassN;
final class Static1 {
//静态变量,静态方法,静态代码块
//static 不能拿来修饰类
static String num;//类变量(静态变量),类加载过程中分配一次内存,类名.变量名访问/对象.变量名访问
private String name;//实例变量,创建一个实例就分配一次内存,只能对象.变量名访问
static {//静态代码块,初始化静变量、静态方法。整个块在类加载时只被执行一次,单独分配一块内存进行存储,且是先于其他非static代码先执行。
Static1.num="100";
Static1 s11=new Static1();
s11.name="BOBO3";
System.out.println(s11.getName());
}
public Static1() {
}
public static void main(String[] args) {
Static1.num="....";//访问:类.类变量名
Static1 s1=new Static1();
s1.name="BOBO1";
s1.num="hahahah";//对象.变量名访问
//System.out.println(num);
System.out.println(s1.name);
Static1 s2=new Static1();
s2.name="bobo2";
s2.num="123";
//System.out.println(num);
System.out.println(s2.name);
testStatic1();
s2.setName("hahah");
}
static void testStatic1() {//静态方法、类方法
//System.out.println(getName());
testStatic2(); //static方法:能访问静态(类)方法变量、 不能访问实例方法变量
//System.out.println(name);
System.out.println(num); //static方法: 能访问静态(类)方法、不能访问实例方法(但是实例方法能够访问静态方法)
//System.out.println(this.name); //不能出现this、super关键字
}
static void testStatic2() {
System.out.println("static2 被调用");
}
String getName() {//实例方法
System.out.println("实例方法被调用");
return name;
}
void setName(String name) {
testStatic2(); //实例方法能够访问静态方法
this.name = name;
}
}
2、final
package ClassN;
final class Final1 {//final 修饰类:此类不能有子类
final static String name="BOBO";//final:修饰静态变量,此变量声明时要求被初始化。
final String address;//final:修饰静态变量,此变量声明时要求被初始化或在构造函数中被初始化(每个构造函数都要包括这个变量)。
String team;
static {
}
Final1(String address) {
super();
this.address = address;
}
public Final1(String address,String team) {
this.address=address;
this.team=team;
}
public static void main(String[] args) {
Final1.println2(100, 1000);
}
final void println1() {//final修饰方法:此方法不能被重写、覆盖
System.out.println("final 方法被调用");
}
static void println2( final int a,final int b) {//final修饰形参,函数在被调用时被初始话,函数执行过程中不会改变值的大小。
int aa=a+b;
System.out.println(aa);
}
}