黑马程序员技术交流社区

标题: 静态代码块, 构造代码块,构造方法在内存是怎样的? [打印本页]

作者: yaolv7    时间: 2016-4-7 22:14
标题: 静态代码块, 构造代码块,构造方法在内存是怎样的?
class Student {
                        static {
                                System.out.println("Student 静态代码块");
                        }
                       
                        {
                                System.out.println("Student 构造代码块");
                        }
                       
                        public Student() {
                                System.out.println("Student 构造方法");
                        }
                }

怎么理解这个???
作者: 251855915    时间: 2016-4-7 22:52
ststic在内存中是静态方法随着类的创建进入到内存中的方法区,
  1. public Student() {
  2.                                 System.out.println("Student 构造方法");
  3.                         }
复制代码

这个方法和类名相同,就是构造函数(方法);

构造代码块应该就是就是构造变量吧?
作者: 912392824    时间: 2016-4-7 23:02
静态代码块优先于构造代码块,构造代码块优先于构造方法,静态代码块只执行一次,构造代码块每次创建对象都调用,构造代码块调用才执行
作者: 荒丶    时间: 2016-4-8 07:28
静态的随着类加载而加载.非静态的在栈中.
作者: 251855915    时间: 2016-4-8 15:05
251855915 发表于 2016-4-7 22:52
ststic在内存中是静态方法随着类的创建进入到内存中的方法区,

这个方法和类名相同,就是构造函数(方法);

今天才学到代码块的知识,像以前的错误检讨!!!!!!!!!
作者: yy0328    时间: 2016-4-8 18:01
还没学到   看看其他大神回答
作者: yaolv7    时间: 2016-4-8 18:10
人笨,还是不明白呐.....
作者: syasuker    时间: 2016-4-8 19:52
  1. class Student
  2. {
  3.         static //静态代码块随着类的加载而加载,优先于对象,只执行一次
  4.         {
  5.                 System.out.println("Student 静态代码块");
  6.         }



  7. /*
  8.         构造代码块。
  9.         作用:给对象进行初始化。
  10.         对象一建立就运行,而且优先于构造函数执行。
  11.         和构造函数的区别:
  12.         构造代码块是给所有对象进行统一初始化,
  13.         而构造函数是给对应的对象初始化。
  14.         构造代码快中定义的是不同对象共性的初始化内容。
  15.         构造代码块每次创建对象都调用
  16. */
  17.         {
  18.                 System.out.println("Student 构造代码块");
  19.         }



  20.         public Student() //构造函数要调用才加载
  21.         {
  22.                 System.out.println("Student 构造方法");
  23.         }
  24. }
复制代码





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