静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员,若需要调用时需创建类对象来实现,然后通过对象来访问非静态变量。
在普通成员方法中,则可以直接访问同类的非静态变量和静态变量。
静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。
在普通成员方法中,则可以直接访问同类的非静态变量和静态变量。
静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。
2016-09-23
java中被static修饰的成员成为静态成员或者类成员。它属于整个类所有,而不是某个对象所有,即被类的所有对象所分享。静态成员可以使用类名直接访问,也可以使用对象名进行访问。当然鉴于他的作用的特殊性更推荐用类名访问
2016-09-23
成员变量和局部变量
成员变量定义在类中
局部变量定义在方法中
区别
成员变量的作用域在整个类中
局部变量的作用域仅限于方法中
Java会给成员变量赋初始值 而不会给局部变量赋值
在同一个方法中,对变量只能赋值一次
不同方法中可以定义同名的局部变量
两类变量同名时,局部变量有优先级,就近原则
成员变量定义在类中
局部变量定义在方法中
区别
成员变量的作用域在整个类中
局部变量的作用域仅限于方法中
Java会给成员变量赋初始值 而不会给局部变量赋值
在同一个方法中,对变量只能赋值一次
不同方法中可以定义同名的局部变量
两类变量同名时,局部变量有优先级,就近原则
2016-09-23
两个name重名,为了区别是外部类的name要加上HelloWorld.this.name。如果将外部类的name改成name1,内部类的改为name2,直接输出name1,name2是可以的。
2016-09-23
static int score1 = 86;
// 定义静态变量score2
static int score2 = 92;
// 定义静态方法sum,计算成绩总分,并返回总分
public static int sum() {
int sum = score1+score2;
return sum;
}
public static void main(String[] args) {
// 调用静态方法sum并接收返回值
int allScore = sum();
// 定义静态变量score2
static int score2 = 92;
// 定义静态方法sum,计算成绩总分,并返回总分
public static int sum() {
int sum = score1+score2;
return sum;
}
public static void main(String[] args) {
// 调用静态方法sum并接收返回值
int allScore = sum();
2016-09-23
不管静态方法,还是非静态方法,都直接用对象名调用
StaticMethod sm =new StaticMethod();
sm.print();
sm.show();
StaticMethod sm =new StaticMethod();
sm.print();
sm.show();
2016-09-23
public class HeroDota2 {
public String name;
public int damage;
public void skill(){
System.out.println("英雄能使用技能!");
}
}
public class Hero extends HeroDota2 {
}
public class Test {
public static void main(String[] args){
Hero hero =new Hero();
hero.name="Axe";
hero.damage=47;
hero.skill();
}
}
public String name;
public int damage;
public void skill(){
System.out.println("英雄能使用技能!");
}
}
public class Hero extends HeroDota2 {
}
public class Test {
public static void main(String[] args){
Hero hero =new Hero();
hero.name="Axe";
hero.damage=47;
hero.skill();
}
}
2016-09-23
同名的java文件在一个java文件中只能存在一个,但是如果想要两个同名的java类,那么一个可以用import的方式,另一个则可以写类的全限定名,也就是"包名.类名",如果有多个包则可以"包名.包名...类名"
2016-09-22