public class Boke {
public static void showDetails(String name,int age){
System.out.println("自我介绍一下,姓名:"+name+",年龄:"+age);
}
public static void main(String[] args) {
Boke.showDetails("张三",20);//类名调用静态方法
}
}
还可以定义static块
类名首次出现时,先为静态变量分配内存,然后调用静态块,静态块可以为静态变量初始化。还可以干别的事情。
静态块只在类名首次出现时调用一次,以后再也不调用了。
例如:
public class Demo{
//构造为实例变量初始化
public Demo(int i){
this.i = i;
}
//静态块,为static变量初始化,静态块在首次类名出现时调用,但后于分配静态变量。
static{
age = 20;
}
static int age=0;
int i;
}
在面向对象程序设计中,“类”在实例化之后叫做一个“实例”。 “类”是静态的,不占进程内存,而“实例”拥有动态内存。
private String shopName;
private double shopPrice;
private int shopNum;
public double getAllTotal(){
if(this.goods==null){
throw new RuntimeException("商店中没有任何商品,无法统计总金额");
}
double sum = 0;
for (int i = 0; i < goods.length; i++) {
sum += goods[i].getTotal();
}
return sum;
}
static:静态(属于类,只有一份)
instance:实例(实例也叫对象,就是new出来的堆的内存空间,实例是每个对象专有的,每new一次就分配一次内存)
1、调用方式
在外部调用静态方法时,可以使用 类名.方法名 的方式,也可以使用 对象.方法名 的方式,而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象 。
不过,需要注意的是一般不建议使用 对象.方法名 的方式来调用静态方法。这种方式非常容易造成混淆,静态方法不属于类的某个对象而是属于这个类。因此,一般建议使用 类名.方法名 的方式来调用静态方法。
2、访问类成员是否存在限制
public class Test {
public static void main(String[] args) {
}
public void sayHello(){
}
public static void sayHi(){
sayHello();
}
}//此时静态方法是无法调用不知道是否存在的非静态成员的