转转转!!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 ...
随机推荐
- C++静态成员变量和静态成员函数
数据成员可以分静态变量.非静态变量两种. 静态成员:静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配 ...
- python学习:变量与字符串
counter = # 赋值整型变量 miles = 1000.0 # 浮点型 name = "John" # 字符串 print counter print miles prin ...
- Android中判断字符是否为中文、韩文、日文
我们经常需要在程序中判断一个字符是否为CJK(Chinese.Japanese.Korean)语言的字符. 例如,在Contacts里面程序需要判断联系人姓名的所属语言. 今天为大家介绍一种NameS ...
- 安装mysql,mysql创建数据库,创建用户及为用户添加权限
安装mysql a.下载源 wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm b.安装 rpm -ivh mysq ...
- golang多核的使用
实际上协程只是发生在单个进程内部的,要是想充分的发掘多核CPU的潜力,还是需要多进程的支持. 对于多核编程,go是天生支持,那么我们在什么情况下应该用多核心来加速程序,而在什么情况下用单核即可呢? 现 ...
- for (Sms sms : smsLists){}
for (Sms sms : smsLists){ } //类似下面的for循环 :Smslists[i]!=NULL;i++) { Sms sms=Smslists[i]; } /*其实就是把Sms ...
- 你在AutoHotKey面前居然敢比调音量 - imsoft.cnblogs
当你正在电脑游戏中酣战之际.或者正沉浸在动作大片紧张激烈的情节中.或者正在全神贯注的聆听优美动听音乐……,在这些场景中,如果你需要迅速对音量进行调节(例如增大减小音量,或者静音)怎么办?难道返回Win ...
- 使用struts框架后的404错误
访问jsp界面后出现404错误,我开始以为是因为struts没有配置好,在网上找了很多解决方法, 试了一遍,无效, 最后在参考书上看到“struts2推荐把所有的视图界面存放在WEB-INF目录下,这 ...
- BZOJ3473: 字符串【后缀数组+思维】
Description 给定n个字符串,询问每个字符串有多少子串(不包括空串)是所有n个字符串中至少k个字符串的子串? Input 第一行两个整数n,k. 接下来n行每行一个字符串. Output 一 ...
- ThinkPHP3.2.3整合smarty模板(三)
在smarty模板中使用thinkphp框架的U方法时要主要的问题: 1.不能直接使用{:U('Index/index')}: 2.正确的使用方法为:<!--{U("Login/log ...