不算重零开始的java学习
第五篇
NO.1 非静态方法与静态方法 非静态方法
public class Song{
String title;
public Song(String t){
title = t;
}
public void play(){
SoundPlayer player= new SoundPlayer();
player.playerSound(tilte);//title的值会决定play()方法里面的内容
}
}
静态方法
public static int min(int a,int b){
//sth.没有实例变量
}
静态方法时根据类的名字来调用,所以静态方法无法引用该类的任何引用变量
public class Duck{
private int size;
public static void main(String arg[]){
System.out.println(size);//error,size是什么?
}
public void setSize(int s){
size = s;
}
public int getSize(){
return size;
}
}
public Duck{
int duckCount = 0;
public Duck(){
duckCount++;
}
}
上述这段代码,duckCount会递增么?显然不会,duckCount作为一个实例变量,每次初始化都会重新变为0 那么如何才能实现这个效果
public class Duck{
private int size;
private static int duckCount = 0;//静态的duckCount只有在第一次加载的时候会被初始化
public Duck(){
duckCount++;
}
public void setSize(int s){
size = s;
}
public int getSize(){
return size;
}
}
NO.2
静态变量
静态变量是在类被加载时初始化的,同一个类共享一个静态变量。静态项目初始化有两个保证:
1、静态变量会在该类的任何对象创建之前被初始化
2、静态变量会在该类的任何静态方法执行之前完成初始化
public player{
static int playerCount = 0;
private Strign name;
public Player(String n){
name = n;
playerCount++;
}
}
public class PlayerTestDrive{
public static void main (String arg[]){
System.out.println(player.playerCount);//0
Player one = new Player("Tiger Woods");
System.out.println(player.playerCount);//1
}
}