发表于: java/j2ee | 作者: | 日期: 2008/11/03 08:11
标签:

创建一个日期对象

使用系统的当前日期和时间创建一个日期对象并返回一个长整数的简单例子。 这个时间通常被称为Java 虚拟机(JVM)主机环境的系统时间。

import java.util.Date;
public class DateExample1 {
public static void main(String[] args) {
// Get the system date/time
Date date = new Date();
System.out.println(date.getTime());
}
}

今天是星期一,2005年8月8日,上午8:43,上面的例子在系统输出设备上显示的结果是1123461832312。

日期数据的定制格式

使用类java.text.SimpleDateFormat和它的抽象基类 java.text.DateFormat 完成日期数据的格式定制,比方今天星期一-八月-08-2005。下面的例子展示了如何完成这个工作:

import java.text.SimpleDateFormat;
import java.util.Date;
public class DateExample2 {
public static void main(String[] args) {
SimpleDateFormat bartDateFormat = new SimpleDateFormat(“EEEE-MMMM-dd-yyyy”);
Date date = new Date();
System.out.println(bartDateFormat.format(date));
}
}

只要通过向SimpleDateFormat 的构造函数传递格式字符串”EEE-MMMM-dd-yyyy”,就能够指明自己想要的格式。运行结果就是:星期一-八月-08-2005 了。传递”EE-MM-dd-yy”会显示 星期一-08-08-05 。

将文本数据解析成日期对象

假设一个文本字符串包含了一个格式化了的日期对象,而需要解析这个字符串并从文本日期数据创建一个日期对象。下面的例子,将解析文本字符串”8-8-2005″并创建一个值为1123430400000 的日期对象。

例子程序:

import java.text.SimpleDateFormat; import java.util.Date;
public class DateExample3{ public static void main(String[] args) { // Create a date formatter that can parse dates of the form MM-dd-yyyy. SimpleDateFormat bartDateFormat = new SimpleDateFormat(“MM-dd-yyyy”); // Create a string containing a text date to be parsed. String dateStringToParse = “8-8-2005”; try { // Parse the text version of the date. //We have to perform the parse method in a //try-catch construct in case dateStringToParse //does not contain a date in the format we are expecting. Date date = bartDateFormat.parse(dateStringToParse); // Now send the parsed date as a long value // to the system output. System.out.println(date.getTime()); } catch (Exception ex){ System.out.println(ex.getMessage()); } } }

使用标准的日期格式化过程

可以生成和解析定制的日期格式后,现在来看一看如何使用内建的格式化过程。使用方法DateFormat.getDateTimeInstance()可以得到用几种不同的方法获得标准的日期格式化过程。在下面的例子中,我们获取了四个内建的日期格式化过程。它们包括一个短的,中等的,长的,和完整的日期格式。

import java.text.DateFormat; import java.util.Date;

public class DateExample4{ public static void main(String[] args) { Date date = new Date(); DateFormat shortDateFormat = DateFormat.getDateTimeInstance (DateFormat.SHORT,DateFormat.SHORT); DateFormat mediumDateFormat = DateFormat.getDateTimeInstance (DateFormat.MEDIUM,DateFormat.MEDIUM); DateFormat longDateFormat = DateFormat.getDateTimeInstance (DateFormat.LONG,DateFormat.LONG); DateFormat fullDateFormat = DateFormat.getDateTimeInstance DateFormat.FULL,DateFormat.FULL);

System.out.println(shortDateFormat.format(date)); System.out.println(mediumDateFormat.format(date)); System.out.println(longDateFormat.format(date)); System.out.println(fullDateFormat.format(date)); } }

注意我们在对 getDateTimeInstance的每次调用中都传递了两个值。 第一个参数是日期风格, 而第二个参数是时间风格。 它们都是基本数据类型int(整型)。考虑到可读性,这里使用了DateFormat 类提供的常量: SHORT, MEDIUM, LONG, 和 FULL。

运行例子程序, 它将向标准输出设备输出下面的内容:

05-8-8 上午9:17 2005-8-8 9:17:42 2005年8月8日 上午09时17分42秒2005年8月8日 09时17分42秒 GMT+08:00

(完成 程序测试结果基于JDK1.2.2)

阅读全文(76) | 回复(2) | 引用(0)
回复:java Date 显示格式
[ chenglong发表评论于2005-8-10 2:51:06 ]
第一个要求很简单的,就是先定制一个年月日字符型格式的日期,然后将它解析成一个日期对象;再设置一个只显示星期几的日期的格式,将上面的日期对象格式输出就行了。

第二个要求也不难,你是想对数据库中的数据操作,我这里就用数组给你模拟一下吧。我定义了两个int变量SHANGBAN,XIUXI,对应你的两个字段值1和0,然后我对8月的数据进行了操作(我是假设双休日休息,对应今年的这个月),根据输入的年月日字符,用substing提取了各个字段,然后进行相应查找就行了。你可以用各个字段到数据库中相应的那一天查询对应的值就ok了。

下面是我的程序:

import java.text.SimpleDateFormat;
import java.util.Date;
import java.lang.String;
import java.lang.Integer;
public class DateExample{
public static void main(String[] args){
int SHANGBAN = 1; //上班
int XIUXI = 0; //休息
int[] AugDay = { //八月份数据
SHANGBAN,SHANGBAN,SHANGBAN,SHANGBAN,SHANGBAN,XIUXI,XIUXI,
SHANGBAN,SHANGBAN,SHANGBAN,SHANGBAN,SHANGBAN,XIUXI,XIUXI,
SHANGBAN,SHANGBAN,SHANGBAN,SHANGBAN,SHANGBAN,XIUXI,XIUXI,
SHANGBAN,SHANGBAN,SHANGBAN,SHANGBAN,SHANGBAN,XIUXI,XIUXI,
SHANGBAN,SHANGBAN,SHANGBAN
};
// Create a date formatter that can parse dates of the form yyyy-MM-dd.
SimpleDateFormat bartDateFormat1 = new SimpleDateFormat(“yyyy-MM-dd”);
// Create a string containing a text date to be parsed.
String dateStringToParse = “2005-8-10”; //可以改成接受输入
try {
Date date = bartDateFormat1.parse(dateStringToParse);
SimpleDateFormat bartDateFormat2 = new SimpleDateFormat(“EEEE”);
System.out.println(dateStringToParse + ” ” +bartDateFormat2.format(date));

int year = Integer.parseInt(dateStringToParse.substring(0,4));
int month = Integer.parseInt(dateStringToParse.substring(5,6));
int day = Integer.parseInt(dateStringToParse.substring(7,9));

if(month == 8){
//假如输入的是8月份的话(这里只是演示,指的是今年8月,你可以按你的需要修改)
if(AugDay[day-1] == SHANGBAN){
System.out.println(“今天上班”);
}
else{
System.out.println(“今天休息”);
}
}
}
catch (Exception ex){
System.out.println(ex.getMessage());
}
}
}

输入时间是2005-8-10,只用了八月的数组里的值来显示大体的意思,你完全可以修改满足你的需要。最后显示结果为:

2005-8-10 星期三
今天上班

好了,应该很清楚了吧,加油,也感谢你的支持!

I LOVE JAVA!

posted on 2005-09-15 11:38 sharky的点滴积累 阅读(699) 评论(0) 编辑 收藏

评论关闭
发表于: DB/ES | 作者: | 日期: 2008/11/03 08:11
标签:

表    tree
  字段   master
       sub
       sales
  insert into tree values
  (‘主1’,   ‘主2’,  15); 
  insert into tree values   
  (‘主1’,   ‘主3’,  20);     
  insert into tree values
  (‘主2’,   ‘主4’,  5);          
  insert into tree values
  (‘主2’,   ‘主5’,  10);
  insert into tree values
  (‘主3’,   ‘主5’,  30);
  insert into tree values
  (‘主3’,   ‘主6’,  40);
  
  SQL> select * from tree;
  MASTER   SUB       SALES
  ———- ———- ———-
  主1    主2        15
  主1    主3        20
  主2    主4         5
  主2    主5        10
  主3    主5        30
  主3    主6        40 
  
  如果用树型结构表示如下:
   ’主1’          
     -‘主2’       
       –‘主4’
       –‘主5’
   ’主1’          
     -‘主3’       
       –‘主5’
       –‘主6′
  
  SQL> select * from tree                
  start with sub=’主2’     –相当于普通sql的where条件
  connect by prior master=sub; –遍历的顺序是sub先于master遍历,也就是说从sub往上遍历一直到master(根节点)
   2 
  MASTER   SUB       SALES
  ———- ———- ———-
  主1    主2        15
  
  
  SQL> select * from tree                
  start with master=’主2′
  connect by prior master=sub; –sub往上遍历至根节点(参考一下树型图)              
   2  3 
  MASTER   SUB       SALES      
  ———- ———- ———-      
  主2    主4         5  –这条是自己本身,也就是第一遍遍历
  主1    主2        15  –这是第2次遍历,我们从树型图可以看到,’主2’往上遍历是’主1’     
  主2    主5        10      
  主1    主2        15      
                        
                         
                        
  好,我们关看上面可能还是不好理解,我们加入一个树结构专用函数sys_connect_by_path,便于理解
  
  SQL> select sys_connect_by_path(MASTER,’/’) from tree  –master表示我遍历的起点只找在master列中存在的,如下例只要’主2’为起点,并以/为分割符
  start with master=’主2′
  connect by prior master=sub;  –往根节点遍历
   2  3 
  SYS_CONNECT_BY_PATH(MASTER,’/’)
  ——————————————————————————–
  /主2             –第1遍遍历
  /主2/主1          –第2遍遍历
  /主2             –第2条master=’主2’的记录的第1次遍历
  /主2/主1          –第2条master=’主2’的记录的第2次遍历
  
  SQL> select sys_connect_by_path(MASTER,’/’) from tree –起点为sub=’主5’时MASTER=主2,主3
  start with sub=’主5′
  connect by prior master=sub;
   2  3 
  SYS_CONNECT_BY_PATH(MASTER,’/’)
  ——————————————————————————–
  /主2
  /主2/主1
  /主3
  /主3/主1
  
  SQL> select sys_connect_by_path(MASTER,’/’),sub,master from tree  
  start with sub is not null
  connect by prior master=sub; 
   2  3 
  SYS_CONNECT_BY_PATH(MASTER,’/’ SUB    MASTER
  —————————— ———- ———-
  /主1              主2    主1 –找主1到根的路径,这里根是主1他自己
  /主1              主3    主1 
  /主2              主4    主2 
  /主2/主1           主2    主1 –找主2到根的路径,这里根是主1
  /主2              主5    主2
  /主2/主1           主2    主1 
  /主3              主5    主3 
  /主3/主1           主3    主1
  /主3              主6    主3
  /主3/主1           主3    主1  
  select sys_connect_by_path(MASTER,’/’),sub,master from tree                
  start with sub is not null
  connect by prior sub = master;                       
  
  SYS_CONNECT_BY_PATH(MASTER,’/’ SUB    MASTER
  —————————— ———- ———-
  /主1              主2    主1
  /主1/主2           主4    主2
  /主1/主2           主5    主2
  /主1              主3    主1
  /主1/主3           主5    主3
  /主1/主3           主6    主3
  /主2              主4    主2
  /主2              主5    主2
  /主3              主5    主3
  /主3              主6    主3
________________________________________
Go to source web page: Oracle–树的使用(Connect By) – 开发者在线 – www.builder.com.cn

评论关闭
发表于: arch/management | 作者: | 日期: 2008/11/03 08:11
标签:

UML语言的概述:

1:UML统一建模语言( Unified Modeling Language ),用于商业建模,软件开发建模,及各类系统的建模。建模很符合人类思维的方式,先把具体的东西抽象化,再把抽象的东西转化为另一类具体的东西。 More …

评论关闭
发表于: java/j2ee | 作者: | 日期: 2008/11/03 08:11
标签:

9:JAVA解析XML的方式?
答:SAX、DOM

11:用JAVA实现一种排序 ,比较,JAVA类实现序列化的方法(二种)?
如在COLLECTION框架中,实现比较要实现什么样的接口。

14.设计模式与UML方面。
如工厂模式,解决多数据库支持问题。
15。 编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。

16。在ORACLE大数据量下的分页解决方法。 一般用截取ID方法,还有是三层嵌套方法。

17。WEB SERVICE名词解释。JSWDL开发包的介绍。JAXP、JAXM的解释。SOAP、UDDI解释。

18。BS与CS的联系与区别。

20。JAVA多线程编程。

用JAVA写一个多线程程序,如写四个线程,二个加1,二个对一个变量减一,输出。

21。JAVA的基本功: STRING与STRINGBUFFER的区别。

22。STRUTS的应用(如STRUTS架构)

2. 字符串的操作:
写一个方法,实现字符串的反转,如:输入abc,输出cba
public static String reverse(String s){
int length=s.length();
StringBuffer result=new StringBuffer(length);
for(int i=length-1;i>=0;i–)
result.append(s.charAt(i));
return result.toString();
}
写一个方法,实现字符串的替换,如:输入bbbwlirbbb,输出bbbhhtccc。
3. 数据类型之间的转换
如何将数值型字符转换为数字(Integer,Double)
如何将数字转换为字符
如何去小数点前两位,并四舍五入。
4. 日期和时间
如何取得年月日,小时分秒
Date dat=new Date();
dat.getYear();dat.getMonth();dat.getDay();dat.getHours();…
如何取得从1970年到现在的毫秒数
long now=dat.getTime();
如何获取某个日期是当月的最后一天
如何格式化日期
DateFormate df=DateFormate.getInstance();
df.Format(dat);
5. 数组和集合
6. 文件和目录(I/O)操作
如何列出某个目录下的所有文件
如何列出某个目录下的所有子目录
判断一个文件或目录是否存在
如何读写文件
7. Java多态的实现(继承、重载、覆盖)
8. 编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串。
9. Java中访问数据库的步骤,Statement和PreparedStatement之间的区别。
10. 找出下列代码可能存在的错误,并说明原因:

三、J2EE相关知识
1. 介绍J2EE、J2SE、J2SE的区别。
2. J2EE是一种技术还是一种平台,他提供了那些技术。
3. 什么是Application Server,它有什么功能和优点。
4. 简单介绍连接池的优点和原理。
5. Web.xml的作用
四、其他
1. Web安全性的考虑(表单验证、浏览器Basic方式的验证,应用程序的安全性,SSL,代码考虑)
2. 简单介绍您所了解的MVC。
3. 简单介绍所了解的XML。
4. 文档和编码规范
5. Java中的分页、效率考虑。
6. 简单介绍您所了解的structs。

找出以下程序错误。
Class Test{
private String par1;
private String par2;
Test(){
}

public static void main(String[] arg){
int a ;
if(a){
System.out.println(“par1=”+par1);
}else{
System.out.println(“par2=” + par2);
}
}
}

Servlet的生命周期问题参见:
1:良葛格學習筆記 http://caterpillar.onlyfun.net/Gossip/JSPServlet/ServletLifeTime.htm
2: Sun的官方教程 http://gceclub.sun.com.cn/staticcontent/html/webservices/web_services_tutorial/jst.14/14.1.htm

简述HttpSession的作用、使用方法,可以用代码说明。(时间3分钟)

请画出Servlet 2.2以上Web Application的基本目录结构(时间2分钟)

谈谈你对三层结构的理解(时间5分钟)

五、名词解释写出全称并简要说明(12分钟)
a)EJB
b)JNDI
c)MVC
d)UML
e)LDAP
f)SOAP

六、程序设计,写出一个Servlet,实现以下功能:已知数据源的JNDI地址为jdbc/db2DataSource,请用这个名字获得数据库连接,
执行SQL:”SELECT A,B FROM MYTALBE”,把执行结果输出到文本文件”out.txt”中,并将请求转发到”/application/test.jsp”。(6分钟)

1.Applet与servlet如何通信;
Applet应该是一种不常用的技术了,所以Applet与servlet的通信我不太清楚,但客户端与servlet的通信基于以下模型:
客户端请求–〉web容器--〉servlet容器--〉servlet

2.JSP标签的作用?如何定义
(1)定义标签类
(2)配置标签类
(3)声明引用
(4)使用标签

3.如何解决界面友好和操作简便:
你要问人机界面的设计?这是一个比较的论题,我谈一下我自己的认识。我感觉有以下几点可以参考:
(1)界面设计要一致,windows系统之所以这么流行,跟它一直得用户界面不无关系,它有着一致的菜单栏、一致的工具栏,
用户使用任何windows下的应用程序都会很快上手,至少不会因为界面问题而卡住,这一点很值得学习。
(2)界面必须使用户随时掌握任务的进展情况
(3)界面必须能够提供帮助
(4)宁可让程序多干,不可让用户多干
(5)具有较强的容错功能

4.有一个3*4的table如何在一个表格中按回车键跳到下一个表格中;

5.EJB的事物是如何实现的?何时进行回滚;

6.根据你的开发经验,说说你是如何对你的系统进行J2EE设计模式的。何谓J2EE设计模式,如何应用?

7.用JAVA实现一个数据连结池。

达内学员提供的面试题

冯健诚:达内SD0407毕业学员
目前就职于:中国银行下属的软件部门做软件开发工作。

冯健诚:首先先谢谢达内的老师在前面的五个月里给我的帮助,使得我能顺利的找到工作.
下面是我遇到的一些面试的题目,希望对学第,学妹能有帮助.

3,替换一个index.html文件中的”&lt”替换成”<","&gt"替换成">“,并还保存成原文件名

4,写程序算出3的300次方除以7余几。(程序写不出来的话,可以谈谈算法)

还有其他一部分题目,说几点自己感觉要注意的好了
1,char ch = …;
然后在if的时候写成了 if(ch > “A”) //这个里的”A”应该用单引号

java:
1,写一个函数打印出1-100之间所有的素数
2,说说struts是怎么体现mvc的
3,谈谈一些你了解的设计模式
祝工作顺利^^!

在此感谢冯健诚学员还惦记这达内在校的学第学妹们,同时也恭喜他找到了自己满意的工作。

评论关闭
发表于: java/j2ee | 作者: | 日期: 2008/11/03 08:11
标签:

1、表user有字段(ID, 姓名, 部门编号),ID是主键; 表department有字段(部门编号, 部门名称),部门编号是主键。表user 与表department是N-1的关系,也就是说一个user一定属于唯一的一个部门,一个部门可以有多个人员。
a.请写出一个SQL语句,查询出user表中所有人员的(ID,姓名,部门名称)。
b.如果希望一次性插入一个user(‘001’, ‘tom’,’101’)记录,和他所属的department(‘101’, ‘Develop Dept.’),要么全失败,要么全成功,应该怎么做呢?(只需要写出示意性的语句就可以了)
a:
SELECT u.id , u.name , d.name FROM user AS u , department AS d WHERE u. departmentid = d.id;

b:
SET AUTOCOMMIT = 0;
BEGIN;
INSERT INTO user VALUES(‘001’, ‘tom’, ‘101’);
INSERT INTO department VALUES(‘101’, ‘Develop Dept’);
COMMIT;
失败的话:
ROLLBACK;

2、请简单解释一下DTD在XML语言中的主要作用,以及SOAP协议的用途。

DTD是Document type Definition(文档类型定义)的缩写,它规定了XML文档的构建方式。

SOAP的全称是Simple Object Access Protocol,即简单对象访问协议。SOAP是在分散或分布的环境中交换信息的简单协议,他以XML作为数据传送的方式。SOAP对于实现基于Web的无缝集成系统发挥着非常重要的作用。SOAP有助于实现松散耦合的、跨平台的、于语言无关的、与特定接口无关的分布式系统。

3、尽管SQL92标准已经被公认为标准的SQL语言规范,但是通常不同数据库服务器所能够接受的SQL语句都会有一些区别。假如一套软件需要支持多种不同的数据库,而源代码中的SQL语句只希望有一套,从学过的课程,你会联想到什么解决方法呢?(简单叙述一下思路)

对于大部分的应用系统来说,SQL92标准已经够用了,很多时候我们只是使用这些数据库之间功能的公共子集。对于复杂的应用系统可以采用类似Hibernate的做法,提供一套自定义的SQL文法,然后将其转换为不同数据库特定的SQL。这样在业务逻辑层上只有一套多数据库共用的’SQL’语句。或者直接采用Hibernate,使用其所提供的HQL,这样多数据库可以共用一套HQL语句。

4、假如有集合A、B,A与B之间为一一影射关系,并且这一影射是无固定规律的。现在需要在程序中每当给定A中的一个元素时,迅速的找到B中对应的一个元素。你认为选择什么样的数据结构比较合适呢?(不需要写程序)
Map

5、在一个汽车模拟游戏中,各种不同汽车由于性能参数不同,在同一个跑道上奔跑时姿态的算法各不相同。当你用C++语言设计这个程序时,会想到利用C++的什么特性呢?

函数重载。

以下编程题目如无特殊要求,可以使用JAVA、C、C++、C#、PASCAL语言。
6、写出一个函数,将人民币的小写数字,转换成大写。
如:2084.52 —》贰仟零八十四圆五角贰分
要求考虑全面,算法精练,书写规范。

public static String moneyConvert(double input) {
String[] faceVal = new String[] { “零”, “壹”, “贰”, “叁”, “肆”, “伍”, “陆”, “柒”, “捌”, “玖” };
String[] level = new String[] { “圆”, “拾”, “佰”, “仟”, “萬”, “亿” };

String[] parts = String.valueOf(input).split(“\\.”);
String faceInt = new StringBuffer(parts[0]).reverse().toString();
StringBuffer tempSb = new StringBuffer();
for (int i = 0; i < faceInt.length(); i++) { tempSb.append(faceVal[Integer.valueOf(faceInt.substring(i, i + 1)).intValue()]); } faceInt = tempSb.toString(); String faceDecimal = parts[1]; StringBuffer resultSb = new StringBuffer(); for (int i = 0; i < faceInt.length(); i++) { if (i == 0) { resultSb.append(level[0]); } else { if ((i + 4) % 8 == 0) { resultSb.append(level[4]); } else if (i % 8 == 0) { resultSb.append(level[5]); } else { resultSb.append(level[i % 4]); } } String temp = faceInt.substring(i, i + 1); resultSb.append(temp); } String result = resultSb.reverse().toString(); if(faceDecimal.equals("00")){ return result+"整"; }else{ return result+ faceVal[Integer.parseInt(faceDecimal.substring(0,1))]+"角"+ faceVal[Integer.parseInt(faceDecimal.substring(1,2))]+"分"; } } 7. 写出一个函数将给定的一个数字串补足成10位长度,如: 567 —》 0000000567 23456 —》 0000023456 要求写出一个耗费CPU时间片较少的算法和一个耗费内存资源较少的算法。 /** * 耗费时间片较少 */ public static String fillString(long input){ String inputStr = String.valueOf(input); if(inputStr.length() > 10){
return “”;
}
if(inputStr.length() == 10){
return String.valueOf(input);
}

char[] retValue = new char[10];
for(int i = 0; i < 10; i++){ retValue[i] = '0'; } int temp = inputStr.length() - 1; for(int i = 9; i >= 10 – inputStr.length(); i– ){
retValue[i] = inputStr.charAt(temp–);
}
return new String(retValue);
}

/**
* 耗费内存较少
*/
public static String fillString2(long input){
if(input > 9999999999L){
return “”;
}
if(input >= 1000000000L && input <= 9999999999L){ return String.valueOf(input); } long tempValue = 1000000000L + input; StringBuilder retValue = new StringBuilder(String.valueOf(tempValue)); retValue.replace(0,1,"0"); return retValue.toString(); }

评论关闭
发表于: arch/management | 作者: | 日期: 2008/11/03 08:11

面向对象的编程(OOP)能使现实世界中的概念在计算机程序中变成模块。它包括构造程序的特征以及组织数据和算法的机制。OOP语言有三个特征:封装、多态性及继承。所有这些特征与类的概念是息息相关的。 More …

评论关闭
发表于: lnmp | 作者: | 日期: 2008/11/03 08:11
标签:

blog美化工具集锦
工具类型
1、blog天气预报
http://www.blogweather.net/WeatherHelper.aspx

blogweather是一个在blog上显示所在天气的wedget

2、blog漂流瓶

3、blog文内注释
http://linebuzz.com/getBuzzd/
选中文本就可以对发表注释。

4、blog网页聊天
http://www.cbox.ws/

首页

5、微型blog

7、在播音乐

8、

9、blog日历
http://blog.sina.com.cn/s/reader_4a36e6fe010008nx.html

10 blog广告
http://www.bloggerads.net/

美化类型

评论关闭
发表于: java/j2ee | 作者: | 日期: 2008/11/03 08:11

总结了一下java.util.Random类的使用。 More …

评论关闭
发表于: java/j2ee | 作者: | 日期: 2008/11/03 08:11
标签:

第十八,error和exception有什么区别?
error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。
exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。

第二十,abstract class和interface有什么区别?
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。

第二十一,abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
都不能

第二十二,接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?
接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。

第二十三,启动一个线程是用run()还是start()?
启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。

构造器Constructor是否可被override?
构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。

第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
不能,一个对象的一个synchronized方法只能由一个线程访问。

第二十八,编程题: 用最有效率的方法算出2乘以8等於几?
有C背景的程序员特别喜欢问这种问题。

2 << 3 第二十九,两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? 不对,有相同的hash code。 第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 是值传递。Java 编程语言只由值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。 第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上? switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。 第三十二,编程题: 写一个Singleton出来。 Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。 一般Singleton模式通常有几种种形式: 第一种形式: 定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。 public class Singleton {   private Singleton(){}   //在自己内部定义自己一个实例,是不是很奇怪?   //注意这是private 只供内部调用   private static Singleton instance = new Singleton();   //这里提供了一个供外部访问本class的静态方法,可以直接访问     public static Singleton getInstance() {     return instance;       } } 第二种形式: public class Singleton {   private static Singleton instance = null;   public static synchronized Singleton getInstance() {   //这个方法比上面有所改进,不用每次都进行生成对象,只是第一次        //使用时生成实例,提高了效率!   if (instance==null)     instance=new Singleton(); return instance;   } } 其他形式: 定义一个类,它的构造函数为private的,所有方法为static的。 一般认为第一种形式要更加安全些 Hashtable和HashMap Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现 HashMap允许将null作为一个entry的key或者value,而Hashtable不允许 还有就是,HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey 因为contains方法容易让人引起误解。 最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在 多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。 Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。 以下是达内的学员遇到的情况,这种问题还好是笔试,空想的话可比我遇到的有难度: 今天参加了北京博彦公司的面试,让做了套题,现将其中几道比较有意思的智力题公布给 大家,大家一起想想。 1.有无限多的水,一个3升容量的桶和一个5升容量的桶,现不需要其他工具,准确量出4 升水。提示有两种方法。 2.有个没有刻度的天平,只有7公斤和2公斤的秤砣。要求只使用天平3次,能把140公斤 的盐分成90公斤和50公斤的吗?如果能,方法请写出来。

评论关闭
发表于: os/software | 作者: | 日期: 2008/11/03 08:11

OLE
OLE (Object Linking and Embedding) is Microsoft’s framework for a compound document technology. Briefly, a compound document is something like a display desktop that can contain visual and information objects of all kinds: text, calendars, animations, sound, motion video, 3-D, continually updated news, controls, and so forth. Each desktop object is an independent program entity that can interact with a user and also communicate with other objects on the desktop. Part of Microsoft’s ActiveX technologies, OLE takes advantage and is part of a larger, more general concept, the Component Object Model (COM) and its distributed version, DCOM. An OLE object is necessarily also a component (or COM object). More …

评论关闭