1.静态方法什么时候初始化,在main前还是main后
 在main方法后,静态方法是属于类的,只有在调用时才初始化(main例外,main的调用是在初始化工作完成后程序进入运行状态时),但静态方法在内存中只有一份;

2.构造函数与继承的关系
子类的构造函数内会包含一个父类构造函数,因为在子类构造函数第一行会默认调用父类构造函数,如果覆写该行则可以自行控制父类构造函数版本;可见得父类构造函数和子类构造函数得关系是“继承”不是“覆写”,(每个)子类构造函数继承(包含)父类构造函数的一个版本,并可以有自己的部分,类似继承,子类不完全继承父类方法并可由自己的方法,父类私有不能继承。

3.接口没有构造函数的原因
1.接口里的方法完全抽象构造函数没有实现体,无意义
2.接口为了实现多继承,子类构造函数必须调用父类构造函数,如果接口有构造函数子类不知道调用哪个父类构造函数

4.String与StringBuffer

String类用来表示那些创建后就不会再改变的字符串,它是immutable的。
而StringBuffer类用来表示内容可变的字符串,并提供了修改底层字符串的方法。


--当我们进行字符拼接时,请使用StringBuffer类而非String类,因为前者将比后者快上百倍。


的确,在程序的太多场合我们都会进行字符串拼接工作,简单的代码示例如下:


String str="You are nice.";
str+="I love you so much.";


如果用StringBuffer类的话,代码如下:


StringBuffer str= new StringBuffer("You are nice.");
str.append("I love you so much.");


        从表面看来String类只用一个加号(+)便完成了字符串的拼接,
而StringBuffer类却要调用一个append()方法,是否实现起来更简洁,更单纯呢?其实不然,
让我们了解一下程序运行内部发生了哪些事情:


        经编译后程序的bytecode(字节码)展示出了实质:  在用String类对象直接拼接时,
JVM会创建一个临时的StringBuffer类对象,并调用其append()方法完成字符串的拼接,
这是因为String类是不可变的,拼接操作不得不使用StringBuffer类(并且--JVM会将"You are nice."和"I love you so much."
创建为两个新的String对象)。
之后,再将这个临时StringBuffer对象转型为一个String,代价不菲!可见,在这一个简单的一次拼接过程中,
我们让程序创建了四个对象:两个待拼接的String,一个临时StringBuffer,
和最后将StringBuffer转型成为的String--它当然不是最初的str了,这个引用的名称没变,但它指向了新的String对象。


        而如果直接使用StringBuffer类,程序将只产生两个对象:
最初的StringBuffer和拼接时的String("I love you so much."),
也不再需要创建临时的StringBuffer类对象而后还得将其转换回String对象。


        可以想象,当我们的字符串要被循环拼接若干段时,
用String类直接操作会带来多少额外的系统开销,生成多少无用的临时StringBuffer对象,
并处理多少次无谓的强制类型转换哪。

5. equals() 和 == 
   equals() 比对象值,即属性是否相等 
   ==比引用,地址
   在编译时期确定的两个字符串对象引用相等(==)
   不在编译期确定的两个字符串字符串引用不相等

posted @ 2006-12-10 15:13 hhcto 阅读(388) | 评论 (0)编辑 收藏
 

/**
 *默认得克隆方法为浅克隆只克隆对象得非引用类型(或者非对象型)成员
 *要做深克隆有两种方法:
 *a.覆写克隆方法(引用型成员的克隆方法)并且克隆时掉一次引用型成员的克隆方法!
 *b.序列化对象时默认为深克隆
 *
 */
 
 class Friend implements Cloneable {
   int age;
   String name;
  
  public Friend(int age, String name) {
   this.age = age;
   this.name = name; 
  }
  
  public Object clone () throws CloneNotSupportedException {
   return super.clone(); 
  }
   
 }
 
 class Person implements Cloneable  {
   int age;
  /* *
   *String 类型特殊,因为他为引用型,而且他指向的值为常量,克隆出来的对象改变他的
   *值实际上是改变了克隆出来对象String类型成员的指向不会影响被克隆对象的值及其指向?
   *因为引用被克隆了,我改变的是引用的指向!
  */
   String name;
  
   Friend f;
  
  public Person(int age, String name, Friend f) {
   this.age = age;
   this.name = name;
   this.f = f;
  }
  
  public Object clone () throws CloneNotSupportedException {
   Person p = (Person)super.clone();
   p.f = (Friend)p.f.clone();
   return p; 
  }
  
  public String toString(){
  StringBuffer sb = new StringBuffer();
  return super.toString()+sb.append("age=").append(age).
   append(",name=").append(name).
   append("friend=").append("f.name=").
   append(f.name).append("f.age=").append(f.age).toString();
 }
 }
 
 
 public class Clonetest {
  public static void main(String [] args)  throws CloneNotSupportedException {
   Person p = new Person(4,"haha",new Friend(5,"hehe"));
   Person p1 = (Person)p.clone();
   p1.name = "oop";
   p1.age = 10;
   p1.f.name = "ooad";
   p1.f.age = 56;
   System.out.println (p);
  System.out.println (p1);
  } 
 }

posted @ 2006-12-10 15:13 hhcto 阅读(475) | 评论 (0)编辑 收藏
 

                            关于 Spring 的模版机制

看了 Spring In Action 感觉,对于依赖注入的应用始终贯穿着一个思想“模版机制”,从 jdbc rmi,jms,ejb Spring 的结合使用,都以模版来为我们避免每次繁琐的初始化和异常处理工作。。。。,使我们的写程序的精力集中专著到业务。。。。感觉模版就象我们现实生活中的工具我们只需要专注加工后的结果和需要的原料,经过工具出来的就是成品。。。我们不需要关注工具怎么为我们加工物品,需要几道工序。。。

posted @ 2006-12-01 10:03 hhcto 阅读(720) | 评论 (1)编辑 收藏
 

1 、调用 EJB 时拿到 Home 接口直接转型为远程对象

会报转型异常。。。应该转换为远程接口

 

2 实体 Bean 在数据库端没有创建主键  

       会导致生成的实体 Bean ejbcreate 方法返回值为 Object

 

3 Bean 添加方法的时候忘记选择方法的类型

会导致方法无法调用(即导致远程接口没有此方法签名),方法类型要和 bean 类型相同,远程或本地方法的时候

 

4 更改实体 Bean Create 方法方法签名时只修改了一个方法

       应该同时更改 ejbCreate ejbPsotCreate, 还有远程接口的 ejbCreate 方法

 

5 、 实体Bean设定了标识列而数据库字段没有设定标识列

       会导致调用实体 Bean Ejbcreate 方法报错

posted @ 2006-11-30 23:52 hhcto 阅读(898) | 评论 (0)编辑 收藏
 
标签名 作用 属性
<logic:equal> 比较变量是否等于常量值 第一个参数指定变量名
value为第二个参数指定常量值
<logic:notEqual> 比较变量是否不等于常量值 同上
<logic:greaterEqual> 比较变量是否大于或等于常量值 同上
<logic:greaterThan> 比较变量是否大于常量值 同上
<logic:lessEqual> 比较变量是否小于或等于常量值 同上
<logic:lessThan> 比较变量是否小于常量值 同上
<logic:match> 判断变量中是否包含指定的常量 name:变量名
字符串 scope:存储地方
value:常量值
<logic:notMatch> 判断变量中是否不包含指定的常 同上
量字符串
<logic:empty> 判断指定的变量是否为null或者 name:变量名
空字符串 “”
<logic:notEmpty> 判断指定的变量是否不为null或 name:变量名
者空字符串 “”
<logic:present> 判断指定的对象是否存在 cookie:判断cookie是否存在
<logic:present> 判断指定的对象是否不存在 header:判断http请求头是否存子
user:判断通过权限验证的用户是否拥有指定用户名
parameter:判断请求参数是否存在
name:判断javaBean是否存在
<logic:messagesPresent> 判断是否在request范围内存在指定的 name:指定request范围内是否存在ActionMessage对象的属性key
<logic:messagesNotPresent> ActionMessages   (或者其子类 message:如果为true则从request范围内检索key为Globals.
ActionErrors)对象,以及其中是否存在 MESSAGE_KEY的ActionMessages对象,如果为false则从name属性
特定的消息 指定的属性key,从request范围检索ActionMessage对象,如果此时没有Name属性则默认的key为Globals.ERROR_KEY
property:指定从ActionMessage对象中检索某条消息key
<logic:iterator> 遍历数组和集合中的所有元素 name:指定需要遍历的集合
id:指定字符串来命名这个变量
property:指定(如果元素为Javabean)bean的一个属性
indexId:设置一个序号
<logic:froward> 用于转发请求 name:转发目标为全局forward
<logic:redirect> 用于重定向 与<html:link>类似
主要用法
1.用于比较运算
2.用于字符串匹配
3.判断指定内容是否存在
4.进行循环遍历
5.进行转发和重定向
posted @ 2006-11-30 23:25 hhcto 阅读(1849) | 评论 (0)编辑 收藏
 
html标签 structs标签 功能
<html> <html:html>
<base> <html:base> 生成当前网页的url绝对路径
<a href=""> <html:link> forward:指定全局转发连接
href:指定完整url链接
page:指定相对于当前网页的url
<html:rewrite> 用于输出超链接中uri部分,即主机和端口号以后的内容
<image src=""> <html:image> page:指定相对与当前页面的uri
<form> <html:form> name:指定actionform的名字
<input type="text"> <html:text> property:相当于name属性
<imput type="submit"> <html:cancel> 用于取消请求,实现需要在action内编程
<html:submit> 用于提交表单
<input type="reset"> <html:reset> 用于表单清空
<input type="checkbox"> <html:checkbox> property:相当于name属性
value:选项的值
<html:mutilbox> property:相当于name属性value:选项的值
<imput type="radio"> <html:radio> property:相当于name属性value:选项的值
<select> <html:select> size:在网页上显示的可选项目的个数
property:相当于name属性
multipel是否多选
选项为:<html:option value>显示文本</>选项
<option> <html:option>
<html:options> property:相当于value(实际值)
lableproperty:显示值
collection选项集合
<html:optionCollection> property:选项集合
value:实际值
lable:显示值
<input type="file"> <html:file> 文件上传标签需把
<html:from method="post" enctype="mutipart/form-data">
property:文件绝对路径
<html:errors> 输出错误消息,错误消息来源于ActionMessages、ActionErrors
name:指定ActionMessages在request和session中的key
property:指定消息属性
bundle:指定资源文件
<html:message> 与<html:errors>类似
posted @ 2006-11-30 23:24 hhcto 阅读(2200) | 评论 (0)编辑 收藏
 
标签名 作用 属性
<bean:cookie> 检索cookies信息 id:定义一个java.servlet.http.Cookie的实例保存在page范围内
name:指定Cookie的名字
vlaue:指定Cookie的默认值
<bean:header> 检索http请求中的头信息 id:定义一个String对象保存在page范围内
name:指定需要检索的page信息
<bean:parameter> 检索http请求中的参数 id:定义一个String对象保存在page范围内
name:指定请求的参数名字
value:指定请求参数的默认值
<bean:page> 检索Jsp隐式对象如request id:定义一个引用,指向一个隐式对象,保存在page范围内
property:指定隐式对象的名字(request、response、application、config、session)
<bean:message> 显示Resource Bundle中的消息 bundle:指定配置文件中的资源文件key
key:指定消息语句的key
<bean:resource> 检索Web资源的内容 id:定义一个代表web资源的变量
name:指定web资源的路径
input:如果没有设置,id为String类型,如果设置了值(任意字符串)则id为inputStream类型
<bean:structs> 检索structs框架的内在对象 formbean:指定ActionFromBean对象、即Actionform
(ActionFromBean、ActionFor forward:指定Actionforward对象
ward、ActionMapping) mapping:指定ActionMapping对象
<bean:include> 把其他Web的内容放在一个变量 froward:指定转发路径
page:指定相对于当前应用的uri
href:指定完整的url
<bean:define> 定义一个变量 id:指定变量的名字
toScope:指定这个变量存放的范围
vlaue:如果指定了,则id指定的变量为字符串型
name:如果指定了则为已存在bean的名字
property:name指定Bean的属性
<bean:size> 获得集合或者数组的长度 id:设定一个变量获得集合或数组长度
name:指定集合或数组名字
<bean:write> 用于输出某个bean或他的属性 name:指定要输出的变量或bean的名字
内容 property:指定要输出bean的属性
bean标签主要用于: 1.访问http请求信息或jsp隐式对象
2.访问Web应用资源
3.访问javabean
posted @ 2006-11-30 23:23 hhcto 阅读(2570) | 评论 (0)编辑 收藏
仅列出标题
共2页: 上一页 1 2