你觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Java的异常处理机制?在下面这段代码中,你能够迅速找出异常处理的六个问题吗?
OutputStreamWriter out = ...
java.sql.Connection conn = ...
try { // ⑸
Statement stat = conn.createStatement();
ResultSet rs = stat.executeQuery(
"select uid, name from user");
while (rs.next())
{
out.println("ID:" + rs.getString("uid") // ⑹
",姓名:" + rs.getString("name"));
}
conn.close(); // ⑶
out.close();
}
catch(Exception ex) // ⑵
{
ex.printStackTrace(); //⑴,⑷
}
作为一个Java程序员,你至少应该能够找出两个问题。但是,如果你不能找出全部六个问题,请继续阅读本文。
本文讨论的不是Java异常处理的一般性原则,因为这些原则已经被大多数人熟知。我们要做的是分析各种可称为“反例”(anti-pattern)的违背优秀编码规范的常见坏习惯,帮助读者熟悉这些典型的反面例子,从而能够在实际工作中敏锐地察觉和避免这些问题。
反例之一:丢弃异常
代码:15行-18行。
这段代码捕获了 ......
Java几种建立实例的方法
new
利用Java关键字new来建立对象实例是Java中最为常见也是最为简单的建立对象实例的方法。若程序写成如下形式,
则可建立something类的对象实例后再指定到变量obj。
something obj=new something();
此时,必须把类名(在此为something)写在源码之内。
clone
若利用clone方法,则可根据现有的对象实例来建立里一个新对象实例。利用clone方法来建立对象实例只限于实现
了java.lang.Cloneable接口的类。如果没有实现该接口,则会抛出CloneNotSupportedException异常。若程序
写成如下,则可根据当前对象本身建立另一个对象实例(但并未利用构造方法)。
class Something
{
//codes
public Something createClone()
{
Something obj=null;
try
{
obj=(Something)clone();
}
&n ......
今天和朋友去海滨路跑步,吹吹海风,我们坐在一个废弃的船板板上,聊起了java与.NET。我是决定读java的,可是我那朋友是想学.NET。
其实我们各有各的想法,我认为读java在逻辑方面,还有语法方面会有更好的一个了解与学习。因为java的开发平台没有.NET的开发平台那么人性化,他几乎都是英语,而且帮助文档也是英语,所以我们想要学好java,就不得不去学英语,因为你只有把英语学懂了,你才有可能去使用java的帮助文档。就算看不懂,我们在学校还有老师和同学可以请教。这样一来,还可以提高我们的自学能力。而且软件这个行业是需要你很强的自习能力的。所以我们在以后学习其他语言也会比较好上手。而.NET是集java,C++,C语言一身优点开发出的一种高级语言,他的平台可以说是所有开发平台中最人性化的一个平台。可是,学习.NET,你要是没有强烈的好奇心,你是无法学深的,因为微软已经把很多功能实现好了,而其中就用很多是涉及逻辑算法的功能,就等你去拉出来用,这样一来,我们根本就不了解这个功能是如何实现的,除非你去看他的中间语言。还少了思考问题的机会,还有因为.NET的人性化,他已经把很多英文都翻译成中文了 ......
1.计算某一月份的最大天数
Calendar time=Calendar.getInstance();
time.clear();
time.set(Calendar.YEAR,year); //year 为 int
time.set(Calendar.MONTH,i-1);//注意,Calendar对象默认一月为0
int day=time.getActualMaximum(Calendar.DAY_OF_MONTH);//本月份的天数
注:在使用set方法之前,必须先clear一下,否则很多信息会继承自系统当前时间
2.Calendar和Date的转化
(1) Calendar转化为Date
Calendar cal=Calendar.getInstance();
Date date=cal.getTime();
(2) Date转化为Calendar
Date date=new Date();
Calendar cal=Calendar.getInstance();
cal.setTime(date);
3.格式化输出日期时间 (这个用的比较多)
Date date=new Date();
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String time=df.format(date);
System.out.println(time);
4.计算一年中的第几星期
(1)计算某一天是一年中的第几星期
Calendar cal=Calendar.getInstance();
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.MONTH,9);
cal.set(Calendar.DAY_OF_MONT ......
(原创)深入研究java对String字符串对象的创建以及管理
(2008-9-27 bbh)
新手初学,不对的地方大家多多指教~
经常看到很多人讨论java中关于String的问题,我也就有点兴趣了,鉴于网上很多人写的都差别很大,
同样的问题都是不同的说法,我很迷糊,花了一晚上读了Java Virtual Machine Specification和
The Java Language Specification的一些章节,做了很多试验,总结了一下关于String的内容,还
有很多内容我也不确定,在下面也都提出来了,希望高手能指正.
Constant Pool常量池的概念:
在讲到String的一些特殊情况时,总会提到String Pool或者Constant Pool,但是我想很多人都不太
明白Constant Pool到底是个怎么样的东西,运行的时候存储在哪里,所以在这里先说一下Constant Pool的内容.
String Pool是对应于在Constant Pool中存储String常量的区域.习惯称为String Pool,也有人称为
String Constant Pool.好像没有正式的命名??
在java编译好的class文件中,有个区域称为Constant Pool,他是一个由数组组成的表,类型
为cp_info constant_pool[],用来存储程序中使用的各种常量,包括Class/String/Integer等各
种基本Java数据类型,详情参见The Java Virtual Machine Specification ......
传智播客JAVA培训struts2学习笔记 前两天我陷入了struts2原理的泥谭中不可自扒了,这种感觉相当不错,但是我个人还是感觉基础如果不是很好的话,千万不要陷入,因为这样的话,很有可能让一个人变得没有信心,还好我是一个心理还错不错的人,所以很快就走了出来。所以,我的个人感觉还是,先掌握基础,然后在去理解原理吧,一旦涉及到原代码,这上千行的代码会把你搞得晕头转向,因为对于初学者来说,如果你没有掌握其中的流程你就不可能有的放失的去学习东西。如果产生了负面的情绪,千万要好好的调整自己,免得和我之前做EMS项目一样,但是,所谓功夫不负有心人呵,最终我还是挺过了这个难关,通过连续N多天的熬夜加班加点,终于跟上了老师的进程.同志们,加油!冉平当然也要加油,我同上班去了哟,工资虽然不高,4K,但对于我现在的阶段来说,如果是我,我就满足了! 访问request/session/application属性 1.将值存入不同的作用域中: ActionContext ac = ActionContext.getContext(); ac.getSession().put("testSession","testSession1" ); ac.getApplication().put("testApplication","testApplication1"); ac.put("testRequest", "testRequest1"); 在页面中访问: ${testRequest } $ ......