关于网友提出的“ 晕,这个语法是什么意思?没见过?”问题疑问,本网通过在网上对“ 晕,这个语法是什么意思?没见过?”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 晕,这个语法是什么意思?没见过?描述:
下载了一个博客的源码来研究,
里面有几句竟看不懂,好受打击啊!
别的都不用看,就看最后几行
public class IndexServlet extends HttpServlet {
private static MasterBean masterBean;
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession();
ArticleDao articleDao = new ArticleDao();
ArticleTypeDao artTypeDao = new ArticleTypeDao();
PhotoDao photoDao = new PhotoDao();
WordDao wordDao = new WordDao();
FriendDao friendDao = new FriendDao();
/** ******** 获取在主页面的内容显示区中显示的内容 ******** */
// 从tb_article数据表中获取前3篇文章
List articleList = articleDao.queryArticle(-1, null);
request.setAttribute("articleList", articleList);
// 从tb_photo数据表中获取前8张照片
List photoList = photoDao.queryPhoto("sub");
request.setAttribute("photoList", photoList);
/** ******** 获取在页面侧栏中显示的内容 ******** */
/* 从tb_word数据表中获取前5条留言 */
List wordList = wordDao.queryWord("sub");
session.setAttribute("wordList", wordList);
/* 从tb_article数据表中获取前5章推荐文章 */
List artTJList = articleDao.queryArticle(4, "sub");
session.setAttribute("artTJList", artTJList);
/* 从tb_friend数据表中获取前5位好友信息 */
List friendList = friendDao.queryFriend("sub");
session.setAttribute("friendList", friendList);
/** ******** 获取文章类别 ****************** */
/* 从tb_articleType数据表中获取文章类别 */
List artTypeList = artTypeDao.queryTypeList();
session.setAttribute("artTypeList", artTypeList);
/** ********* 保存博主信息 **************** */
session.setAttribute("master", masterBean);
RequestDispatcher rd = request
.getRequestDispatcher("/front/FrontIndex.jsp");
rd.forward(request, response);
}
static {
LogonDao logonDao = new LogonDao();
masterBean = logonDao.getMaster();
}
}
static {
LogonDao logonDao = new LogonDao();
masterBean = logonDao.getMaster();
}
是什么意思?
解决方案1:
静态代码块
相当于当前类class对象构造方法
主要用来初始化静态成员
一个静态代码块吗,就是在类加载时就会执行的程序段
解决方案3:不懂,帮忙顶一下哈
解决方案4:你是问 静态块吗? 称之为 类的 方法。。
解决方案5:帮忙顶
解决方案6: 楼主可自己写个类,写一个static{}静态代码块,然后写个构造方法,在静态代码块和构造方法中写上控制台输出。最后写个测试类,看看其效果,就知道静态代码块的用法。当然没有方法签名和返回值这是语法规定,也是因为它根本不是我们调用,只是jvm调用,所以存在方法签名、参数列表和返回值是无意义的。
/**
* 测试静态代码块
* @author dinghun8leech
*/
public class TestStatic {
public static void main(String [] args) {
System.out.println("测试开始,由于当前没用到TestClass,所以类加载器并未加载TestClass");
TestClass.call();
/*
走到这里会发现使用到这个类的静态方法,因此类加载器需要加载此类,
而静态代码块中的打印方法在静态方法被调用前就调用了,显示出静态代码块
是被类加载器加载时,就会调用
*/
new TestClass();
/*
使用构造方法初始化一个TestClass实例,但先前TestClass已经被
加载至jvm中,所以静态代码块不会再执行,除非jvm关闭再次启动
->也就是,静态代码块只会在这个类被加载到内存时执行一遍,后面不再执行
!!所以,依此特性可知静态代码块的作用:即,某些重头至尾仅需执行
一遍的操作,可以考虑放置在静态代码块中,比如jdbc中将驱动加载至
内存中这一步:Class.forName("com.mysql.jdbc.Driver");
*/
System.out.println("测试结束,其实这步是多余的,- -!");
/*
打印结果:
测试开始,由于当前没用到TestClass,所以类加载器并未加载TestClass
静态代码块被执行
静态方法被调用
构造方法被调用
测试结束,其实这步是多余的,- -!
*/
}
}
class TestClass {
static {
System.out.println("静态代码块被执行");
}
public TestClass() {
System.out.println("构造方法被调用");
}
public static void call() {
System.out.println("静态方法被调用");
}
}