黑马程序员技术交流社区

标题: 静态代码块 [打印本页]

作者: 刺客015    时间: 2016-1-25 09:50
标题: 静态代码块
静态代码块优先于主函数吗     他的存在有什么作用??静态代码块需要返回值吗
作者: 吴迪    时间: 2016-1-25 21:28
静态代码块的格式:

static
{
        静态代码块中的执行语句。
}

静态代码块的特点:随着类的加载而执行,只执行一次,并优先于主函数执行。

静态代码块的作用:一般用于给类进行初始化。

静态代码块中执行语句不需要返回值。

以下代码用于验证静态代码块的执行优先级高于主函数:

  1. public class StaticTest {
  2.         //静态代码块
  3.         static{
  4.                 System.out.println("b");
  5.         }
  6.         //主函数
  7.         public static void main(String[] args) {
  8.                 StaticDemo sd = new StaticDemo();
  9.                 System.out.println("d");
  10.         }
  11.         //静态代码块
  12.         static{
  13.                 System.out.println("c");
  14.         }
  15. }
  16. class StaticDemo{
  17.         //静态代码块
  18.         static{
  19.                 System.out.println("a");
  20.         }
  21. }
复制代码

作者: hekaikai    时间: 2016-1-25 22:45
静态代码块的作用:一般用于给类进行初始化。

静态代码块中执行语句不需要返回值
作者: only-hou    时间: 2016-1-26 00:55
静态代码块,随着类的加载而执行。仅仅执行一次,并优先于主函数。主要是为了给类进行初始化操作。
作者: ambitios0    时间: 2016-1-26 02:17
一 般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情 况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的. 静态方法在类加载的时候 就已经加载 可以用类名直接调用 比如main方法就必须是静态的 这是程序入口 两者的区别就是:静态代码块是自动执行的; 静态方法是被调用的时候才执行的. 静态方法 (1)在Java里,可以定义一个不需要创建对象的方法,这种方法就是静态方法。要实现这样的效果,只需要在类中定义的方法前加上static关键字。例如: public static int maximum(int n1,int n2) 使用类的静态方法时,注意:  a在静态方法里只能直接调用同类中其他的静态成员(包括变量和方法),而不能直接访问类中的非静态成员。这是因为,对于非静态的方法和变量,需要先创建类的实例对象后才可使用,而静态方法在使用前不用创建任何对象。 b 静态方法不能以任何方式引用this和super关键字,因为静态方法在使用前不用创建任何实例对象,当静态方法调用时,this所引用的对象根本没有产生。 (2)静态变量是属于整个类的变量而不是属于某个对象的。注意不能把任何方法体内的变量声明为静态,例如: fun() { static int i=0;//非法。 } (3)一个类可以使用不包含在任何方法体中的静态代码块,当类被载入时,静态代码块被执行,且只被执行一次,静态块常用来执行类属性的初始化。例如: static { }
作者: Mayer    时间: 2016-1-26 11:11
一楼说的好像就是答案
作者: 我是庄子    时间: 2016-1-27 10:28
朋友,我是来要黑马币的
作者: jacky左    时间: 2016-1-27 12:44
是的,静态代码块简单说就是加上static的构造代码块.存在与类中方法外,例如
class  Test{
    static{
        System.out.println("我是静态代码块");
    }
          System.out.println("我是代码块");
    {
      
    }
    public static void main(String[] args){
       System.out.println("我是主方法");
     }
}

上面的顺序可以打乱.执行顺序是 静态代码块>代码块>主方法
静态代码块只在类加载的时候执行一次,一般用于加载配置文件,构造代码块是一般用来初始化数据的,每次new一个类的对象就会执行一次.纯手打,不明白的可以继续问我
作者: 梁志朋    时间: 2016-1-27 22:56
static{         静态代码块中的执行语句。 } 特点:随着累的加载而执行,只执行一次,并优先于主函数。用于给类进行初始化的。
作者: cjwhale    时间: 2016-1-27 22:56
静态代码块用来给类中的静态成员变量初始化用的.
作者: ma464526717    时间: 2016-1-28 14:41
静态代码块优先于主函数,他的作用是初始化,静态代码不需要返回值。
作者: sydsyd    时间: 2016-1-28 23:27
静态代码块优先于类存在,是给类进行初始化。类加载后如果有main会先执行main,然后执行构造代码块,构造代码块给所有的对象进行初始化。如果有创建实例对象,则会执行构造函数,构造函数是给对应的对象进行实例初始化。
作者: 18817602013    时间: 2016-1-29 15:00
我的理解是:静态代码块只是主函数的一部分,主函数刚调动时就运行静态代码块,他的作用是对主函数进行初始化,静态代码块不需要返回值
作者: 胖小子    时间: 2016-1-29 22:15
一般用于初始化,优先级最高,我还没见过 有人返回值
作者: 15521086286    时间: 2016-1-29 23:04
静态代码块优先于主函数吗 优先
他的存在有什么作用??   用来加载需要随着类加载的资源,例如玩游戏的开场动画,你以打开游戏就是可以.
静态代码块需要返回值吗   不是说需要不需要,静态代码块没有返回值,,如果你些了,就会报错,例如
public class Demo {
public static void main(String[] args) {

        }
static{
        int b=1;
        return b;
}
}
是报错的,
作者: ambitios0    时间: 2016-1-30 23:55
111111111111111111111111
作者: 1900    时间: 2016-2-3 14:52
静态代码块在类中方法外出现,并加上static修饰;用于给类进行初始化,在加载的时候就执行,并且只执行一次。在开发中 一般用于加载驱动,例如游戏启动时,需要先加载一些驱动。
作者: 旼旼    时间: 2016-2-4 23:00
1.静态代码块 随着类的加载而执行,只执行一次,并优先于主函数,也优先于构造代码块。2.类加载的时候就会去执行静态代码块的内容。比如说:写连接数据库的那些内容时,经常有classforName("XXX"),用于加载一些东西,这些东西就可以写在静态代码块中。还有一些,你想让类加载时就执行的程序也可以放在里面。3.静态方法和返回值没有关系呀?如果一个方法没有访问对象的特有数据就可以定义为静态的,这样就可以通过类名直接调用,而没有必要通过创建对象来调用,这就是静态方法
作者: yuchifeifan    时间: 2016-2-5 20:20
优先主函数 一班情况下是用来加载驱动和 初始化一些与类相关的属性的
作者: 陈梦佳    时间: 2016-2-8 20:54
class Demo{
        {        // 直接在类中编写代码块,称为构造块
                System.out.println("1、构造块。") ;
        }
        static{        // 使用static,称为静态代码块
                System.out.println("0、静态代码块") ;
        }
        public Demo(){        // 定义构造方法
                System.out.println("2、构造方法。") ;
        }
};
public class CodeDemo03{
        static{                // 在主方法所在的类中定义静态块
                System.out.println("在主方法所在类中定义的代码块") ;
        }
        public static void main(String args[]){
                new Demo() ;                // 实例化对象
                new Demo() ;                // 实例化对象
                new Demo() ;                // 实例化对象
        }
};
静态代码块优先于主方法执行,不管有多少个对象产生,静态代码块只执行一次,没有返回值。
作者: 斐不懂    时间: 2016-2-12 21:39
对类进行初始化,不要返回值吧
作者: diaokb    时间: 2016-2-18 18:16
静态代码库一般用于加载驱动的   
作者: 夜正黑    时间: 2016-2-19 19:42
静态代码块
在类中方法外出现,并加上static修饰;
用于给类进行初始化,在加载的时候就执行,并且只执行一次。
一般用于加载驱动,初始化一些必要的东西,优先于主方法
作者: stapan1    时间: 2016-2-24 14:48
静态代码块是随着类的加载而加载的,且只执行一次,它的存在是用来给类进行初始化的,一般用来加载驱动。静态代码块的格式是static{

代码块
}
作者: 赵雄    时间: 2016-2-25 12:13
static
{
        静态代码块中的执行语句。
}
静态代码块的特点:随着类的加载而执行,只执行一次,并优先于主函数执行。
静态代码块的作用:一般用于给类进行初始化。
静态代码块中执行语句不需要返回值。
作者: cc19930915    时间: 2016-2-28 13:52
我只是来拿B的
作者: AlphaCC    时间: 2016-3-5 16:19
静态代码块是在类的加载时被执行,而且只执行一次,静态代码块不用返回值。


作者: gaoduilaile    时间: 2016-3-12 22:34
静态代码块先于主函数,一般用于加载驱动,不需要返回值。
作者: 飞扬的king    时间: 2016-3-20 21:48
静态代码块  对类的数据进行初始化,仅仅只执行一次。
作者: 604840337    时间: 2016-3-21 22:37
静态代码块优于主函数 是随着类的加载而加载 也就是说当类创建的时候 他就有了
作者: zhengxiaomin    时间: 2016-3-22 22:38
静态代码块优先于主函数,所以会先运行并且只运行一次,可以用于加载程序需要的文件或者驱动,相当于初始化。类似于构造代码块,不需要返回值。
作者: skxy2016    时间: 2016-3-23 14:25
/*
静态代码块:
静态代码块的特点:随着类的加载而执行,只执行一次,并优先于主函数执行。

静态代码块的作用:一般用于给类进行初始化。

静态代码块中执行语句不需要返回值。
*/

class B{
        static{
                System.out.println("in class B!");
                }
        }
public class StaticTest{
        //优先于main函数执行
        static{
                System.out.println("in StaticTest A!");}
               
                public static void main(String[] args){
                        System.out.println("in main!");
                       
                        //随着类的加载而加载
                        B b = new B();
                        //只执行一次,再创建一个新对象时不会再执行。
                        B c = new B();
                        }
                       
                        //优先于main函数执行
                static{
                System.out.println("in StaticTest B!");}
               
                static{
                System.out.println("in StaticTest C!");
                //return 3;//编译出错,错误内容:返回外部方法
                }
        }
作者: chaojiwudi    时间: 2016-3-26 20:31
静态代码块 写在类中 优先于主函数  只加载一次 好比驱动 先执行
作者: linguoqun    时间: 2016-8-2 23:32
楼主,您好!很高兴为您解答!
静态代码块是优先于主函数的!
程序还没执行main函数里面的代码,静态代码块里面的内容就已经在内存的静态块声明好了。静态代码块里面的内容都是优先于main函数,
他的存在是使静态代码块里定义的变量的值不能被修改,而且只有一份,只有程序结束的时候才会被回收。节省了内存空间。避免了重复定义。而且一些系统在运行时需要加载一些数据,这样就可以把这些数据定义在静态代码块中,以便系统一运行就能加载。
静态代码块不需要返回值。原因很简单,静态代码块里的定义的变量是整个程序都能直接访问的。
纯手打的,满意请采纳,谢谢!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2