转转转!!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 ...
随机推荐
- weblogic控制台定制不同权限的用户
安装weblogic并创建域(domain)的时候,会默认创建一个用户,此用户为管理员,也就是权限最大的.只有这样一个用户,用起来很不安全,因为一个测试环境,好多人在用,经常会有人修改上面的数据源等关 ...
- float、clear、overflow
浮动: float: none|left|right 作用使得标签失去块级标签的独占一行效果,向某个方向靠拢 标签浮动了,也需要占地方,有时候出现未浮动的div覆盖部分浮动div是浏览器的bug情况 ...
- <二叉树的基本操作>
#include<stdio.h> #include<stdlib.h> #include<string.h> #define num 100 #define OK ...
- 深入理解Linux网络技术内幕——内核基础架构和组件初始化
引导期间的内核选项 Linux允许用户把内核配置选项传给引导记录,再有引导记录传给内核,以便对内核进行调整. start_kernel中调用两次parse_args,用于引导期间配置用 ...
- sql server 表结构 导出 到excel
SELECT 表名 then d.name else '' end, 表说明 then isnull(f.value,'') else '' end, -- 字段序号 = a.colorder, 字段 ...
- 分析苹果代充产业链 汇率差+退款造就三线城市千万富翁_中新游戏研究_Joynews中新游戏
分析苹果代充产业链 汇率差+退款造就三线城市千万富翁_中新游戏研究_Joynews中新游戏 CNG:近日有媒体曝出8月22日这一天,有一家淘宝店卖出了351张面值4000南非南特的App Store ...
- JavaWeb中监听器+过滤器+拦截器区别、配置和实际应用
JavaWeb中监听器+过滤器+拦截器区别.配置和实际应用 1.前沿上一篇文章提到在web.xml中各个元素的执行顺序是这样的,context-param-->listener-->fil ...
- HDU 4864
http://acm.hdu.edu.cn/showproblem.php?pid=4864 #include <iostream> #include <cstdio> #in ...
- GET_DDL提取建表语句:ddl
创建对象的语句就是了 提取表 set line 200 pages 50000 wrap on long 999999 serveroutput on SQL> select dbms_meta ...
- Linux C socket 封装
/************************************************************************** * Linux C socket 封装 * 声明 ...