再谈静态时,我们先说说对象的内容,什么是对象,比如我要建立一个Scanner的对象我们会这样做Scanner duixiang=new Scanner(System.in);意思是我要用Scanner类的时候要建立Scanne的对象,通过对象来引用,我们怎样才能不用建立对象就能引用呢?这时候就能突出静态的static的作用了,看代码
import java.util.Scanner; class fact{ fact(){ System.out.println("你好");//这是构造方法是构造函数 } //类名=方法名我们称为构造函数 void fact1(){ System.out.println("hello"); static int fact(int k){ //两个函数名相同,参数不同我们称为构造函数的重载 if(k==1){ return 1; } else { return k*fact(k-1); } } public static void main(String[] args) { int j,f,sum=0; int k; System.out.println("请输入你需要的阶乘数:"); Scanner in=new Scanner(System.in); int i=in.nextInt(); for(j=1;j<=i;j++){ sum+=fact(j);//为什么fact可以直接用而不是“对象.fact(j)”因为加了静态static所以直接用 }System.out.print("1!+2!+3!...+n!="+sum);//这里会输出累加的结果 //而没有静态的fact()需要创建对象才能用 fact dx=new fcat(); //构造函数在创建的时候直接引用,因为他没返回值类型也没void所以 //他是缺省值,缺省值可以直接用,这句会输出“你好” fact dx1=new fact(); //创建对象的方式 类名 对象 = new 类名() dx1.fact1(); //这个对象只能引用fact1()的内容,因为静态的不能被对象引用, //这里会输出hello } }
运行结果:
请输入你需要的阶乘数:
假如你输入的是:5
1!+2!+3!...+n!=153
你好
hello