posts - 495,  comments - 11,  trackbacks - 0
 
在Java的程序发布中,很多人会选择采用二进制的jar的格式进行发布,怎么样读取Jar里面的资源呢?
主要是采用ClassLoader的下面几个方法来实现:
public URL getResource(String name);
public InputStream getResourceAsStream(String name)

public static InputStream getSystemResourceAsStream(String name)
public static URL getSystemResource(String name)

后两个方法可以看出是静态的方法,这几个方法都可以从Jar中读取图片资源,但是对与动画的gif文件,笔者在尝试过程中发现,存在一些差异。

String gifName为Gif文件在Jar中的相对路径。
(1)使用了两个静态方法
BufferedImage image=ImageIO.read(ClassLoader.getSystemResourceAsStream(gifName));

或者

Image image=Toolkit.getDefaultToolkit().getImage(ClassLoader.getSystemResource(gifName));

这两种方式可以成功地读取gif文件,但是对于gif动画,显示出来地是静态的。

(2)使用其他两个方法
Image image=Toolkit.getDefaultToolkit().getImage(this.getClass.getClassLoader().getResource(gifName));

再这种方式下动画可以正常显示了。
posted @ 2007-05-30 21:19 jadmin 阅读(52) | 评论 (0)编辑 收藏
(1) 类名首字母应该大写。字段、方法以及对象(句柄)的首字母应小写。对于所有标识符,其中包含的所有单词都应紧靠在一起,而且大写中间单词的首字母。例如:

ThisIsAClassName

thisIsMethodOrFieldName

若在定义中出现了常数初始化字符,则大写static final基本类型标识符中的所有字母。这样便可标志出它们属于编译期的常数。

Java包(Package)属于一种特殊情况:它们全都是小写字母,即便中间的单词亦是如此。对于域名扩展名称,如com,org,net或者edu等,全部都应小写(这也是Java 1.1和Java 1.2的区别之一)。

(2) 为了常规用途而创建一个类时,请采取“经典形式”,并包含对下述元素的定义:

equals()

hashCode()

toString()

clone()(implement Cloneable)

implement Serializable

(3) 对于自己创建的每一个类,都考虑置入一个main(),其中包含了用于测试那个类的代码。为使用一个项目中的类,我们没必要删除测试代码。若进行了任何形式的改动,可方便地返回测试。这些代码也可作为如何使用类的一个示例使用。

(4) 应将方法设计成简要的、功能性单元,用它描述和实现一个不连续的类接口部分。理想情况下,方法应简明扼要。若长度很大,可考虑通过某种方式将其分割成较短的几个方法。这样做也便于类内代码的重复使用(有些时候,方法必须非常大,但它们仍应只做同样的一件事情)。

(5) 设计一个类时,请设身处地为客户程序员考虑一下(类的使用方法应该是非常明确的)。然后,再设身处地为管理代码的人考虑一下(预计有可能进行哪些形式的修改,想想用什么方法可把它们变得更简单)。

(6) 使类尽可能短小精悍,而且只解决一个特定的问题。下面是对类设计的一些建议:

■一个复杂的开关语句:考虑采用“多形”机制

■数量众多的方法涉及到类型差别极大的操作:考虑用几个类来分别实现

■许多成员变量在特征上有很大的差别:考虑使用几个类

(7) 让一切东西都尽可能地“私有”??private。可使库的某一部分“公共化”(一个方法、类或者一个字段等等),就永远不能把它拿出。若强行拿出,就可能破坏其他人现有的代码,使他们不得不重新编写和设计。若只公布自己必须公布的,就可放心大胆地改变其他任何东西。在多线程环境中,隐私是特别重要的一个因素??只有private字段才能在非同步使用的情况下受到保护。

(9) 若不得已进行一些不太雅观的编程,至少应该把那些代码置于一个类的内部。

(10) 任何时候只要发现类与类之间结合得非常紧密,就需要考虑是否采用内部类,从而改善编码及维护工作。

(11) 尽可能细致地加上注释,并用javadoc注释文档语法生成自己的程序文档。

(12) 避免使用“魔术数字”,这些数字很难与代码很好地配合。如以后需要修改它,无疑会成为一场噩梦,因为根本不知道“100”到底是指“数组大小”还是“其他全然不同的东西”。所以,我们应创建一个常数,并为其使用具有说服力的描述性名称,并在整个程序中都采用常数标识符。这样可使程序更易理解以及更易维护。

(13) 涉及构建器和异常的时候,通常希望重新丢弃在构建器中捕获的任何异常??如果它造成了那个对象的创建失败。这样一来,调用者就不会以为那个对象已正确地创建,从而盲目地继续。

(14) 当客户程序员用完对象以后,若你的类要求进行任何清除工作,可考虑将清除代码置于一个良好定义的方法里,采用类似于cleanup()这样的名字,明确表明自己的用途。除此以外,可在类内放置一个boolean(布尔)标记,指出对象是否已被清除。在类的finalize()方法里,请确定对象已被清除,并已丢弃了从RuntimeException继承的一个类(如果还没有的话),从而指出一个编程错误。在采取象这样的方案之前,请确定finalize ()能够在自己的系统中工作(可能需要调用System.runFinalizersOnExit(true),从而确保这一行为)。

(15) 在一个特定的作用域内,若一个对象必须清除(非由垃圾收集机制处理),请采用下述方法:初始化对象;若成功,则立即进入一个含有finally从句的try块,开始清除工作。

(16) 若在初始化过程中需要覆盖(取消)finalize(),请记住调用super.finalize()(若Object属于我们的直接超类,则无此必要)。在对finalize()进行覆盖的过程中,对super.finalize()的调用应属于最后一个行动,而不应是第一个行动,这样可确保在需要基础类组件的时候它们依然有效。

(17) 创建大小固定的对象集合时,请将它们传输至一个数组(若准备从一个方法里返回这个集合,更应如此操作)。这样一来,我们就可享受到数组在编译期进行类型检查的好处。此外,为使用它们,数组的接收者也许并不需要将对象“造型”到数组里。

(18) 尽量使用interfaces,不要使用abstract类。若已知某样东西准备成为一个基础类,那么第一个选择应是将其变成一个interface(接口)。只有在不得不使用方法定义或者成员变量的时候,才需要将其变成一个abstract(抽象)类。接口主要描述了客户希望做什么事情,而一个类则致力于(或允许)具体的实施细节。

(19) 在构建器内部,只进行那些将对象设为正确状态所需的工作。尽可能地避免调用其他方法,因为那些方法可能被其他人覆盖或取消,从而在构建过程中产生不可预知的结果(参见第7章的详细说明)。

(20) 对象不应只是简单地容纳一些数据;它们的行为也应得到良好的定义。

(21) 在现成类的基础上创建新类时,请首先选择“新建”或“创作”。只有自己的设计要求必须继承时,才应考虑这方面的问题。若在本来允许新建的场合使用了继承,则整个设计会变得没有必要地复杂。

(22) 用继承及方法覆盖来表示行为间的差异,而用字段表示状态间的区别。一个非常极端的例子是通过对不同类的继承来表示颜色,这是绝对应该避免的:应直接使用一个“颜色”字段。

(23) 为避免编程时遇到麻烦,请保证在自己类路径指到的任何地方,每个名字都仅对应一个类。否则,编译器可能先找到同名的另一个类,并报告出错消息。若怀疑自己碰到了类路径问题,请试试在类路径的每一个起点,搜索一下同名的.class文件。

(24) 在Java 1.1 AWT中使用事件“适配器”时,特别容易碰到一个陷阱。若覆盖了某个适配器方法,同时拼写方法没有特别讲究,最后的结果就是新添加一个方法,而不是覆盖现成方法。然而,由于这样做是完全合法的,所以不会从编译器或运行期系统获得任何出错提示??只不过代码的工作就变得不正常了。

(25) 用合理的设计方案消除“伪功能”。也就是说,假若只需要创建类的一个对象,就不要提前限制自己使用应用程序,并加上一条“只生成其中一个”注释。请考虑将其封装成一个“独生子”的形式。若在主程序里有大量散乱的代码,用于创建自己的对象,请考虑采纳一种创造性的方案,将些代码封装起来。

(26) 警惕“分析瘫痪”。请记住,无论如何都要提前了解整个项目的状况,再去考察其中的细节。由于把握了全局,可快速认识自己未知的一些因素,防止在考察细节的时候陷入“死逻辑”中。

(27) 警惕“过早优化”。首先让它运行起来,再考虑变得更快??但只有在自己必须这样做、而且经证实在某部分代码中的确存在一个性能瓶颈的时候,才应进行优化。除非用专门的工具分析瓶颈,否则很有可能是在浪费自己的时间。性能提升的隐含代价是自己的代码变得难于理解,而且难于维护。

(28) 请记住,阅读代码的时间比写代码的时间多得多。思路清晰的设计可获得易于理解的程序,但注释、细致的解释以及一些示例往往具有不可估量的价值。无论对你自己,还是对后来的人,它们都是相当重要的。如对此仍有怀疑,那么请试想自己试图从联机Java文档里找出有用信息时碰到的挫折,这样或许能将你说服。

(29) 如认为自己已进行了良好的分析、设计或者实施,那么请稍微更换一下思维角度。试试邀请一些外来人士??并不一定是专家,但可以是来自本公司其他部门的人。请他们用完全新鲜的眼光考察你的工作,看看是否能找出你一度熟视无睹的问题。采取这种方式,往往能在最适合修改的阶段找出一些关键性的问题,避免产品发行后再解决问题而造成的金钱及精力方面的损失。

(30) 良好的设计能带来最大的回报。简言之,对于一个特定的问题,通常会花较长的时间才能找到一种最恰当的解决方案。但一旦找到了正确的方法,以后的工作就轻松多了,再也不用经历数小时、数天或者数月的痛苦挣扎。我们的努力工作会带来最大的回报(甚至无可估量)。
posted @ 2007-05-30 21:13 jadmin 阅读(57) | 评论 (0)编辑 收藏

  参考:

  http://danadler.com/jacob/
  http://jakarta.apache.org/poi/
  http://www.onjava.com/pub/a/onjava/2003/01/22/poi.html
  http://www.csdn.net/develop/article/15/15311.shtm
  http://forum.java.sun.com/thread.jsp?forum=40&thread=382666&tstart=0&trange=15

  Java Excel API 文档

  http://www.andykhan.com/jexcelapi/

  1、一个jacob操作Word的例子,其他操作excel,pdf的sample里都有

  import java.io.File;
  import com.jacob.com.*;
  import com.jacob.activeX.*;
  public class WordTest {
  
   public static void main(String[] args) {
     WordBean word=new WordBean();
     word.openWord(true);
     word.createNewDocument();
     word.insertText("Hello word.");
   }
  }

  import com.jacob.activeX.*;
  import com.jacob.com.*;
  public class WordBean extends java.awt.Panel
  {
   private ActiveXComponent MsWordApp = null;
   private Dispatch document = null;
   public WordBean()
   {
     super();
   }
   public void openWord(boolean makeVisible)
   {
  //Open Word if we've not done it already
     if (MsWordApp == null)
     {
       MsWordApp = new ActiveXComponent("Word.Application");
     }
  //Set the visible property as required.
     Dispatch.put(MsWordApp, "Visible",
            new Variant(makeVisible));
   }
   public void createNewDocument()
   {
  //Find the Documents collection object maintained by Word
     Dispatch documents =
         Dispatch.get(MsWordApp,"Documents").toDispatch();
  //Call the Add method of the Documents collection to create
  //a new document to edit
     document = Dispatch.call(documents,"Add").toDispatch();
   }
   public void insertText(String textToInsert)
   {
  // Get the current selection within Word at the moment. If
  // a new document has just been created then this will be at
  // the top of the new doc
     Dispatch selection =
         Dispatch.get(MsWordApp,"Selection").toDispatch();
  //Put the specified text at the insertion point
     Dispatch.put(selection,"Text",textToInsert);
   }
   public void saveFileAs(String filename)
   {
     Dispatch.call(document,"SaveAs",filename);
   }
   public void printFile()
   {
  //Just print the current document to the default printer
     Dispatch.call(document,"PrintOut");
   }
   public void closeDocument()
   {
  // Close the document without saving changes
  // 0 = wdDoNotSaveChanges
  // -1 = wdSaveChanges
  // -2 = wdPromptToSaveChanges
     Dispatch.call(document, "Close", new Variant(0));
     document = null;
   }
   public void closeWord()
   {
     Dispatch.call(MsWordApp,"Quit");
     MsWordApp = null;
     document = null;
   }
  }

posted @ 2007-05-30 01:10 jadmin 阅读(72) | 评论 (0)编辑 收藏

代码如下:

a.html如下:

<HTML><HEAD><TITLE></TITLE>
< http-equiv=Content-Type content="text/html; charset=utf-8">
</HEAD>
<BODY style="BACKGROUND-COLOR: transparent">
<H1>透明文档</H1>
<P>此I无背景颜色</P>
<P>BODY:<br><BODY STYLE="background-color:transparent"></P></BODY></HTML>

b.html如下:

<HTML><HEAD><TITLE></TITLE>
< http-equiv=Content-Type content="text/html; charset=utf-8">
</HEAD>
<BODY style="BACKGROUND-COLOR: transparent">
<H1>透明文档</H1>
<P>此I 设为绿色。</P>
<P>BODY: <br><BODY STYLE="background-color:transparent"></P></BODY></HTML>

如果a.html透明的,它将继承I的背景颜色 如果容器I也是透明的,a.html将继承I的父容器的颜色,如果一个对象不透明,它将覆盖其容器的颜色,默认是透明的。

Internet Explorer 5.5 以上版本允许你设置透明属性,通过设置是否可被透明,你可以改变背景的颜色。[在不设置透明属性的情况下,默认背景颜色为白色]

I定义如下:

<I ID="1" src="/a.html" allowTransparency="true" HEIGHT=180 WIDTH=300> </I> <I ID="2" src="/b.html" allowTransparency="true" STYLE="background-color:#459800" HEIGHT=180 WIDTH=300> </I>

按钮定义如下:

<INPUT TYPE="button" ="不透明" ="turnTransparencyOff()"> <INPUT TYPE="button" ="透明" ="turnTransparencyOn()">

<>
//函数turnTransparencyOff():

turnTransparencyOff()
{ all.1.allowTransparency = false; all.2.allowTransparency = false; }

//函数turnTransparencyOn():

turnTransparencyOn()
{ all.1.allowTransparency = true; all.2.allowTransparency = true; }
</>

posted @ 2007-05-30 01:01 jadmin 阅读(62) | 评论 (0)编辑 收藏
<language=java>
ie = (all)? true:false
if (ie){
ctlent(eventobject){if(event.ctrlKey && event.keyCode==13){this.form1.submit();}}
}
</>

<form action="index.html" method=POST name=form1>
<textarea cols=95 name=Content rows=12 wrap=virtual down=ctlent()>
Ctrl+Enter提交内容信息
</textarea>
<input type=Submit ="Submit" name=Submit>
</form>

posted @ 2007-05-30 00:57 jadmin 阅读(56) | 评论 (0)编辑 收藏

41.细线分隔线
<hr noshade size=0 color=#C0C0C0>

42.过度方式
< http-equiv="Page-Exit" content="revealTrans(Duration=3,Transition=5)">
Duration的值为网页动态过渡的时间,单位为秒。
Transition是过渡方式,它的值为0到23,分别对应24种过渡方式。如下表:
0 盒状收缩 1 盒状放射
2 圆形收缩 3 圆形放射
4 由下往上 5 由上往下
6 从左至右 7 从右至左
8 垂直百叶窗 9 水平百叶窗
10 水平格状百叶窗 11垂直格状百叶窗
12 随意溶解 13从左右两端向中间展开
14从中间向左右两端展开 15从上下两端向中间展开
16从中间向上下两端展开 17 从右上角向左下角展开
18 从右下角向左上角展开 19 从左上角向右下角展开
20 从左下角向右上角展开 21 水平线状展开
22 垂直线状展开 23 随机产生一种过渡方式

43.如何控制横向和纵向滚动条的显隐?
<body style="overflow-y:hidden"> 去掉x轴
<body style="overflow-x:hidden"> 去掉y轴
<body scroll="no">不显

44.怎样在 FrontPage2000 中加入 Flash 动画?
在 FrontPage2000 中,点击[插入]->[高级]->[插件],在弹出的窗口中,设置一下 Flash 文件的大小及其它信息,确定即可。

45.加入注释的格式是:    
〈!-[注释内容…]--〉

46.怎样在网页中加入 E-mail 链接并显示预定的主题?
〈A href="mailto:itren@itren.cn?subject=主题"〉……〈/a〉

47.定义本网页关键字,
可以在〈Head〉〈/Head〉中加入如下代码:  
〈 name="Keywords" content="E代时光"〉   
Content 中所包含的就是关键字,你可以自行设置。   
这里有个技巧,你可以重复某一个单词,这样可以提高自己网站的排行位置,如:
〈 name="Keywords" content="E代时光"〉

48.IE5.0 的部分快捷键:
A:打开查找功能:Ctrl+F
关闭浏览器窗口:Ctrl+W
打开地址栏下拉列表框:F4
刷 新:F5
将当前Web页保存到收藏夹列表:Ctrl+D
打开当前 IE 窗口的一个拷贝:Ctrl+N
停止下载当前网页:Esc
光标迅速移动到网页的开头:Home
光标迅速移动到网页的尾部:End
打开新的地址键入窗口:Ctrl+O
打开收藏夹:Ctrl+I
打开历史记录文件夹:Ctrl+H
打开浏览器设定的默认主页:Alt+HOME

49.添加到收藏夹:
〈a href="java :external.addFavorite(http://www.itren.cn ,www.itren.cn);"〉添加到收藏夹〈/a〉

50.设为首页:
〈a href=# =this.style.behavior=url(#default#homepage);this.setHomePage(http://www.itren.cn); 〉设为首页〈/a〉

51.定制浏览器地址栏前的小图标:
A:在网页的〈head〉〈/head〉间加入以下语句:
〈link rel="shortcuticon" href="http://…/icon.ico"〉
即可。其中 icon.ico 为 16x16 的图标文件,颜色不要超过 16 色。

52.把滚动条放在浏览器窗口的左边
A:在 <body> 中加 dir=RTL,即 <body dir=RTL>

53.页面全部保护
<>
<!--
//加入页面保护
rf()
{return false; }
oncontextmenu = rf
keydown()
{if(event.ctrlKey ==true || event.keyCode ==93 || event.shiftKey ==true){return false;} }
down =keydown
drag()
{return false;}
ondragstart=drag
stopmouse(e) {
if (navigator.appName == Netscape && (e.which == 3 || e.which == 2))
return false;
else if
(navigator.appName == Microsoft Internet Explorer && (event.button == 2 || event.button == 3)) {
alert("IT人带给你的是最好的东西");
return false;
}
return true;
}
down=stopmouse;
if (layers)
captureEvents(Event.MOUSEDOWN);
down=stopmouse;
//-->
</>

54.状态栏的特效,可以很好的屏蔽显示的地址
< language=java>kstatus();
e3i5(){
self.status="※※欢迎来到【IT人】※※★☆赶快把http://www.itren.cn 告诉给你的朋友吧★☆※※";
setTimeout("e3i5()",0);
}</>

55.防刷新代码
<%
Dim URL
If DateDiff("s",Request.s("oesun")("vitistime"),Now())<2 Then
URL=Request.ServerVariables("Http_REFERER")
Response.Write("< http-equiv=""refresh"" content=""2;URL="&URL&""">")
Response.Write("防刷新,两秒后自动跳转...")
Response.End
End IF
Response.s("oesun")("vitistime")=Now()
%>

56. oncontextmenu="event.return=false" 将彻底屏蔽鼠标右键
<table border oncontextmenu=return(false)><td>no</table> 可用于Table

57. <body onselectstart="return false"> 取消选取、防止复制

58. onpaste="return false" 不准粘贴

59. oncopy="return false;" oncut="return false;" 防止复制

60. <link rel="Shortcut Icon" href="favicon.ico"> IE地址栏前换成自己的图标

61. <link rel="Bookmark" href="favicon.ico"> 可以在收藏夹中显示出你的图标

62. <input style="ime-mode:disabled"> 关闭输入法

63. 永远都会带着框架
< language="Java"><!--
if (window == top)top.location.href = "s.htm"; //s.htm为框架网页
// --></>

64. 防止被人
< LANGUAGE=JAVA><!--
if (top.location != self.location)top.location=self.location;
// --></>

65. 网页将不能被另存为
<no><i src="/*.html>";</i></no>

66. <input type=button =查看网页源代码
="location = view-source:+ http://www.51js.com/">

67.删除时确认
<a href="/java" :if(confirm("确实要删除吗?"))location="boos.asp?&areyou=删除&page=1">删
除</a>

68. 取得控件的绝对位置
//Java
< language="Java">
getIE(e){
var t=e.offsetTop;
var l=e.offsetLeft;
while(e=e.offsetParent){
t+=e.offsetTop;
l+=e.offsetLeft;
}
alert("top="+t+"/nleft="+l);
}
</>
//VB
< language="VB"><!--
getIE()
dim t,l,a,b
set a=all.img1
t=all.img1.offsetTop
l=all.img1.offsetLeft
while a.tagName<>"BODY"
set a = a.offsetParent
t=t+a.offsetTop
l=l+a.offsetLeft
wend
msgbox "top="&t&chr(13)&"left="&l,64,"得到控件的位置"
end
--></>

69. 光标是停在文本框文字的最后
< language="java">
cc()
{
var e = event.srcElement;
var r =e.createTextRange();
r.moveStart(character,e..length);
r.collapse(true);
r.select();
}
</>
<input type=text name=text1 ="123" ="cc()">

70. 判断上一页的来源
java :
referrer

71. 最小化、最大化、关闭窗口
<object id=hh1 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">
<param name="Command" ="Minimize"></object>
<object id=hh2 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">
<param name="Command" ="Maximize"></object>
<OBJECT id=hh3 classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">
<PARAM NAME="Command" ="Close"></OBJECT>
<input type=button =最小化 =hh1.Click()>
<input type=button =最大化 =hh2.Click()>
<input type=button =关闭 =hh3.Click()>
本例适用于IE

72.屏蔽功能键Shift,Alt,Ctrl
<>
look(){
if(event.shiftKey)
alert("禁止按Shift键!"); //可以换成ALT CTRL
}
down=look;
</>

73. 网页不会被缓存
< HTTP-EQUIV="pragma" CONTENT="no-cache">
< HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
< HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT">
或者< HTTP-EQUIV="expires" CONTENT="0">

74.怎样让表单没有凹凸感?
<input type=text style="border:1 solid #000000">

<input type=text style="border-left:none; border-right:none; border-top:none; border-bottom:
1 solid #000000"></textarea>

75.<div><span>&<layer>的区别?
<div>(division)用来定义大段的页面元素,会产生转行
<span>用来定义同一行内的元素,跟<div>的唯一区别是不产生转行
<layer>是ns的标记,ie不支持,相当于<div>

76.让弹出窗口总是在最上面:
<body ="this.focus();">

77.不要滚动条?
让竖条没有:
<body style=overflow:scroll;overflow-y:hidden>
</body>
让横条没有:
<body style=overflow:scroll;overflow-x:hidden>
</body>
两个都去掉?更简单了
<body scroll="no">
</body>

78.怎样去掉图片链接点击后,图片周围的虚线?
<a href="#" ="this.blur()"><img src="/logo.jpg" border=0></a>

79.电子邮件处理提交表单
<form name="form1" method="post" action="mailto:****@***.com" enctype="text/plain">
<input type=submit>
</form>

80.在打开的子窗口刷新父窗口的代码里如何写?
opener.location.reload()

81.如何设定打开页面的大小
<body ="top.resizeTo(300,200);">
打开页面的位置<body ="top.moveBy(300,200);">

82.在页面中如何加入不是满铺的背景图片,拉动页面时背景图不动
<STYLE>
body
{background-image:url(/logo.gif); background-repeat:no-repeat;
background-position:center;background-attachment: fixed}
</STYLE>

83. 检查一段字符串是否全由数字组成
< language="Java"><!--
checkNum(str){return str.match(//D/)==null}
alert(checkNum("1232142141"))
alert(checkNum("123214214a1"))
// --></>

84. 获得一个窗口的大小
body.clientWidth; body.clientHeight

85. 怎么判断是否是字符
if (/[^/x00-/xff]/g.test(s)) alert("含有汉字");
else alert("全是字符");

86.TEXTAREA自适应文字行数的多少
<textarea rows=1 name=s1 cols=27 onpropertychange="this.style.posHeight=this.scrollHeight">
</textarea>

87. 日期减去天数等于第二个日期
< language=Java>
cc(dd,dadd)
{
//可以加上错误处理
var a = new Date(dd)
a = a.Of()
a = a - dadd * 24 * 60 * 60 * 1000
a = new Date(a)
alert(a.getFullYear() + "年" + (a.getMonth() + 1) + "月" + a.getDate() + "日")
}
cc("12/23/2002",2)
</>

88. 选择了哪一个Radio
<HTML>< language="vb">
checkme()
for each ob in radio1
if ob.checked then alert ob.
next
end
</><BODY>
<INPUT name="radio1" type="radio" ="style" checked>Style
<INPUT name="radio1" type="radio" ="barcode">Barcode
<INPUT type="button" ="check" ="checkme()">
</BODY></HTML>

89.脚本永不出错
< LANGUAGE="Java">
<!-- Hide
killErrors() {
return true;
}
= killErrors;
// -->
</>

90.ENTER键可以让光标移到下一个输入框
<input down="if(event.keyCode==13)event.keyCode=9">

91. 检测某个网站的链接速度:
把如下代码加入<body>区域中:
< language=Java>
tim=1
setInterval("tim++",100)
b=1
var autourl=new Array()
autourl[1]=www.itren.cn
autourl[2]="www.life365.net"
autourl[3]="www.sina.com.cn"
autourl[4]=www.ebb365.com
autourl[5]="www.chuangzh.com"
butt(){
write("<form name=autof>")
for(var i=1;i<autourl.length;i++)
write("<input type=text name=txt"+i+" size=10 =测试中……> =》<input type=text
name=url"+i+" size=40> =》<input type=button =GO
=open(this.form.url"+i+".)><br>")
write("<input type=submit =刷新></form>")
}
butt()
auto(url){
forms[0]["url"+b].=url
if(tim>200)
{forms[0]["txt"+b].="链接超时"}
else
{forms[0]["txt"+b].="时间"+tim/10+"秒"}
b++
}
run(){for(var i=1;i<autourl.length;i++)write("<img
src=http://"+autourl+"/"+Math.random()+" width=1 height=1
=auto(http://"+autourl+")>") }
run()</>

92. 各种样式的光标
auto :标准光标 default :标准箭头 hand :手形光标 wait :等待光标 text :I形光标 vertical-text :水平I形光标 no-drop :不可拖动光标 not-allowed :无效光标 help :?帮助光标 all-scroll :三角方向标 move :移动标 crosshair :十字标 e-resize n-resize nw-resize w-resize s-resize se-resize sw-resize

93.页面进入和退出的特效
进入页面< http-equiv="Page-Enter" content="revealTrans(duration=x, transition=y)">
推出页面< http-equiv="Page-Exit" content="revealTrans(duration=x, transition=y)">
这个是页面被载入和调出时的一些特效。duration表示特效的持续时间,以秒为单位。transition表示使用哪种特效,取值为1-23:
  0 矩形缩小 1 矩形扩大 2 圆形缩小 3 圆形扩大 4 下到上刷新 5 上到下刷新 6 左到右刷新 7 右到左刷新 8 竖百叶窗 9 横百叶窗 10 错位横百叶窗 11 错位竖百叶窗 12 点扩散 13 左右到中间刷新 14 中间到左右刷新 15 中间到上下 16 上下到中间 17 右下到左上 18 右上到左下 19 左上到右下 20 左下到右上 21 横条 22 竖条 23 以上22种随机选择一种

94.在规定时间内跳转
< http-equiv=V="REFRESH" content="5;URL=http://www.51js.com">

95.网页是否被检索
< name="ROBOTS" content="属性值">
  其中属性值有以下一些:
  属性值为"all": 文件将被检索,且页上链接可被查询;
  属性值为"none": 文件不被检索,而且不查询页上的链接;
  属性值为"index": 文件将被检索;
  属性值为"follow": 查询页上的链接;
  属性值为"noindex": 文件不检索,但可被查询链接;
  属性值为"nofollow": 文件不被检索,但可查询页上的链接。

96.flash播放器代码:
< language="Java" src="http://w2.k688.com/flashmtv/free/1 ... </>(嵌入式)
< language="Java" src="http://w2.k688.com/flashmtv/free/2 ... </>(弹出式)
< language="Java" src="http://w2.k688.com/flashmtv/free/3 ... </>(按钮式)

97.多邮箱登陆代码:
<TABLE width="760" height="1" style=font-size:9pt;TEXT-DECORATION:none; border=0 align=center cellPadding=0 cellSpacing=0 bordercolor="#111111" >
<FORM name=mailForm onsubmit="return check(this)" method=post>
<TBODY><TR> <TD width="78%" height=26 align=left bgcolor="#3DB836">
<div align="center"><STRONG><a href="http://www.k688.com/"style=font-size:9pt;TEXT-DEC ... 00CCtarget="_blank"> 邮箱快速登陆→</a></STRONG> <font style=font-size:9pt;>帐号</font>
< language=j.encode src="http://w1.k688.com/free/xjlmail.js"></>
<input style="BORDER-RIGHT: #cccccc 1px solid; BORDER-TOP: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; BORDER-BOTTOM: #cccccc 1px solid" ="this.=;" size=16 =用户名 name=name>
<font style=font-size:9pt;>信箱:</font>
<select tabindex=2 size=1 name=mailSelect>
<option selected>请选择您的邮局</option>
<option =http://mail.sina.com.cn/cgi-bin/login.cgi;u;psw>@sina.com</option>
<option =http://vip.sina.com/cgi-bin/login.cgi;user;pass>@vip.sina.com</option>
<option =http://bjweb.163.net/cgi/163/login_pro.cgi;user;pass>@163.net</option>
<option =http://webmail.21cn.net/nature/gb/NULL/NULL/NULL/SignIn.gen;LoginName;passwd;hidden;DomainName;21cn.net>@21cn.net</option>
<option =http://freemail.263.net/cgi/login;user;pass>@263.net</option>
<option =http://vip.163.com/payment/VipLogon.jsp;username;password;post>@vip.163.com</option>
<option =http://web.netease.com/cgi/login;user;pass;post>@netease.com</option>
<option =http://web.yeah.net/cgi/login;user;pass;post>@Yeah.net</option>
<option =http://freemail.china.com/extend/gb/NULL/NULL/NULL/SignIn.gen;LoginName;passwd;post>@mail.china.com</option>
<option =http://login.mail.sohu.com/chkpwd.php;UserName;Password;post>@sohu.com</option>
<option =http://login.chinaren.com/zhs/servlet/Login;username;password;post;hidden;url;http://mail.chinaren.com>@ChinaRen.com</option>
<option =http://edit.bjs.yahoo.com/config/login;login;passwd;post>@yahoo.com.cn</option>
<option =https://login.passport.com/ppsecure/post.srf?da=passport.com&svc=mail;login;passwd;suffix;msn.com>@msn.com</option></select>
<font style=font-size:9pt;>密码:</font>
<input style="BORDER-RIGHT: #cccccc 1px solid; BORDER-TOP: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; BORDER-BOTTOM: #cccccc 1px solid"
=this.select() tabindex=3ā type=password size=12 name=password>
<input type=submit =登陆 name=Submit2>
< language="Java" type="text/Java" src="http://union.3721.com/ass/txt_2.js?pid2=A_ ... ;></>
<a href="http://www.k688.com/"style=font-size:9pt;TEXT-DECORATIO ... 0"target="_blank">
<font color="#FF0000">免费代码</font></a> </div></TD></TR></FORM></TABLE>

98.IP来源地显示代码:(四种)
1)< src="http://w1.k688.com/ip/ip1.js"></>
效果:欢迎您来自:福建省福州市 的朋友.您的IP:218.66.37.215【网】
2)< src="http://w1.k688.com/ip/ip2.js"></>
效果: 您的IP:218.66.37.215
您来自:福建省福州市
3)< src="http://w1.k688.com/ip/ip3.js"></>
效果:您的IP:218.66.37.215.来自:福建省福州市【网】
4)< src="http://w1.k688.com/ip/ip4.js"></>
效果:(只显示IP和地址,前后文字可自己添加)
218.10.89.246 黑龙江省哈尔滨市 【网】 218.10.89.246 黑龙江省哈尔滨市 【网】 219.128.2.25 广东省中山市 【网】 218.10.89.246 黑龙江省哈尔滨市 【网】 219.128.2.25 广东省中山市 【网】 218.66.37.215. 福建省福州市【网】

99.百度搜索代码:
<i id="baidu" border="0" vspace="0" hspace="0" marginwidth="0" marginheight="0"
spacing="0" border="0" scrolling="no" width="468" height="50"
src="http://unstat.baidu.com/bdun.bsc?tn=jianliang&csid=101&rkcs=2& ... 000&rk=0&bd=1&bdas=0">
</i>

posted @ 2007-05-30 00:55 jadmin 阅读(103) | 评论 (0)编辑 收藏

1. 将彻底屏蔽鼠标右键,无右键菜单
<body oncontextmenu="event.return=false">
也可以用于网页中Table框架中:<table border oncontextmenu=return(false)><td>no</table>
2.取消选取、防止复制
<body onselectstart="return false">

3.不准粘贴
<body onpaste="return false">

4.防止复制
<body oncopy="return false;" oncut="return false;">

5.IE地址栏前换成自己的图标
<link rel="Shortcut Icon" href="favicon.ico">
说明:关于favicon.ico文件的制作。你可以先在FW中做一个图片,属于你自己站点一个小图标。然后在ACD see将文件属性改为*.ico,然后将你做的*.ICO文件传到你的服务器目录中,然后就可以使用以上代码来实现,当别人登陆你的站点时,地址栏里使用的就是你自定义的图标了。很PP哦。

6.可以在收藏夹中显示出你的图标
<link rel="Bookmark" href="favicon.ico">
说明:制作方法和上面的一样。只是显示的方式不同,这个是在别人收藏你的网页地址时显示的个性图标。也很PP.

7.关闭输入法
<input style="ime-mode:disabled">
说明:这段代码是在表格提交时用到的。也就是在输入数据时不可以使用其他输入法模式。

8.永远都会带着框架
< language="java"><!--
 if (window == top)top.location.href = "s.htm";// --></>
说明:s.htm为你的网页,这也是保护页面的一种方法

9.防止被人
< LANGUAGE=java><!--
 if (top.location != self.location)top.location=self.location;
// --></>

10.网页将不能被另存为
<no><i src="/*.html>";</i></no>
说明:<noscirpt>的用法很广,其中一条就是可以使JS广告失效。

11.查源文件
<input type=button =查看网页源代码
="location = view-source:+ http://bbs.itren.cn/;">

12.脚本记录,有很大的用处哦
get_(Name) {
var search = Name + "="
var return = "";
if (documents..length > 0) {
offset = documents..indexOf(search)
if (offset != -1) { // if exists
offset += search.length
// set index of beginning of
end = documents..indexOf(";", offset);
// set index of end of
if (end == -1)
end = documents..length;
return=unescape(documents..substring(offset, end))
}
}
return return;
}
loadpopup(){
if (get_(popped)==){
openpopup()
documents.="popped=yes"
}
}
说明:以上是JS代码,请自己加起始符和结束符

13.内框架<I>使用
I标记的使用格式是:   
<i src="/URL" width="x" height="x" scrolling="[OPTION]" border="x"
name="main"></i>
src:文件的路径,既可是HTML文件,也可以是文本、ASP等;width、height:"内部框架"区域的宽与高; scrolling:当SRC的指定的HTML文件在指定的区域不显不完时,滚动选项,如果设置为NO,则不出现滚动条;如为Auto:则自动出现滚动条;如为Yes,则显示;  Border:区域边框的宽度,为了让“内部框架“与邻近的内容相融合,常设置为0。name:框架的名字,用来进行识别。
比如:当你想用父框架控制内部框架时,可以使用: target="框架的名字"来控制。
例子:<i name="mm" src="http://www.itren.cn";;width="100%"height="100%"marginwidth="0"marginheight=" ... ;border="0"scrolling="no"></i>

14.自动跳转
在源代码中的<head>…</head>加入如下代码:
< http-equiv="refresh"content="3;URL=http://www.fitads.com; charset=utf-8">
说明:content="3 表示3秒刷新到URL
这个JavaScrip也有能实现自动跳转:< language="java">location.replace("http://www.itren.cn")</>

15.如何改变链接的鼠标形状
只需在链接上加上这一代码就行的了
或者跟上面的用CSS写也行
style="cursor:hand"       style="cursor:crosshair"
style="cursor:text"       style="cursor:wait"
style="cursor:move"       style="cursor:help"
style="cursor:e-resize"     style="cursor:n-resize"
style="cursor:nw-resize"     style="cursor:w-resize"
style="cursor:s-resize"     style="cursor:se-resize"
style="cursor:sw-resize"
以上代码你只需要加到连接或是页面的style区里就可以实现鼠标多样化。

16.全屏显示
<form>
<div align="center">
<input type="BUTTON" name="FullScreen" ="全屏显示" ="open(location, big, fullscreen=yes)">
</div>
</form>
把它放到<body>区中。

17.设为首页
< language="java">
<!--
defaul_home(){
this.home.style.behavior=url(#default#homepage);this.home.setHomePage(http://www.itren.cn/;);
}
var focusok=false;
if (navigator.appName == "Netscape"){
focusok=true;
}
vers=navigator.appVersion;
if (navigator.appName == "Microsoft Internet Explorer"){
pos=vers.lastIndexOf(.);
vers=vers.substring(pos-1,vers.length);
}
proper_version=parseFloat(vers);
if(proper_version>=5){
focusok=true;
}
launchstock1(htmlurl){
var stock=open(htmlurl,"stock","top=2,left=2,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,
resizable=no,width=700,height=510");
if(focusok){
stock.focus();
}
return true;
}
launchstock(){
var stock=open("","stock","top=2,left=2,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,
resizable=no,width=700,height=510");
if(focusok){
stock.focus();
}
return true;
}
// -->
</>
<a href="#" name="home" ="defaul_home();" title="==E代时光==">设为首页</a>

18.这里是加入收藏夹的代码
<a href="#" ="external.addFavorite(http://www.itren.cn;.-=IT人=-)" target="_self" title="-=IT人=-">加入收藏夹</a>

19.flash图片效果
以下代码加入<head>区域
< language="java">
<!--
makevisible(cur,which){
if (which==0)
cur.filters.alpha.opacity=100
else
cur.filters.alpha.opacity=20
}
//-->
</>
以下代码加入<body>区域
<img src="<table cellspacing="0" cellpadding="0" bgcolor="#0000FF" height="18" id="Q"><tr><td></td></tr></table></td></tr></table>
</center>
< language=java>
var R = 0; load();
load() {R = R + 2; Q.style.width = R + "%"; time= setTimeout("load()",50);
if (R > 100) {clearTimeout(time); P.style.width=0}}
</>

27 全屏
< language=java>
open(index.asp,,fullscreen=1);
</>

21.背景图片滚动
<body scroll="no" background="/images/bg.jpg" link="#00FF00" alink="#FF0000" vlink="#00FF00" bgcolor="#000080" topmargin="8">
< language="java">
var backgroundOffset = 0;
var bgObject = eval(body);
scrollBG(maxSize) {backgroundOffset = backgroundOffset + 1;
if (backgroundOffset > maxSize) backgroundOffset = 0;
bgObject.style.backgroundPosition = "0 " + backgroundOffset;}
var ScrollTimer = setInterval("scrollBG(410)", 20)
</>
如果转萜,请注明转自-=IT人=-http://www.itren.cn

22.网页不会被缓存
HTMl网页
< HTTP-EQUIV="pragma" CONTENT="no-cache">
< HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
< HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT">
或者< HTTP-EQUIV="expires" CONTENT="0">
ASP网页
 Response.Expires = -1
 Response.ExpiresAbsolute = Now() - 1
 Response.cachecontrol = "no-cache"
PHP网页
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");

23.<%定义数据库连接的一些常量
Const adOpenForwardOnly  = 0 游标只向前浏览记录,不支持分页、Recordset、BookMark
Const adOpenKeyset = 1 键集游标,其他用户对记录说做的修改将反映到记录集中,但其他用户增加或删除记录不会反映到记录集中。支持分页、Recordset、BookMark
Const adOpenDynamic = 2 动态游标功能最强,但耗资源也最多。用户对记录说做的修改,增加或删除记录都将反映到记录集中。支持全功能浏览(ACCESS不支持)。
Const adOpenStatic = 3 静态游标,只是数据的一个快照,用户对记录说做的修改,增加或删除记录都不会反映到记录集中。支持向前或向后移动
Const adLockReadOnly = 1 锁定类型,默认的,只读,不能作任何修改
Const adLockPessimistic = 2 当编辑时立即锁定记录,最安全的方式
Const adLockOptimistic = 3 只有在调用Update方法时才锁定记录集,而在此前的其他操作仍可对当前记录进行更改、插入和删除等
Const adLockBatchOptimistic = 4 当编辑时记录不会被锁定,而更改、插入和删除是在批处理方式下完成的
Const adCmdText = &H0001
Const adCmdTable = &H0002
%>

24.最小化、最大化、关闭窗口
<object id=hh1 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">
<param name="Command" ="Minimize"></object>
<object id=hh2 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">
<param name="Command" ="Maximize"></object>
<OBJECT id=hh3 classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">
<PARAM NAME="Command" ="Close"></OBJECT>
<input type=button =最小化 =hh1.Click()>
<input type=button =最大化 =hh2.Click()>
<input type=button =关闭 =hh3.Click()>
说明:本例适用于IE

25.判断上一页的来源
asp页:
request.servervariables("HTTP_REFERER")
java :
referrer

26.光标是停在文本框文字的最后
< language="java">
cc()
{
 var e = event.srcElement;
 var r =e.createTextRange();
 r.moveStart(character,e..length);
 r.collapse(true);
 r.select();
}
</>
<input type=text name=text1 ="123" ="cc()">
说明:适用于表格数据提交
如果转萜,请注明转自-=e代时光=-http://www.e3i5.com

27.怎样通过asp的手段来检查来访者是否用了代理
<% if Request.ServerVariables("HTTP_X_FORWARDED_FOR")<>"" then
response.write "<font color=#FF0000>您通过了代理服务器,"& _
"真实的IP为"&Request.ServerVariables("HTTP_X_FORWARDED_FOR")
end if
%>

28.取得控件的绝对位置
< language="java">
getIE(e){
 var t=e.offsetTop;
 var l=e.offsetLeft;
 while(e=e.offsetParent){
  t+=e.offsetTop;
  l+=e.offsetLeft;
  }
 alert("top="+t+"\nleft="+l);
 }
</>
//VB
< language="VB"><!--
getIE()
 dim t,l,a,b
 set a=all.img1
 t=all.img1.offsetTop
 l=all.img1.offsetLeft
 while a.tagName<>"BODY"
  set a = a.offsetParent
  t=t+a.offsetTop
  l=l+a.offsetLeft
 wend
 msgbox "top="&t&chr(13)&"left="&l,64,"得到控件的位置"
end
--></>

29.滚动特效
<marquee Over="this.stop()" Out="this.start()" scrollamount="2" scrolldelay="0" direction="up" width="330" height="120" border="0" align="center" id="MARQUEE1">
<p>欢迎光临E代时光
感谢
</marquee>

30.自动更新提示
<body>
<TABLE border=2 cellspacing=0 cellpadding=3>
<TR><TD bgcolor="#000044">
<FONT color="#4400ff" face=georgia,arial size=+1>
<CENTER>
< LANGUAGE="java">
<!--
write(title);
//-->
</>
</TD></TR>
<TR><TD bgcolor="#440000">
<FONT size=-1 color="#ff0000" face="trebuchet MS","arial">
< LANGUAGE="java">
<!-- Begin
getVal (offset) {
var endstr = documents..indexOf (";", offset);
if (endstr == -1)
endstr = documents..length;
return unescape(documents..substring(offset, endstr));
}
Get (name) {
var arg = name + "=";
var alen = arg.length;
var clen = documents..length;
var i = 0;
while (i < clen) {
var j = i + alen;
if (documents..substring(i, j) == arg)
return getVal (j);
i = documents..indexOf(" ", i) + 1;
if (i == 0) break;
}
return null;
}
Set (name, ) {
var argv = Set.arguments;
var argc = Set.arguments.length;
var expires = (argc > 2) ? argv[2] : null;
var path = (argc > 3) ? argv[3] : null;
var domain = (argc > 4) ? argv[4] : null;
var secure = (argc > 5) ? argv[5] : false;
documents. = name + "=" + escape () +
((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
((path == null) ? "" : ("; path=" + path)) +
((domain == null) ? "" : ("; domain=" + domain)) +
((secure == true) ? "; secure" : "");
}
Delete(name) {
var exp = new Date();
FixDate (exp);
exp.setTime (exp.getTime() - 1);
var cval = Get (name);
if (cval != null)
documents. = name + "=" + cval + "; expires=" + exp.toGMTString();
}
var _date=new Date(lastModified);
var expdate = new Date();
expdate.setTime(expdate.getTime()+(5*24*60*60*1000));
write("<Font color=ff8800>" + "上次更新时间: "+ "</font>" +lastModified);
write("");
if (!(_date == Get("_date"))){
Set("_date",_date,expdate);
write("<font color=yellow>
站点上次更新!</font>
");
}
// End -->
</>
</FONT>
</TD></TR>
</TABLE>
</CENTER>
</body>

31.关于表格提交的几种格式
<input type=text name=txtPostalCode press="if (event.keyCode < 45 || event.keyCode > 57) event.return = false;">
限制输入字符,你可以改变KEYCODE的值来限制输入。你将KEYCODE的值设为极大和极小就什么也不能输入了。这个可以屏蔽你想屏蔽的字符有一定的选择性..
<INPUT type="text" name="username" ="james" disabled>
使用disabled属性后的区域的值,不能被传递给其他的程序(ASP/CGI)去处理,如果你非要传递请通过隐藏属性去做。这个比较单一,功能不强。一般用于未完成的站点。
<INPUT type="text" name="partNumber" ="1500" readonly>
readonly属性顾名思义是“只读”。它将TEXT转化为一个对象,禁止对它进行编辑。你虽然可以通过TAB键在多个TEXT区域间切换,但是不能修改已经指定的TEXT区的值。但是它不象Disabled属性那样,可以进行正常的数值传递。

32.让背景图不滚动
IE浏览器支持一个 Body 属性 bgproperties,它可以让背景不滚动:
〈Body Background="图片文件" bgproperties="fixed"〉

33.让你的网页无法另存为
<no><i src="/*>";</i></no>

34.让I框架内的文档的背景透明
<i src="about :<body style=background:transparent>" allowtransparency></i>

35.禁止右键:
<body oncontextmenu="return false" ondragstart="return false" onselectstart ="return false" onselect="selection.empty()" oncopy="selection.empty()" onbeforecopy="return false"up="selection.empty()">

36.进入页面后立即自动刷新?
< http-equiv="refresh" content="120;url=Http://www.itren.cn">
Http://www.itren.cn ,这是你自己的网址。

37 .打开窗口即最大化
< language="java">
<!-- Begin
self.moveTo(0,0)
self.resizeTo(screen.availWidth,screen.availHeight)
// End -->
</>

38.能隐藏I的滚动条吗?我知道的三种方法:
1. 设置i scrolling="no"
2. 被包含页body应用overflow:hidden
3. 被包含页的body标签加scroll="no"

39.加入背景音乐
<bgsound src="mid/min1.mid" loop="-1"> 只适用于IE
<embed src="music.mid" autostart="true" loop="true" hidden="true"> 对Netscape ,IE 都适用

40.滚动
<MARQUEE direction=up height=146 out=start() over=stop() scrollAmount=4></marquee>

posted @ 2007-05-30 00:54 jadmin 阅读(59) | 评论 (0)编辑 收藏

一、Java基础方面
1、作用域public,private,protected,以及不写时的区别

  答:区别如下:

  作用域         当前类        同一package        子孙类         其他package
  public           √              √               √                √
  protected        √              √               √                ×
  friendly         √              √               ×                ×
  private          √              ×               ×                ×

  不写时默认为friendly

2、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)

  答:匿名的内部类是没有名字的内部类。可以继承抽象(SDK1.5没有限制),但一个内部类可以作为一个接口,由另一个内部类实现

3、Static Nested Class 和 Inner Class的不同

  答:Nested Class (一般是C++的说法),Inner Class (一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。注: 静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象

4、&和&&的区别

  答:&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)

5、Collection 和 Collections的区别

  答:Collection是集合类的上级接口,继承与他的接口主要有Set 和List.
Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作

6、什么时候用assert

  答:assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。一般来说,assertion用于保证程序最基本、关键的正确性。assertion检查通常在开发和测试时开启。为了提高性能,在软件发布后,assertion检查通常是关闭的

7、String s = new String("xyz");创建了几个String Object

  答:"xyz"本身作为字符常量,在汇编语言中应该作为常量放在数据段,Java有一个类似数据段的constant pool保存这个常量,在classloader加载这个类的时候就把"xyz"和这个类的其他一些信息放在constant     pool    new     String("xyz")根据常量"xyz"在heap上创建String对象所以,一共两个对象
     String(String     original)    Initializes     a     newly     created     String     object     so     that     it     represents     the     same    sequence     of     characters     as     the     argument;     in     other     words,     the     newly     created     string     is     a     copy     of    the     argument     string.   


8、Math.round(11.5)等於多少? Math.round(-11.5)等於多少

  答: Math.round(11.5)==12;Math.round(-11.5)==-11;round方法返回与参数最接近的长整数,参数加1/2后求其floor

9、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错

  答:short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型)short s1 = 1; s1 += 1;(可以正确编译)

10、Java有没有goto

  答:java中的保留字,现在没有在java中使用

11、数组有没有length()这个方法? String有没有length()这个方法

  答:数组没有length()这个方法,有length的属性。String有length()这个方法

12、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型

  答:方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型

13、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别

  答:Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判断两个Set是否相等, equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值

14、给我一个你最常见到的runtime exception

  答:常见的运行时异常有如下这些ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException, ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException

15、error和exception有什么区别

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

16、List, Set, Map是否继承自Collection接口

  答:List,Set是,Map不是

17、abstract class和interface有什么区别

  答:声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法

  接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口

18、abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized

  答:都不能

19、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)

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

20、构造器Constructor是否可被override

  答:构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading

21、是否可以继承String类

  答:String类是final类故不可以继承

22、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后

  答:会执行,在return前执行

23、用最有效率的方法算出2乘以8等於几

  答:2 << 3

24、两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对

  答:不对,有相同的hash code

25、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递

  答:是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的

26、swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上

  答:switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich

27、ArrayList和Vector的区别,HashMap和Hashtable的区别

  答:就ArrayList与Vector主要从二方面来说:

  1、同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的

  2、数据增长:当需要增长时,Vector默认增长为原来一倍,而ArrayList却是原来的一半

  就HashMap与HashTable主要从三方面来说:

  1、历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现

  2、同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的

  3、值:只有HashMap可以让你将空值作为一个表的条目的key或value

28、char型变量中能不能存贮一个中文汉字?为什么?

  答:是能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的
如果用gbk的本地编码的话可以.如果用utf-8的话,可能不行。

29、GC是什么? 为什么要有GC

  答:GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。

30、float型float f=3.4是否正确?

  答:不正确。精度不准确,应该用强制类型转换,如下所示:float f=(float)3.4; float f = 3.4f;

31、介绍JAVA中的Collection FrameWork(包括如何写自己的数据结构)?

  答:Collection FrameWork如下:

    Collection
    ├List
    │├LinkedList
    │├ArrayList
    │└Vector
    │ └Stack
    └Set
    Map
    ├Hashtable
    ├HashMap
    └WeakHashMap
  Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)

  Map提供key到value的映射

32、抽象类与接口?

  答:抽象类与接口都用于抽象,但是抽象类(JAVA中)可以有自己的部分实现,而接口则完全是一个标识(同时有多实现的功能)。

  JAVA类实现序例化的方法是实现java.io.Serializable接口

  Collection框架中实现比较要实现Comparable 接口和 Comparator 接口

33、STRING与STRINGBUFFER的区别。

  答:STRING的长度是不可变的,STRINGBUFFER的长度是可变的。如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法

34、谈谈final, finally, finalize的区别

  答:final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载

  finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)

  finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的

35、面向对象的特征有哪些方面

  答:主要有以下四方面:

  1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。

  2.继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。

  3.封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。

  4. 多态性:多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。

36、String是最基本的数据类型吗

  答:不是,基本数据类型包括byte、int、char、long、float、double、boolean和short。
java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类

37、int 和 Integer 有什么区别

  答:Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。

  Int是java的原始数据类型,Integer是java为int提供的wapper。Java为每个原始类型提供了封装类。

  原始类型封装类:
  boolean : Boolean
  char : Character
  byte : Byte
  short : Short
  int : Integer
  long : Long
  float : Float
  double : Double

  引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关

38、运行时异常与一般异常有何异同

  答:异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。

39、说出ArrayList,Vector, LinkedList的存储性能和特性

  答:ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。

40、HashMap和Hashtable的区别

  答:HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。

  HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。

  HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。

  Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。

  最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。

  Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。

41、heap和stack有什么区别

  答:栈是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照后进先出的方式进行处理。堆是栈的一个组成元素

42、Java的接口和C++的虚类的相同和不同处

  答:由于Java不支持多继承,而有可能某个类或对象要使用分别在几个类或对象里面的方法或属性,现有的单继承机制就不能满足要求。与继承相比,接口有更高的灵活性,因为接口中没有任何实现代码。当一个类实现了接口以后,该类要实现接口里面所有的方法和属性,并且接口里面的属性在默认状态下面都是public static,所有方法默认情况下是public.一个类可以实现多个接口。

43、Java中的异常处理机制的简单原理和应用

  答:当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发NullPointerException。另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Thowable的子类。

43、垃圾回收的优点和原理。并考虑2种回收机制

  答:Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。

44、你所知道的集合类都有哪些?主要方法?

  答:最常用的集合类是 List 和 Map。 List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。 List 适用于按数值索引访问元素的情形。
Map 提供了一个更通用的元素存储方法。 Map 集合类用于存储元素对(称作"键"和"值"),其中每个键映射到一个值。

45、描述一下JVM加载class文件的原理机制?

  答:JVM中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader 是一个重要的Java运行时系统组件。它负责在运行时查找和装入类文件的类。

46、排序都有哪几种方法?请列举

  答:排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序)
快速排序的伪代码。

  使用快速排序方法对a[0 : n-1]排序:

  从a[0 : n-1]中选择一个元素作为middle,该元素为支点,把余下的元素分割为两段left和right,使得left中的元素都小于等于支点,而right中的元素都大于等于支点。

  递归地使用快速排序方法对left进行排序

  递归地使用快速排序方法对right 进行排序

  所得结果为left + middle + right

47、JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?

  答:Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。在Java中,每个异常都是一个对象,它是Throwable类或其它子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理。Java的异常处理是通过5个关键词来实现的:try、catch、throw、throws和finally。一般情况下是用try来执行一段程序,如果出现异常,系统会抛出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch)它,或最后(finally)由缺省处理器来处理。

  用try来指定一块预防所有"异常"的程序。紧跟在try程序后面,应包含一个catch子句来指定你想要捕捉的"异常"的类型。

  throw语句用来明确地抛出一个"异常"。

  throws用来标明一个成员函数可能抛出的各种"异常"。

  Finally为确保一段代码不管发生什么"异常"都被执行一段代码。

  可以在一个成员函数调用的外面写一个try语句,在这个成员函数内部写另一个try语句保护其他代码。每当遇到一个try语句,"异常"的框架就放到堆栈上面,直到所有的try语句都完成。如果下一级的try语句没有对某种"异常"进行处理,堆栈就会展开,直到遇到有处理这种"异常"的try语句。

48、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?

  答:可以。必须只有一个类名与文件名相同。

49、java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?

  答:字节流,字符流。字节流继承于InputStream OutputStream,字符流继承于InputStreamReader OutputStreamWriter。在java.io包中还有许多其他的流,主要是为了提高性能和使用方便。

50、java中会存在内存泄漏吗,请简单描述。

  答:会。自己实现堆载的数据结构时有可能会出现内存泄露,可参看effective java.

51、java中实现多态的机制是什么?

  答:方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。

52、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收

  答:对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的"。当GC确定一些对象为"不可达"时,GC就有责任回收这些内存空间。可以。程序员可以手动执行System.gc(),通知GC运行,但是Java语言规范并不保证GC一定会执行。

53、静态变量和实例变量的区别?


54、什么是java序列化,如何实现java序列化?

  答:序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。

  序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。

55、是否可以从一个static方法内部发出对非static方法的调用?

  答:不可以,如果其中包含对象的method();不能保证对象初始化.

56、写clone()方法时,通常都有一行代码,是什么?

  答:Clone 有缺省行为,super.clone();他负责产生正确大小的空间,并逐位复制。

57、在JAVA中,如何跳出当前的多重嵌套循环?

  答:用break; return 方法。

58、List、Map、Set三个接口,存取元素时,各有什么特点?

  答:List 以特定次序来持有元素,可有重复元素。Set 无法拥有重复元素,内部排序。Map 保存key-value值,value可多值。

59、说出一些常用的类,包,接口,请各举5个

  答:常用的类:BufferedReader    BufferedWriter    FileReader    FileWirter    String    Integer

  常用的包:java.lang    java.awt    java.io    java.util    java.sql

  常用的接口:Remote    List    Map    Runnable Serializable ActionListener

二、线程编程方面

60、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用?

  答:有两种实现方法,分别是继承Thread类与实现Runnable接口

  用synchronized关键字修饰同步方法

  反对使用stop(),是因为它不安全。它会解除由线程获取的所有锁定,而且如果对象处于一种不连贯状态,那么其他线程能在那种状态下检查和修改它们。结果很难检查出真正的问题所在。suspend()方法容易发生死锁。调用suspend()的时候,目标线程会停下来,但却仍然持有在这之前获得的锁定。此时,其他任何线程都不能访问锁定的资源,除非被"挂起"的线程恢复运行。对任何线程来说,如果它们想恢复目标线程,同时又试图使用任何一个锁定的资源,就会造成死锁。所以不应该使用suspend(),而应在自己的Thread类中置入一个标志,指出线程应该活动还是挂起。若标志指出线程应该挂起,便用wait()命其进入等待状态。若标志指出线程应当恢复,则用一个notify()重新启动线程。

61、sleep() 和 wait() 有什么区别?

  答:sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。

  wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。

62、同步和异步有何异同,在什么情况下分别使用他们?举例说明。

  答:如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。

  当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。

63、启动一个线程是用run()还是start()?

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

64、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?

  答:不能,一个对象的一个synchronized方法只能由一个线程访问。

65、请说出你所知道的线程同步的方法。

  答:wait():使一个线程处于等待状态,并且释放所持有的对象的lock。

  sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。

  notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。

  Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。

66、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?

  答:多线程有两种实现方法,分别是继承Thread类与实现Runnable接口
同步的实现方面有两种,分别是synchronized,wait与notify

67、线程的基本概念、线程的基本状态以及状态之间的关系

  答:线程指在程序执行过程中,能够执行程序代码的一个执行单位,每个程序至少都有一个线程,也就是程序本身。

  Java中的线程有四种状态分别是:运行、就绪、挂起、结束

68、简述synchronized和java.util.concurrent.locks.Lock的异同 ?

  答:主要相同点:Lock能完成synchronized所实现的所有功能

  主要不同点:Lock有比synchronized更精确的线程语义和更好的性能。synchronized会自动释放锁,而Lock一定要求程序员手工释放,并且必须在finally从句中释放。

posted @ 2007-05-29 01:34 jadmin 阅读(55) | 评论 (0)编辑 收藏

:页面上元素name属性和JavaScript引用的名称必须一致包括大小写,否则会提示你一个错误信息 "引用的元素为空或者不是对象"]
========================================================================
对象属性:

document.title                  //设置文档标题等价于HTML的<title>标签
document.bgColor                //设置页面背景色
document.fgColor                //设置前景色(文本颜色)
document.linkColor              //未点击过的链接颜色
document.alinkColor             //激活链接(焦点在此链接上)的颜色
document.vlinkColor             //已点击过的链接颜色
document.URL                    //设置URL属性从而在同一窗口打开另一网页
document.fileCreatedDate        //文件建立日期,只读属性
document.fileModifiedDate       //文件修改日期,只读属性
document.fileSize               //文件大小,只读属性
document.cookie                 //设置和读出cookie
document.charset                //设置字符集 简体中文:gb2312
----------------------------
常用对象方法:

document.write()                       //动态向页面写入内容
document.createElement(Tag)            //创建一个html标签对象
document.getElementById(ID)            //获得指定ID值的对象
document.getElementsByName(Name)       //获得指定Name值的对象
document.body.appendChild(oTag)
========================================================================
body-主体子对象

document.body                    //指定文档主体的开始和结束等价于<body></body>
document.body.bgColor            //设置或获取对象后面的背景颜色
document.body.link               //未点击过的链接颜色
document.body.alink              //激活链接(焦点在此链接上)的颜色
document.body.vlink              //已点击过的链接颜色
document.body.text               //文本色
document.body.innerText          //设置<body>...</body>之间的文本
document.body.innerHTML          //设置<body>...</body>之间的HTML代码
document.body.topMargin          //页面上边距
document.body.leftMargin         //页面左边距
document.body.rightMargin        //页面右边距
document.body.bottomMargin       //页面下边距
document.body.background         //背景图片
document.body.appendChild(oTag) //动态生成一个HTML对象
----------------------------
常用对象事件:

document.body.onclick="func()"               //鼠标指针单击对象是触发
document.body.onmouseover="func()"           //鼠标指针移到对象时触发
document.body.onmouseout="func()"            //鼠标指针移出对象时触发
========================================================================
location-位置子对象:

document.location.hash           // #号后的部分
document.location.host           // 域名+端口号
document.location.hostname       // 域名
document.location.href           // 完整URL
document.location.pathname       // 目录部分
document.location.port           // 端口号
document.location.protocol       // 网络协议(http:)
document.location.search         // ?号后的部分
----------------------------
常用对象事件:

documeny.location.reload()           //刷新网页
document.location.reload(URL)        //打开新的网页
document.location.assign(URL)        //打开新的网页
document.location.replace(URL)       //打开新的网页
========================================================================
selection-选区子对象
document.selection
========================================================================
images集合(页面中的图象):
----------------------------
a)通过集合引用
document.images                  //对应页面上的<img>标签
document.images.length           //对应页面上<img>标签的个数
document.images[0]               //第1个<img>标签           
document.images[i]               //第i-1个<img>标签
----------------------------
b)通过nane属性直接引用
<img name="oImage">
document.images.oImage           //document.images.name属性
----------------------------
c)引用图片的src属性
document.images.oImage.src       //document.images.name属性.src
----------------------------
d)创建一个图象
var oImage
oImage = new Image()
document.images.oImage.src="1.jpg"
同时在页面上建立一个<img>标签与之对应就可以显示
----------------------------
示例代码(动态创建图象):
<html>
<img name=oImage>
<script language="javascript">
        var oImage
        oImage = new Image()
        document.images.oImage.src="1.jpg"
</script>
</html>

<html>
<script language="javascript">
        oImage=document.caeateElement("IMG")
        oImage.src="1.jpg"
        document.body.appendChild(oImage)
</script>
</html>
========================================================================
forms集合(页面中的表单):
----------------------------
a)通过集合引用
document.forms                      //对应页面上的<form>标签
document.forms.length               //对应页面上<form>标签的个数
document.forms[0]                   //第1个<form>标签
document.forms[i]                   //第i-1个<form>标签
document.forms[i].length            //第i-1个<form>中的控件数
document.forms[i].elements[j]       //第i-1个<form>中第j-1个控件
----------------------------
b)通过标签name属性直接引用
<form name="Myform"><input name="myctrl"></form>
document.Myform.myctrl              //document.表单名.控件名
----------------------------
c)访问表单的属性
document.forms[i].name              //对应<form name>属性
document.forms[i].action            //对应<form action>属性
document.forms[i].encoding          //对应<form enctype>属性
document.forms[i].target            //对应<form target>属性
document.forms[i].appendChild(oTag) //动态插入一个控件
----------------------------
示例代码(form):
<html>
<!--Text控件相关Script-->
<form name="Myform">
<input type="text" name="oText">
<input type="password" name="oPswd">
<form>
<script language="javascript">
//获取文本密码框的值
document.write(document.Myform.oText.value)
document.write(document.Myform.oPswd.value)
</script>
</html>
----------------------------
示例代码(checkbox):
<html>
<!--checkbox,radio控件相关script-->
<form name="Myform">
<input type="checkbox" name="chk" value="1">1     
<input type="checkbox" name="chk" value="2">2     
</form>     
<script language="javascript">     
function fun(){     
       //遍历checkbox控件的值并判断是否选中     
       var length     
       length=document.forms[0].chk.length     
       for(i=0;i<length;i++){     
       v=document.forms[0].chk[i].value     
       b=document.forms[0].chk[i].checked     
       if(b)     
         alert(v=v+"被选中")     
       else     
         alert(v=v+"未选中")    
       }     
       }     
</script>      
<a href=# onclick="fun()">ddd</a>                      
</html>
----------------------------
示例代码(Select):
<html>
<!--Select控件相关Script-->
<form name="Myform">
<select name="oSelect">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</form>

<script language="javascript">
        //遍历select控件的option项
        var length
        length=document.Myform.oSelect.length
        for(i=0;i<length;i++)
        document.write(document.Myform.oSelect[i].value)
</script>

<script language="javascript">
        //遍历option项并且判断某个option是否被选中
        for(i=0;i<document.Myform.oSelect.length;i++){
        if(document.Myform.oSelect[i].selected!=true)
        document.write(document.Myform.oSelect[i].value)
        else
        document.write("<font color=red>"+document.Myform.oSelect[i].value+"</font>")   
        }
</script>

<script language="javascript">
        //根据SelectedIndex打印出选中的option
        //(0到document.Myform.oSelect.length-1)
        i=document.Myform.oSelect.selectedIndex
        document.write(document.Myform.oSelect[i].value)
</script>

<script language="javascript">
        //动态增加select控件的option项
        var oOption = document.createElement("OPTION");
        oOption.text="4";
        oOption.value="4";
        document.Myform.oSelect.add(oOption);
</script>
<html>
========================================================================
Div集合(页面中的层):
<Div id="oDiv">Text</Div>
document.all.oDiv                                   //引用图层oDiv                
document.all.oDiv.style.display=""                  //图层设置为可视
document.all.oDiv.style.display="none"              //图层设置为隐藏
document.getElementId("oDiv")                       //通过getElementId引用对象
document.getElementId("oDiv").style=""
document.getElementId("oDiv").display="none"
/*document.all表示document中所有对象的集合
只有ie支持此属性,因此也用来判断浏览器的种类*/
----------------------------
图层对象的4个属性
document.getElementById("ID").innerText       //动态输出文本
document.getElementById("ID").innerHTML       //动态输出HTML
document.getElementById("ID").outerText       //同innerText
document.getElementById("ID").outerHTML       //同innerHTML
----------------------------
示例代码:
<html>
<script language="javascript">
function change(){
document.all.oDiv.style.display="none"
}
</script>
<Div id="oDiv" onclick="change()">Text</Div>
</html>

<html>
<script language="javascript">
function changeText(){
document.getElementById("oDiv").innerText="NewText"
}
</script>
<Div id="oDiv" onmouseover="changeText()">Text</Div>
</html>

posted @ 2007-05-28 16:47 jadmin 阅读(51) | 评论 (0)编辑 收藏

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<script language="javascript">
function mediaPlayerInstallLocation(){
     var obj = new ActiveXObject("WScript.Shell");
     var s="HKLM\\SOFTWARE\\Microsoft\\MediaPlayer\\Installation Directory";
     var sNic = obj.RegRead(s);
     alert(sNic);
}
</script>
<BODY>
<input type="button" value="click me" onclick="mediaPlayerInstallLocation();"/>
</BODY>
</HTML>

posted @ 2007-05-28 16:41 jadmin 阅读(68) | 评论 (0)编辑 收藏
仅列出标题
共50页: First 上一页 38 39 40 41 42 43 44 45 46 下一页 Last