一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的.
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:主机域名、虚拟主机、营销软件、网站建设、二道网站维护、网站推广。
两者的区别就是:静态代码块是自动执行的;
静态方法是被调用的时候才执行的.
作用:静态代码块可用来初始化一些项目最常用的变量或对象;静态方法可用作不创建对象也可能需要执行的代码.
static代码块是在类初始化时就被虚拟机执行的,所以最先输出的是d。
main方法是静态方法,是在类加载完之后由虚拟机调用的,调用之后才会输出c1。
一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;
类加载的时候就会去执行静态代码块的内容。比如说:写连接数据库的那些内容时,经常有classforName("XXX"),用于加载一些东西,这些东西就可以写在静态代码块中。还有一些,你想让类加载时就执行的程序也可以放在里面。
1、变值权限修饰作用,在定义内部类的时候,可以在其前面加上一个权限修饰符static。此时这个内部类就变为了静态内部类。
2、在某些特殊的情况下,少了这个静态内部类还真是不行。如在进行代码程序测试的时候,如果在每一个Java源文件中都设置一个主方法(主方法是某个应用程序的入口,必须具有),那么会出现很多额外的代码。
3、最主要的时这段主程序的代码对于Java文件来说,只是一个形式,其本身并不需要这种主方法。但是少了这个主方法又是万万不行的。在这种情况下,就可以将主方法写入到静态内部类中,从而不用为每个Java源文件都设置一个类似的主方法。
这对于代码测试是非常有用的。在一些中大型的应用程序开发中,则是一个常用的技术手段。
扩展资料
例如:
对于两个类,拥有相同的方法:
class People{
run();
}
interface Machine{
run();
}
此时有一个robot类:
class Robot extends People implement Machine.
此时run()不可直接实现。
interface Machine{
void run();
}
class Person{
void run(){
System.out.println("run");
}
}
class Robot extends Person{
private class MachineHeart implements Machine{
public void run(){
System.out.println("heart run");
}
}
public void run(){
System.out.println("Robot run");
}
Machine.getMachine(){returnnew MachineHeart();
}
class Test{
publicstaticvoid main(String[] args){
Robot robot=new Robot();
Machine m=robot.getMachine();
m.run();
robot.run();
}
}
参考资料来源:百度百科-静态内部类
有静态代码段
static
{}
使用类似这样的静态代码段就可以;另外;静态代码段不会出现在方法中。static代码段在加载类的时候执行;而且,同一个类的静态代码段在同一个进程中只执行一次。
另外还有静态方法。注意;静态方法是在类的构造函数执行之前执行。