zoukankan      html  css  js  c++  java
  • 转转转!!java基础一些静态代码块等知识点

    一、代码块:                                        

    构造代码块------类中方法的外面;每次调用构造方法都执行;

    静态代码块------类中方法的外面,括号前加上static;只执行一次,随着类的加载而执行;


     static代码块、构造代码块,自己写的做实验的小例子:

     1 public class TestStatic{
     2     public static void main(String args[]){
     3         TestBlock t1 = new TestBlock();
     4         System.out.println(t1);
     5         System.out.println("-------------------------");
     6         
     7         TestBlock t2 = new TestBlock(50);
     8         System.out.println(t2);
     9         System.out.println("-------------------------");
    10         
    11         TestBlock t3 = new TestBlock(11, "lisi");
    12         System.out.println(t3);
    13     }
    14 }
    15 
    16 class TestBlock{
    17     
    18     int id = 100;
    19     String sex;
    20     String name;
    21     
    22     //static block, when the class load, execute it;
    23     static {
    24         System.out.println("init TestBlock....");
    25     }
    26     
    27     //constructor block, when constructor method execute, this block execute
    28     {
    29         sex = "male";
    30         name = "zhangsan";
    31         System.out.println("init begin constructor...");
    32     }
    33     
    34     TestBlock(){
    35         
    36     }
    37     
    38     TestBlock(int id){
    39         this.id = id;
    40     }
    41     
    42     TestBlock(int id, String name){
    43         this.id = id;
    44         this.name = name;
    45     }
    46     
    47     public String toString(){
    48         return "id: " + id + " sex: " + sex + " name:" + name;
    49     }
    50     
    51 }
    View Code

    打印结果:

    ===============================================================================

    1 java中的length属性是针对数组说的,比如说你声明了一个数组,想知道这个数组的长度则用到了length这个属性.
    2 java中的length()方法是针对字符串String说的,如果想看这个字符串的长度则用到length()这个方法.
    3.java中的size()方法是针对泛型集合说的,如果想看这个泛型有多少个元素,就调用此方法来查看!
    ==================================================================================
    类什么时候被加载?                                          
    --类用到的时候才被加载;
    比如下面一段代码:
    public class StudentTest {
        
        static{
            System.out.println("StudentTest类被加载了.");
        }
        
        private static SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
        
        //添加学生
        private void add(){
            System.out.println("add方法开始执行...");
            Session session = sessionFactory.openSession();    //生成一个session
            session.beginTransaction();        //开启事务
            
            Student s = new Student();
            s.setName("张三");
            session.save(s);
            
            session.getTransaction().commit();    //提交事务
            session.close();    //关闭session
        }
        
        public static void main(String[] args) {
            StudentTest studentTest = new StudentTest();
            studentTest.add();
            
        }
    }

    我在HibernateUtil.getSessionFactory()方法中把读取hibernate配置文件的代码注释掉了,也读取不到Student的映射文件;

    结果打印:

    StudentTest类被加载了.
    HibernateUtil类被加载了.
    add方法开始执行...
    Exception in thread "main" java.lang.NullPointerException
        at com.cy.service.StudentTest.add(StudentTest.java:23)
        at com.cy.service.StudentTest.main(StudentTest.java:36)

    main中的方法用到了StudentTest,无疑首先被加载了;

    StudentTest中使用到了HibernateUtil类,所以打印HibernateUtil类被加载了;

    一直打印了add方法开始执行,都没有打印student类被加载,因为此时student类压根就没有用到!!

    ===========================================================================================
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    模拟实现bind、call、apply函数
    模拟实现ECMAScript5新增的数组方法
    HBuilder mui页面间传值的几种方式
    手机端软键盘弹出挤压页面的问题
    js获取当前时间
    原生js根据class获取元素的方法
    jquery之获取select选中的值
    原生js获取元素属性值方法
    利用javascrit获取url传递的参数
    jQuery图片预加载(延迟加载)之插件Lazy Load
  • 原文地址:https://www.cnblogs.com/tenWood/p/6523700.html
Copyright © 2011-2022 走看看