最初我们用 Java 写 JSP 的时候,几乎可以不触及异常,因为 Servlet 容器会把 API 抛出的异常包装成
ServletException 丢给容器去处理。再后来应用分层,代码中要处理的异常便多了,一般会转换成自定义的业务异常类,用
try-catch-throw
customerException-finally。再到如今各种框架日臻成熟,代码中显式的异常处理又渐渐少了些,借助于 AOP
横行,异常对业务的影响描述被移入到了配置文件中了,例如,事物处理、权限的控制等。
这颇有些像手机的发展,当通信技术不甚发达的时候,手里抓的是砖头,信号是模拟的。后来慢慢瘦身成两三根手指大小,甚至是就一支笔似的,可如今信息量大了,屏幕要大,再配上 QWERT 键盘,机身自然就肥硕了。
当然与手机的个头变迁略有不同的是,任凭你怎么对待 Java 中异常,切入 AOP 也好,在 JVM 中处理异常的内在机制始终未变。
说到 Java 异常,无外乎就是 try、catch、finally、throw、throws 这么几个关键字,这些个的用法是没必要在这里讲了。我们这里主要关键一下 catch 和 finally 是如何在编译后的 class 字节码中的。
异常的抛出与捕获,Catch 子句的表现,来看看一段 Java 代码及生成的相应字节码指令。
package
&nbs ......
装了win7以后重新配置了java的环境变量。
首先,JDK和JRE的区别:jdk(java development toolkit) jre(java run environment),前者就像是个java的编译器,后者提供一个运行环境,java虚拟机吧。一般只用装jdk就行了,里面自动会有个jre。
我的过程:
1. 先解压Eclipse,运行需要虚拟机
2. 安装jre6,不用任何配置,Eclipse成功启动
3. 但是java命令在命令行下可以用,javac却不能
4. 卸jre,重装jdk
5. 此时Eclipse又找不到虚拟机了
下面配置环境变量
1 在系统变量里添加一个新的变量 java_home="C:\Program file\java\jdk 1.6" 表明你的jdk安装目录(如果使用绝对路径的话这个可省略)
2 在path变量中添加 %java_home%\bin
3 在classpath中添加变量 %java_home%\lib\tools.jar , %java_home%\lib\dt.jar
搞定,命令行中运行 java -version, java , javac命令如果都正常就ok ......
Java数据库连接(JDBC)由一组用 Java 编程语言编写的类和接口组成。JDBC 为工具/数据库开发人员提供了一个标准的 API,使他们能够用纯Java API 来编写数据库应用程序。然而各个开发商的接口并不完全相同,所以开发环境的变化会带来一定的配置变化。本文主要集合了不同数据库的连接方式。
一、连接各种数据库方式速查表
下面罗列了各种数据库使用JDBC连接的方式,可以作为一个手册使用。
1、Oracle8/8i/9i数据库(thin模式)
Class.forName(“oracle.jdbc.driver.OracleDriver“).newInstance();
String url=“jdbc:oracle:thin:@localhost:1521:orcl“; //orcl为数据库的SID
String user=“test“;
String password=“test“;
Connection conn= DriverManager.getConnection(url,user,password);
2、DB2数据库
Class.forName(“com.ibm.db2.jdbc.app.DB2Driver “).newInstance();
String url=“jdbc:db2://localhost:5000/sample“; //sample为你的数据库名
String user=“admin“;
String password=““;
Connection conn= DriverManager.getCo ......
1、集合其实可以看成为数组的扩展,它与数组的不同之处在于:
《1》 一个数组只允许存储一种类型的数据,而一个集合可以存储任一种对象类型数据;
简单的说一个集合类似一个 Object[] 数组,因为一切类的基类都为Object类,
所以一切类都可以隐式转换为Object类,然后存储到Object类型的数组中。
《2》数组的大小为固定的,而集合的大小却可以根据数据的多少来自动增加或减小;
《3》可以通过 泛型 <类型> 来使集合转换为类似数组的集合,如:
List<String> list=new ArrayList<String>();
&nbs ......
众所周知,java中int型和char型数据不像c语言中那样可以任意转换,即不可以将一个int型变量自动转换为char型,如下面代码中的演示:
public class TestSort{
public static void main(String args[]){
int x='a';//不会产生编译错误,因为'a'赋给x是隐式转换
System.out.println(x);
char ch=x;//会产生编译错误,因为x类型比ch优先级高,必须强制类型转换,但是在C语言中这样是可以的
System.out.println(ch);
}
}
但是看下面的代码:
public class TestSort{
public static void main(String args[]){
int x='a';
System.out.println(x);
char ch=97;//不会产生编译错误
System.out.println(ch);
}
}
上面代码不会产生任何编译错误,此处的97虽然在数学意义上是一个整数(注意整数和整型的区别),但是java语言中它被作为常数来对待,也就是说一个值为97的int型变量和97本身是不同的概念,97在没有和某个类型关联以前赋给ch是完全没有错误的。其实我们用char ch='a'给ch赋值的时候,'a'在内存中的存储值就是97。 ......
互联网的崛起,使得PC从产业中心向边缘过渡,而历经20余年的发展,PC市场也趋于饱和,唇亡齿寒,这叫靠PC吃饭的微软如何不急?吸取了当年开发浏览器软件的教训,2000年6月,微软启动.Net计划,进军网络服务市场,比尔·盖茨自信地称:"世界上所有一切都将包括在互联网服务中。"
.NET的思想其实是来源于浏览器,即今后的电脑里面将没有其它的应用软件,只需要一个超级浏览器。用户就可以从网上下载所需要的软件。C#是用来开发这类应用程序和服务的编程语言,被认为是Sun公司Java编程语言的竞争对手。C#语言除了可以使电脑之间的通信更简便、更直接外,还能使手机、PDA等掌上设备快捷地显示互联网上的信息。SUN公司也力推SUN One来抗衡微软的.NET,SUN ONE平台的基础包括Solaris操作系统、Java编程语言。以及相应的软件开发工具。Sun还试图把各种不同的软件集成到这个平台中,包括它的电子商务软件,并计划使它所有的产品全都兼容新的互联网服务技术标准。
去年的这个时候,微软的死对头SUN公司的CEO斯科特·麦克尼利也来华访问,推销其SUN One技术。有意思的是,就在麦克尼利访华的前几天,SUN将微软推上法庭,要为其Java语言受到排挤 ......
互联网的崛起,使得PC从产业中心向边缘过渡,而历经20余年的发展,PC市场也趋于饱和,唇亡齿寒,这叫靠PC吃饭的微软如何不急?吸取了当年开发浏览器软件的教训,2000年6月,微软启动.Net计划,进军网络服务市场,比尔·盖茨自信地称:"世界上所有一切都将包括在互联网服务中。"
.NET的思想其实是来源于浏览器,即今后的电脑里面将没有其它的应用软件,只需要一个超级浏览器。用户就可以从网上下载所需要的软件。C#是用来开发这类应用程序和服务的编程语言,被认为是Sun公司Java编程语言的竞争对手。C#语言除了可以使电脑之间的通信更简便、更直接外,还能使手机、PDA等掌上设备快捷地显示互联网上的信息。SUN公司也力推SUN One来抗衡微软的.NET,SUN ONE平台的基础包括Solaris操作系统、Java编程语言。以及相应的软件开发工具。Sun还试图把各种不同的软件集成到这个平台中,包括它的电子商务软件,并计划使它所有的产品全都兼容新的互联网服务技术标准。
去年的这个时候,微软的死对头SUN公司的CEO斯科特·麦克尼利也来华访问,推销其SUN One技术。有意思的是,就在麦克尼利访华的前几天,SUN将微软推上法庭,要为其Java语言受到排挤 ......