转转转!!java基础一些静态代码块等知识点
一、代码块:
构造代码块------类中方法的外面;每次调用构造方法都执行;
静态代码块------类中方法的外面,括号前加上static;只执行一次,随着类的加载而执行;
static代码块、构造代码块,自己写的做实验的小例子:
public class TestStatic{
public static void main(String args[]){
TestBlock t1 = new TestBlock();
System.out.println(t1);
System.out.println("-------------------------");
TestBlock t2 = new TestBlock(50);
System.out.println(t2);
System.out.println("-------------------------");
TestBlock t3 = new TestBlock(11, "lisi");
System.out.println(t3);
}
}
class TestBlock{
int id = 100;
String sex;
String name;
//static block, when the class load, execute it;
static {
System.out.println("init TestBlock....");
}
//constructor block, when constructor method execute, this block execute
{
sex = "male";
name = "zhangsan";
System.out.println("init begin constructor...");
}
TestBlock(){
}
TestBlock(int id){
this.id = id;
}
TestBlock(int id, String name){
this.id = id;
this.name = name;
}
public String toString(){
return "id: " + id + " sex: " + sex + " name:" + name;
}
}
打印结果:

===============================================================================
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类压根就没有用到!!
转转转!!java基础一些静态代码块等知识点的更多相关文章
- java基础之静态代码块,局部代码块,构造代码块区别。
java中有几种常见的代码块,那怎样区别他们呢? 这里就这些问题,浅谈下我个人的理解. 1.局部代码块 局部代码块,又叫普通代码块.它是作用在方法中的代码块.例如: public void show( ...
- Java面试题 静态代码块 构造代码块 构造方法 的执行顺序
JAVA中的静态代码块 构造代码块 构造方法执行顺序: 静态代码块(类加载时执行)>>构造代码块>>构造方法 下面展示一个简单的例子,推荐大家动手运行一遍: public cl ...
- Java之static静态代码块
Java之static静态代码块 构造代码块 使用{}包裹的代码区域,这里的代码区域特指位于class{}下面的而不是存在于其他type method(){}这类函数下面的代码区域 public cl ...
- 5.1JAVA基础复习——JAVA中的静态代码块、构造代码块、构造函数、局部代码块区别
构造代码块: 在类中定义可以给所有对象进行初始化.局部代码块: 在方法中定义属性的生命周期.静态代码块: 在类中定义用于给类调用时属性的初始化 构造函数与构造代码块的区别: 构造函数是给对应的对象进行 ...
- Java提高篇——静态代码块、构造代码块、构造函数以及Java类初始化顺序
静态代码块:用staitc声明,jvm加载类时执行,仅执行一次构造代码块:类中直接用{}定义,每一次创建对象时执行.执行顺序优先级:静态块,main(),构造块,构造方法. 构造函数 public H ...
- java中的静态代码块、构造代码块、构造方法
运行下面这段代码,观察其结果: package com.test; public class HelloB extends HelloA { public HelloB() { } { System. ...
- java学习(一)静态代码块 构造代码块 构造方法的执行顺序及注意问题
今天我总结了一下java中静态代码块 构造代码块 构造方法的执行顺序及其注意问题 首先要知道静态代码块是随着类的加载而加载,而构造代码块和构造方法都是随着对象的创建而加载 当时做了这么一个小案例(想必 ...
- 关于java构造函数,静态代码块,构造代码块,和普通代码块相关总结(一)
构造函数.构造代码块和静态代码块容易混淆,它们的执行条件和执行顺序也常常容易犯迷.这里就针对这些问题说一下我个人的一些理解,顺便对这部分内容做个小结. 一.构造函数 格式:类名(参数1,参数2,-){ ...
- Java基础6:代码块与代码加载顺序
更多内容请关注微信公众号[Java技术江湖] 这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux ...
随机推荐
- Spring MVC和Spring Data JPA之获取数据表数据放在List集合,显示在JSP页面
涉及到很多xml配置没写:只写具体实现的所有类 1.实体类 对应数据表SYS_SBGL, 主键是SBBM,主键是自动生成的uuid 数据表内容如下(有图有真相): package com.jinhet ...
- Excel根据人名匹配得到编号
操作步骤:输入公式 =IF(COUNTIF($E$2:$E2,$E2)>COUNTIF($B:$B,$E2),"",INDEX(C:C,SMALL(IF($B$1:$B$10 ...
- css 兼容 各类手机的写法 待续
@media (device-height:480px) and (-webkit-min-device-pixel-ratio:2){/* 兼容iphone4/4s */ .class{} } @m ...
- Alpha阶段敏捷冲刺---Day3
一.Daily Scrum Meeting照片 二.今天冲刺情况反馈 今天我们上完课后在禹洲楼教室外进行我们的每日立会.开会的内容主要是总结了一下这几天各自的任务及任务进度,交流了一下各自遇到的困难. ...
- php session和cookie知识
- SWIFT用ScrollView加图片制作Banner
网上参考OBJC写的用ScrollView图片轮播效果,照着画了个,先上效果图: 附上代码: @IBOutlet weak var pc: UIPageControl! @IBOutlet weak ...
- 转:sqlplus使用总结
为什么我要使用sqlplus: SQLPLUS很多人用的并不多,在我观察周围来看,很多人都在使用PLSQL DEVELOPER,尤其是开发人员,更是如此,那学习SQLPLUS有啥好处呢?在我看来有如下 ...
- HDU 2647:Reward(拓扑排序+队列)
Reward Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- 生成html报告并整合自动发动邮件功能
from HTMLTestRunner import HTMLTestRunnerfrom email.mime.text import MIMETextfrom email.header impor ...
- linux环境下编译php扩展
1.使用ext_skel工具生成扩展框架 ./ext_skel --extname=myext 2.编辑config.m4文件 cd myext/vim config.m4 去掉以下内容的注释: PH ...