??xml version="1.0" encoding="utf-8" standalone="yes"?>狠狠综合久久综合88亚洲,亚洲一区二区三区在线播放,亚洲人成无码久久电影网站 http://www.tkk7.com/xxxzheng/archive/2005/11/30/22007.htmlSteve Steve Wed, 30 Nov 2005 09:08:00 GMT http://www.tkk7.com/xxxzheng/archive/2005/11/30/22007.html http://www.tkk7.com/xxxzheng/comments/22007.html http://www.tkk7.com/xxxzheng/archive/2005/11/30/22007.html#Feedback 0 http://www.tkk7.com/xxxzheng/comments/commentRss/22007.html http://www.tkk7.com/xxxzheng/services/trackbacks/22007.html 阅读全文 ]]> 问题集锦QServlets/JSP开发技术问{?/title> http://www.tkk7.com/xxxzheng/archive/2005/11/30/21997.htmlSteve Steve Wed, 30 Nov 2005 08:56:00 GMT http://www.tkk7.com/xxxzheng/archive/2005/11/30/21997.html http://www.tkk7.com/xxxzheng/comments/21997.html http://www.tkk7.com/xxxzheng/archive/2005/11/30/21997.html#Feedback 0 http://www.tkk7.com/xxxzheng/comments/commentRss/21997.html http://www.tkk7.com/xxxzheng/services/trackbacks/21997.html Z么GenericServlet在init(ServletConfig config)基础上增加了一个init()ҎQ?/B> init()Ҏ被GenericServlet.init(ServletConfig config)Ҏ调用?BR> init()Ҏ方便了开发h员定制Servlet的初始化Q而无dl护ServletConfig对象的存储工作?BR> 重写GenericServlet.init(ServletConfig config)必须要显C的调用super.init(config)Ҏ?BR> ServletContext.getContect(java.lang.String uripath)的作用是什么? q回同一Server中指定的path对应的ServletContext对象,通过该对象可以实CServer中的其他Context打交道?BR> uripath必须是以"/"开始(该\径的含义是相对于整个Servlet文档的根路径Q而不是当前ServletContext的根路径Q?BR> Servlet生命周期是什么? 一般的Servlet(GenericServlet,即与协议无关的Servlet)的生命周期:init() --> GenericServlet.service(ServletRequest req, ServletResponse res) --> destroy. HttpServlet的生命周? init() --> GenericServlet.service(ServletRequest req, ServletResponse res)---> service(HttpServletRequest req, HttpServletResponse resp) --> doXXXX()-->destroy. 有没有必要重写GenericServlet.service()ҎQ?/B> 对于HttpServlet来说没有必要。只需要重写它的doXXXX()Ҏ可以了。HttpServlet中service()Ҏ会自动的Ҏ用户hcd把请求{发给相应的doXXXX()ҎQ例如doGet()ҎQ?BR> ServletRequest.getReader()和ServletRequest.getInputStream()如何使用Q?BR> 注意两个Ҏ不能同时使用?BR> ServletRequest.getRealPath(String path)Ҏ已经不推荐用?BR> 请用ServletContext.getRealPath(String path)Ҏ?BR> ServletResponse~省的字W集(charset)是什? ServletResponse~省的字W集(charset)是ISO-8859-1,可以通过setContentType(java.lang.String)Ҏ改变新的字符集?BR> 例如QsetContentType("text/html; charset=Shift_JIS"). 关于字符集信息,可以览RFC 2045 HttpServletRequest.getRequestURI()和HttpServletRequest.getRequestURL()区别是什? request.getRequestURI() q回值类|/xuejava/requestdemo.jsp request.getRequestURL() q回值类|http://localhost:8080/xuejava/requestdemo.jsp HttpServletRequest.encodeURL()和HttpServletRequest.encodeRedirectURL(()区别是什?Z么要有两个不同的Ҏ呢? 当用URL-rewriting方式来管理Session的时候,需要用C上的两个Ҏ?BR> 两个Ҏ的不同点是:两个Ҏ定是否需要包含session ID的逻辑不同?BR> 在调用HttpServletResponse.sendRedirect前,应该先调用encodeRedirectURL()ҎQ否则可能会丢失Sesssion信息?... 如何使你的Servlet或者JSP实现Single Thread Model? 对于Servlet实现javax.single.SingleThreadModel接口?BR> 对于JSP,在Page Directive中写如下的语?lt;%@ page isThreadSafe="false" %> JSP Tag ?JSP XML-based Tag ... 如何把某一个JSP Page定义成ؓError Page?Z么要q样做? 实现ҎQ?<%@ page isErrorPage="true" %> Z么? 因ؓ需要获取Exception 对象Q缺省情况下Q在JSP Page中是不能直接使用“隐含对象?exception的)?BR> JSP Page的执行顺序是如何的? JSP Page的执行顺序如下: JSP Page Translation. JSP Page --> Servlet source code. JSP Page Compilation. Servlet source code --> Servlet class. Load Class(First time or the server restarted) Create instance(可能会很多次Q如果JSP Page中声明了<%@ page isThreadSafe="false" %>) Call jspInit methodQ一般的JSP Page都没有重写这个方法,重写需要在声明语句D中Q?BR> Call _jspService methodQ类g一般HttpServlet的doGet和doPostҎQ但是可以同时用来处理Post和GetqhQ?BR> Call jspDestroy methodQServer在卸载Servet的时候,例如当Servlet很久没有使用的情况)?BR> JSP Page中有哪些隐含对象(Implicity Object)?各自的类型和作用是什么? request -- reponse -- session -- application -- out -- page -- pagecontext -- exception -- 只有在当前JSP Page为Error Page的时候才有效?BR> config -- <jsp:include page="/foo/foo.jsp" %> ?<@ include file="/foo/foo.jsp" %>的区别是什么? <jsp:include ... -- request time. <@ include ... -- Page translation time. Servlets/JSP Container(Engine)有几U运行方式? Standalone Tomcat standalone mode In-process Tomcat running inside Apache Web Server. Out-of-process Apache + mod_jk + Tomcat Servlet,Servlet开发h员,Servlet API, Servlet Container的关pL什么? Servlet,Servlet开发h?--->Servlet API --> Servlet Container The parts of an HTTP message Message part Description The initial lineQ?Specifies the purpose of the request or response message 例子QGET /reports/sales/index.html HTTP/1.0 The header section:Specifies the meta-information, such as size, type, and encoding, about the content of the message A blank line: An optional message body: The main content of the request or response message 下面是一个Response的例子: HTTP/1.0 200 OK Date: Tue, 01 Dec 2001 23:59:59 GMT Content-Type: text/html Content-Length: 52 <html> <body> <h1>Hello, John!</h1> </body> </html> HTTP规范中定义了哪些ҎQ各自有什么用途? GET HEAD POST ?Http 1.1规范开始,增加了以下的Ҏ: PUT OPTIONS TRACE DELETE CONNECT ServetRequest中ؓ什么要定义:getContentType(),getContentLength()Ҏ?BR> ҎHTTP协议规范QRequest ?Response一样也有这些必不可的内容Q?BR> 所以需要首先了?HTTP Message的概念和其内容的格式Q这些东西对于Request和Reponse是一L?BR> 对于GET方式发送的hQ其内容cd为:null 对于POST方式发送的hQ其内容cd为:application/x-www-form-urlencoded POST方式发送请求的内容cM于:username=xuejava. RequestDispatcher.forward()和HttpServletResponse.sendRedirect()的区别是什么? RequestDispatcher.forward()是在服务器端q行QHttpServletResponse.sendRedirect()是通过向客h览器发送命令来完成?BR> 所以RequestDispatcher.forward()对于览器来说是“透明的”;而HttpServletResponse.sendRedirect()则不是?BR> 另外Q还要注意RequestDispatcher.forward()在调用的时候Response不能已经Commit了(Response.isCommitted()Q?BR> ServletContext.getRequestDispatcher(String url)和ServletRequest.getRequestDispatcher(String url)的区别是什么?Z么? ServletContext.getRequestDispatcher(String url)中的url只能使用l对路径Q而ServletRequest.getRequestDispatcher(String url)中的url可以使用相对路径?BR> 因ؓServletRequesth相对路径的概念;而ServletContext对象无次概念?BR> 如何把请求{Ud另外一个Web App中的某个地址Q?/B> ServletContext.getRequestDispatcher(String url)和ServletRequest.getRequestDispatcher(String url)只能把请求{Ud同一个Web App中的地址?BR> 如果需要把h转移到另外一个Web App中的某个地址Q可以按下面的做法: 1. 获得另外一个Web App的ServletConext对象(currentServletContext.getContext(uripath)). 2. 调用ServletContext.getRequestDispatcher(String url)Ҏ?BR> 未完待箋 ]]> 问题集锦QServlets/JSP开发技术问{?/title> http://www.tkk7.com/xxxzheng/archive/2005/11/30/21998.htmlSteve Steve Wed, 30 Nov 2005 08:56:00 GMT http://www.tkk7.com/xxxzheng/archive/2005/11/30/21998.html http://www.tkk7.com/xxxzheng/comments/21998.html http://www.tkk7.com/xxxzheng/archive/2005/11/30/21998.html#Feedback 0 http://www.tkk7.com/xxxzheng/comments/commentRss/21998.html http://www.tkk7.com/xxxzheng/services/trackbacks/21998.html Z么GenericServlet在init(ServletConfig config)基础上增加了一个init()ҎQ?/B> init()Ҏ被GenericServlet.init(ServletConfig config)Ҏ调用?BR> init()Ҏ方便了开发h员定制Servlet的初始化Q而无dl护ServletConfig对象的存储工作?BR> 重写GenericServlet.init(ServletConfig config)必须要显C的调用super.init(config)Ҏ?BR> ServletContext.getContect(java.lang.String uripath)的作用是什么? q回同一Server中指定的path对应的ServletContext对象,通过该对象可以实CServer中的其他Context打交道?BR> uripath必须是以"/"开始(该\径的含义是相对于整个Servlet文档的根路径Q而不是当前ServletContext的根路径Q?BR> Servlet生命周期是什么? 一般的Servlet(GenericServlet,即与协议无关的Servlet)的生命周期:init() --> GenericServlet.service(ServletRequest req, ServletResponse res) --> destroy. HttpServlet的生命周? init() --> GenericServlet.service(ServletRequest req, ServletResponse res)---> service(HttpServletRequest req, HttpServletResponse resp) --> doXXXX()-->destroy. 有没有必要重写GenericServlet.service()ҎQ?/B> 对于HttpServlet来说没有必要。只需要重写它的doXXXX()Ҏ可以了。HttpServlet中service()Ҏ会自动的Ҏ用户hcd把请求{发给相应的doXXXX()ҎQ例如doGet()ҎQ?BR> ServletRequest.getReader()和ServletRequest.getInputStream()如何使用Q?BR> 注意两个Ҏ不能同时使用?BR> ServletRequest.getRealPath(String path)Ҏ已经不推荐用?BR> 请用ServletContext.getRealPath(String path)Ҏ?BR> ServletResponse~省的字W集(charset)是什? ServletResponse~省的字W集(charset)是ISO-8859-1,可以通过setContentType(java.lang.String)Ҏ改变新的字符集?BR> 例如QsetContentType("text/html; charset=Shift_JIS"). 关于字符集信息,可以览RFC 2045 HttpServletRequest.getRequestURI()和HttpServletRequest.getRequestURL()区别是什? request.getRequestURI() q回值类|/xuejava/requestdemo.jsp request.getRequestURL() q回值类|http://localhost:8080/xuejava/requestdemo.jsp HttpServletRequest.encodeURL()和HttpServletRequest.encodeRedirectURL(()区别是什?Z么要有两个不同的Ҏ呢? 当用URL-rewriting方式来管理Session的时候,需要用C上的两个Ҏ?BR> 两个Ҏ的不同点是:两个Ҏ定是否需要包含session ID的逻辑不同?BR> 在调用HttpServletResponse.sendRedirect前,应该先调用encodeRedirectURL()ҎQ否则可能会丢失Sesssion信息?... 如何使你的Servlet或者JSP实现Single Thread Model? 对于Servlet实现javax.single.SingleThreadModel接口?BR> 对于JSP,在Page Directive中写如下的语?lt;%@ page isThreadSafe="false" %> JSP Tag ?JSP XML-based Tag ... 如何把某一个JSP Page定义成ؓError Page?Z么要q样做? 实现ҎQ?<%@ page isErrorPage="true" %> Z么? 因ؓ需要获取Exception 对象Q缺省情况下Q在JSP Page中是不能直接使用“隐含对象?exception的)?BR> JSP Page的执行顺序是如何的? JSP Page的执行顺序如下: JSP Page Translation. JSP Page --> Servlet source code. JSP Page Compilation. Servlet source code --> Servlet class. Load Class(First time or the server restarted) Create instance(可能会很多次Q如果JSP Page中声明了<%@ page isThreadSafe="false" %>) Call jspInit methodQ一般的JSP Page都没有重写这个方法,重写需要在声明语句D中Q?BR> Call _jspService methodQ类g一般HttpServlet的doGet和doPostҎQ但是可以同时用来处理Post和GetqhQ?BR> Call jspDestroy methodQServer在卸载Servet的时候,例如当Servlet很久没有使用的情况)?BR> JSP Page中有哪些隐含对象(Implicity Object)?各自的类型和作用是什么? request -- reponse -- session -- application -- out -- page -- pagecontext -- exception -- 只有在当前JSP Page为Error Page的时候才有效?BR> config -- <jsp:include page="/foo/foo.jsp" %> ?<@ include file="/foo/foo.jsp" %>的区别是什么? <jsp:include ... -- request time. <@ include ... -- Page translation time. Servlets/JSP Container(Engine)有几U运行方式? Standalone Tomcat standalone mode In-process Tomcat running inside Apache Web Server. Out-of-process Apache + mod_jk + Tomcat Servlet,Servlet开发h员,Servlet API, Servlet Container的关pL什么? Servlet,Servlet开发h?--->Servlet API --> Servlet Container The parts of an HTTP message Message part Description The initial lineQ?Specifies the purpose of the request or response message 例子QGET /reports/sales/index.html HTTP/1.0 The header section:Specifies the meta-information, such as size, type, and encoding, about the content of the message A blank line: An optional message body: The main content of the request or response message 下面是一个Response的例子: HTTP/1.0 200 OK Date: Tue, 01 Dec 2001 23:59:59 GMT Content-Type: text/html Content-Length: 52 <html> <body> <h1>Hello, John!</h1> </body> </html> HTTP规范中定义了哪些ҎQ各自有什么用途? GET HEAD POST ?Http 1.1规范开始,增加了以下的Ҏ: PUT OPTIONS TRACE DELETE CONNECT ServetRequest中ؓ什么要定义:getContentType(),getContentLength()Ҏ?BR> ҎHTTP协议规范QRequest ?Response一样也有这些必不可的内容Q?BR> 所以需要首先了?HTTP Message的概念和其内容的格式Q这些东西对于Request和Reponse是一L?BR> 对于GET方式发送的hQ其内容cd为:null 对于POST方式发送的hQ其内容cd为:application/x-www-form-urlencoded POST方式发送请求的内容cM于:username=xuejava. RequestDispatcher.forward()和HttpServletResponse.sendRedirect()的区别是什么? RequestDispatcher.forward()是在服务器端q行QHttpServletResponse.sendRedirect()是通过向客h览器发送命令来完成?BR> 所以RequestDispatcher.forward()对于览器来说是“透明的”;而HttpServletResponse.sendRedirect()则不是?BR> 另外Q还要注意RequestDispatcher.forward()在调用的时候Response不能已经Commit了(Response.isCommitted()Q?BR> ServletContext.getRequestDispatcher(String url)和ServletRequest.getRequestDispatcher(String url)的区别是什么?Z么? ServletContext.getRequestDispatcher(String url)中的url只能使用l对路径Q而ServletRequest.getRequestDispatcher(String url)中的url可以使用相对路径?BR> 因ؓServletRequesth相对路径的概念;而ServletContext对象无次概念?BR> 如何把请求{Ud另外一个Web App中的某个地址Q?/B> ServletContext.getRequestDispatcher(String url)和ServletRequest.getRequestDispatcher(String url)只能把请求{Ud同一个Web App中的地址?BR> 如果需要把h转移到另外一个Web App中的某个地址Q可以按下面的做法: 1. 获得另外一个Web App的ServletConext对象(currentServletContext.getContext(uripath)). 2. 调用ServletContext.getRequestDispatcher(String url)Ҏ?BR> 未完待箋 ]]> java基础知识——java入门与加׃ http://www.tkk7.com/xxxzheng/archive/2005/11/30/21994.htmlSteve Steve Wed, 30 Nov 2005 08:53:00 GMT http://www.tkk7.com/xxxzheng/archive/2005/11/30/21994.html http://www.tkk7.com/xxxzheng/comments/21994.html http://www.tkk7.com/xxxzheng/archive/2005/11/30/21994.html#Feedback 0 http://www.tkk7.com/xxxzheng/comments/commentRss/21994.html http://www.tkk7.com/xxxzheng/services/trackbacks/21994.html {:Java是一U通用的,q发的,强类型的Q面向对象的~程语言Q摘自Java规范W二? JDK是Sun公司分发的免费Java开发工P正式名称为J2SDK(Java2 Software Develop Kit)?BR> 2 什么是JRE/J2REQ?BR> {:J2RE是Java2 Runtime EnvironmentQ即Javaq行环境Q有时简UJRE?BR> 如果你只需要运行JavaE序或AppletQ下载ƈ安装它即可?BR> 如果你要自行开发Java软gQ请下蝲JDK。在JDK中附带有J2RE?BR> 注意׃Microsoft对Java的支持不完全Q请不要使用IE自带的虚拟机来运行AppletQ务必安装一个J2RE或JDK?BR> 3 学习Java用什么工h较好Q?BR> {:作者徏议首先用JDK+文本~辑器,q有助你理解下列几个基础概念QpathQclasspathQpackageq熟悉基本命令:javac和java。ƈ且下载和你的JDK版本一致的API帮助?BR> 如果你不定cL函数的用法,请先查阅API而不是发贴求助?BR> 当你熟悉Java之后Q你可以考虑换一个IDE。很多h推荐JCreatorQ实际上JCreator的功能还 是很q?BR> 作者推荐eclipseQ下载网址http://www.eclipse.org 。因eclispe是免费的. 4 学习Java有哪些好的参考书Q?BR> {:作者首先推荐Thinking in JavaQ中文名《Java~程思想》,有中文版?BR> 该书W一章介l了很多面向对象的编E思想Q作为新手应当认真阅诅R?BR> 除此以外QO′relly出版C֒Wrox出版C书也不错。作者本Z喜欢大陆作者的书?BR> 也许你觉得英文太难,但是|上大多数资料都是英文的。另外,你需要经常查阅APIQ而那也是英文的?BR> 5 Java和C++哪个更好Q?BR> {:q个问题是一个很不恰当的问题。你应该问:Java和C++哪个更适用于我的项目? 如果你不需要跨q_Q不需要分布式Q要E序的运行速度QC++更ؓ适用。反?你应当考虑Java?BR> 6 什么是J2SE/J2EE/J2MEQ?BR> {:J2SE是一般的Java?BR> J2ME是针对嵌入式讑֤的,比如Java手机Q它有自qSDK。而J2EE使用J2SE的SDK?BR> J2EE规范更多的是对J2EE服务器的要求和开发h员的U束。详情见后《J2EE FAQ》?BR> 二、命令篇 7 我写了第一个JavaE序Q应该如何编?q行Q?BR> {:首先请将E序保存为xxx.java文gQ然后在dosH口下用javac xxx.java命oQ你会发现该目录下多了一个xxx.class文gQ再使用java xxx命oQ你的javaE序开始运行了?BR> 8 我照你说的做了,但是出现什?′javac?不是内部或外部命令,也不是可q行的程序或批处理文件??BR> {:你遇Cpath问题。操作系l在一定的范围(path)内搜索javac.exeQ但是没能找到。请~辑你的操作pȝ环境变量Q新增一个JAVA_HOME变量Q设ZJDK的安装目录,再编辑Path变量Q加上一?%JAVA_HOME%\bin。然后关掉ƈ新开一个dosH口Q你可以用javac和java命o了?BR> 9 环境变量怎么讄Q?BR> {:请向w边会设的h咨询?BR> 10 javac xxx.java利通过了,但是java xxx的时候显CZ?NoClassDefFoundError"?br> {:你遇Cclasspath问题。java命o在一定的范围(classpath)内搜索你要用的class文gQ但是未能找到?BR> 首先L认你没有错敲成java xxx.classQ其ơ,查你的CLASSPATH环境变量Q如果你讄了该变量又没有包?Q代表当前目录)?br> ?br> 你就会遇到这个问题。请在你的CLASSPATH环境变量中加入一?。另外参?5?BR> 11 我在java xxx的时候显C?Exception in thread "main" java.lang.NoSuchMethodError: main"?BR> {:首先Q在你的E序中每个java文g有且只能有一个publicc,q个cȝcd必须和文件名的大写完全一栗其ơ,在你要运行的cM有且只能有一个public static void main(String[] args)ҎQ这个方法就是你的主E序?BR> 12 package是什么意思?怎么用? {:Z唯一标识每个cdƈ分组Qjava使用了package的概c?BR> 每个c都有一个全名,例如String的全名是java.lang.StringQ其中java.lang是包名,String是短名?BR> q样Q如果你也定义了StringQ你可以把它攑֜mypackage中,通过使用全名mypackage.String和java.lang.String来区分这两个cR同Ӟ逻辑上相关的cL在同一个包中,可以使程序结构更为清楚。你要做的就是在java文g开头加一?package mypackage;"?BR> 注意包没有嵌套或包含关系QA包和A.B包对java命o来说是ƈ列的两个包?BR> 13 我没有声明Q何package会怎么P {:你的c被认ؓ攑֜默认包中。这时全名和短名是一致的?BR> 14 在一个类中怎么使用其他c? {:如果你用java.lang包中的类Q不用做M事?BR> 如果你用其他包中的c,使用import package1.class1; ?import package2.*;q里.*表示引入q个包中的所有类。然后在E序中你可以使用其他cȝ短名。如果短名有冲突Q用全名来区分?BR> 15 我用了package的时候显C?NoClassDefFoundError"Q但是我把所有packageL的时候能正常q行?BR> {:你的java文g按包名存放?BR> 比如你的工作目录?workQ你的类是package1.class1Q那么将它存放ؓ/work/package1/class1.java。如果没有声明包Q那么直接放?work下?BR> ?work下执行javac package1/class1.javaQ再执行java package1.class1Q你会发C切正常。另外,你可以考虑开始用IDE?BR> 16 我想把java~译成exe文gQ该怎么做? {:JDK只能java源文件编译ؓclass文g?BR> class文g是一U跨q_的字节码Q必M赖^台相关的JRE来运行。Java以此来实现跨q_.有些开发工具可以将java文g~译为exe文g。作者反对这U做法,因ؓq样取消了跨^台性。如果你信你的软g只在Windowsq_上运行,你可以考虑使用C++/C#来编E?BR> 17 我在~译的时候遇C?deprecated API"Q是什么意思? {:所谓deprecated是指已经?Ӟ但是Z向前兼容赯仍然保留的方??br> q些Ҏ可能会在以后取消支持。你应当改用较新的方法。一般在API里面会说明你应当用什么方法来代替之?BR> 三、I/O?/B> 18 我怎么ljavaE序加启动参敎ͼ像dir /p/w那样Q?BR> {:q记得public static void main(String[] args)吗?q里的args是你的启动参数。在q行时你输入java package1.class1 -arg1 -arg2Qargs中就会有两个StringQ一个是arg1Q另一个是arg2?BR> 19 我怎么从键盘输入一个int/double/字符Ԍ {:java的I/O操作比C++要复杂一炏V如果要从键盘输入,样例代码如下QBufferedReader cin = new BufferedReader( new InputStreamReader( System.in ) );String s = cin.readLine(); q样你就获得了一个字W串Q如果你需要数字的话再加上Qint n = Integer.parseInt( s ); 或?double d = Double.parseDouble( s ); 20 我怎么输出一个int/double/字符Ԍ {:在程序开始写Q?BR> PrintWriter cout = new PrintWriter( System.out ); 需要时写: cout.print(n); 或者cout.println("hello"){等?BR> 21 我发现有些书上直接用System.in和System.out输入输出Q比你要单得多?BR> {:java使用unicodeQ是双字节。而System.in和System.out是单字节的stream?BR> 如果你要输入输出双字节文字比如中文,请用作者的做法?BR> 22 我怎么从文件输入一个int/double/字符Ԍ {:cM于从键盘输入Q只不过换成BufferedReader fin = new BufferedReader( new FileReader(" myFileName " ) ); PrintWriter fout = new PrintWriter( new FileWriter(" myFileName " ) ); 另外如果你还没下载APIQ请开始下载ƈ阅读java.io包中的内宏V?BR> 23 我想d文g的指定位|,该怎么办? {:你肯定没有认真看API。java.io.RandomAccessFile可以满你的需要?BR> 24 怎么判断要读的文件已l到了尽_ {:你肯定没有认真看API。在Reaer的readҎ中明说明返?1表示的l尾?BR> 四?关键字篇 25 java里面怎么定义宏? {:java不支持宏Q因为宏代换不能保证cd安全?BR> 如果你需要定义常量,可以它定义为某个类的static final成员。参?6?0?BR> 26 java里面没法用const?BR> {:你可以用final关键字。例?final int m = 9。被声明为final的变量不能被再次赋?final也可以用于声明方法或c,被声明ؓfinal的方法或cM能被l承。注意const是java的保留字以备扩充?BR> 27 java里面也不能用goto?BR> {:甚至在面向过E的语言中你也可以完全不用goto。请查你的程序流E是否合理?BR> 如果你需要从多层循环中迅速蟩出,java增强了(和C++相比Qbreak和continue的功能?img src ="http://www.tkk7.com/xxxzheng/aggbug/21994.html" width = "1" height = "1" /> ]]> java基础知识——java入门与加? http://www.tkk7.com/xxxzheng/archive/2005/11/30/21995.htmlSteve Steve Wed, 30 Nov 2005 08:53:00 GMT http://www.tkk7.com/xxxzheng/archive/2005/11/30/21995.html http://www.tkk7.com/xxxzheng/comments/21995.html http://www.tkk7.com/xxxzheng/archive/2005/11/30/21995.html#Feedback 0 http://www.tkk7.com/xxxzheng/comments/commentRss/21995.html http://www.tkk7.com/xxxzheng/services/trackbacks/21995.html {:throws用于声明一个方法会抛出哪些异常。而throw是在Ҏ体中实际执行抛出异常的动作?BR> 如果你在Ҏ中throw一个异常,却没有在Ҏ声明中声明之Q编译器会报错?BR> 注意Error和RuntimeException的子cL例外Q无需特别声明?BR> 32 什么是异常Q?BR> {:异常最早在Ada语言中引入,用于在程序中动态处理错误ƈ恢复?BR> 你可以在Ҏ中拦截底层异常ƈ处理之,也可以抛l更高层的模块去处理?BR> 你也可以抛出自己的异常指C发生了某些不正常情c常见的拦截处理代码如下Q?BR> try { ...... //以下是可能发生异常的代码 ...... //异常被抛出,执行程中断q{向拦截代码?BR> ...... } catch(Exception1 e) //如果Exception1是Exception2的子cdƈ要做特别处理Q应排在前面 { //发生Exception1时被该段拦截 } catch(Exception2 e) { //发生Exception2时被该段拦截 } finally //q是可选的 { //无论异常是否发生Q均执行此段代码 } 33 final和finally有什么不同? {:final误26。finally用于异常机制Q参?2?BR> 五?面向对象?/B> 34 extends和implements有什么不同? {:extends用于Q单Q承一个类QclassQ,而implements用于实现一个接口(interfaceQ?BR> interface的引入是Z部分地提供多l承的功能?BR> 在interface中只需声明Ҏ_而将Ҏ体留l实现的class来做?BR> q些实现的class的实例完全可以当作interface的实例来对待?BR> 有趣的是在interface之间也可以声明ؓextendsQ单l承Q的关系?BR> 35 java怎么实现多承? {:java不支持显式的多ѝ?BR> 因ؓ在显式多l承的语a例如c++中,会出现子c被q声明祖先虚基类构造函数的问题Q而这是违反面向对象的装性原则的?BR> java提供了interface和implements关键字来部分地实现多l承。参?4?BR> 36 abstract是什么? {:被声明ؓabstract的方法无需l出Ҏ体,留给子类来实现?BR> 而如果一个类中有abstractҎQ那么这个类也必d明ؓabstract?BR> 被声明ؓabstract的类无法实例化,管它可以定义构造方法供子类使用?BR> 37 public,protected,private有什么不同? {:q些关键字用于声明类和成员的可见性。public成员可以被Q何类讉KQprotected成员限于自己和子c访问,private成员限于自己讉K?BR> Javaq提供了W四U的默认可见性,当没有Q何public,protected,private修饰? cd以用public或默认来修饰?BR> 38 Override和Overload有什么不同? {:Override是指父类和子cM间方法的l承关系Q这些方法有着相同的名U和参数cd?BR> Overload是指同一个类中不同方法(可以在子cM可以在父cM定义Q间的关p,q些Ҏ有着相同的名U和不同的参数类型?BR> 39 我承了一个方法,但现在我惌用在父类中定义的Ҏ?BR> {:用super.xxx()可以在子cM调用父类Ҏ?BR> 40 我想在子cȝ构造方法中调用父类的构造方法,该怎么办? {:在子cL造方法的W一行调用super(...)卛_?BR> 41 我在同一个类中定义了好几个构造方法ƈ且想在一个构造方法中调用另一个?BR> {:在构造方法第一行调用this(...)?BR> 42 我没有定义构造方法会怎么P {:自动获得一个无参数的构造方法?BR> 43 我调用无参数的构造方法失败了?BR> {:如果你至定义了一个构造方法,׃再有自动提供的无参数的构造方法了?BR> 你需要显式定义一个无参数的构造方法?BR> 44 我该怎么定义cM于C++中的析构ҎQdestructorQ? {:提供一个void finalize()Ҏ。在Garbarge Collector回收该对象时会调用该Ҏ?BR> 注意实际上你很难判断一个对象会在什么时候被回收。作者从未感到需要提供该Ҏ?BR> 45 我想一个父cd象{换成一个子cd象该怎么做? {:强制cd转换。如 public void meth(A a) { B b = (B)a; } 如果a实际上ƈ不是B的实例,会抛出ClassCastException。所以请保a实是B的实例?BR> 46 其实我不定a是不是B的实例,能不能分情况处理Q?BR> {:可以使用instanceof操作W。例?BR> if( a instanceof B ) { B b = (B)a; } else { ... } 47 我在Ҏ里修改了一个对象的|但是退出方法后我发现这个对象的值没变! {:很可能你把传入参数重赋了一个新对象Q例如下列代码就会造成q种错误Q?BR> public void fun1(A a) //a是局部参敎ͼ指向了一个外在对象?BR> { a = new A(); //a指向了一个新对象Q和外在对象脱钩了。如果你要让a作ؓ传出变量Q不要写q一句?BR> a.setAttr(attr);//修改了新对象的|外在对象没有被修攏V?BR> } 基本cd也会出现q种情况。例如: public void fun2(int a) { a = 10;//只作用于本方法,外面的变量不会变化?BR> } 六、java.util?/B> 48 java能动态分配数l吗Q?BR> {:可以。例如int n = 3; Language[] myLanguages = new Language[n]; 49 我怎么知道数组的长度? {:用length属性。如上例中的 myLanguages.length ׃ؓ 3?BR> 50 我还惌数组的长度能自动改变Q能够增?删除元素?BR> {:用顺序表--java.util.List接口?BR> 你可以选择用ArrayList或是LinkedListQ前者是数组实现Q后者是链表实现?BR> 例如Q?List list = new ArrayList(); 或是 List list = new LinkedList(); ?BR> 51 什么是链表Qؓ什么要有两U实玎ͼ {:误习数据结构?BR> 52 我想用队?栈?BR> {:用java.util.LinkedList?BR> 53 我希望不要有重复的元素?BR> {:用集?-java.util.Set接口。例如:Set set = new HashSet()?BR> 54 我想遍历集合/Map?BR> {:用java.util.Iterator。参见API?BR> 55 我还要能够排序?BR> {:用java.util.TreeSet。例如:Set set = new TreeSet()。放q去的元素会自动排序?BR> 你需要ؓ元素实现Comparable接口Q还可能需要提供equals()ҎQcompareTo()ҎQhash Code()Ҏ?BR> 56 但是我想l数l排序?BR> {:java.util.Arrayscd含了sort{实用方法?BR> 57 我想按不同方法排序?BR> {:为每U方法定义一个实C接口Comparator的类q和Arraysl合q用?BR> 58 Map有什么用Q?BR> {:存储key-value的关键字-值对Q你可以通过关键字来快速存取相应的倹{?BR> 59 setҎ没问题,但是getҎq回的是Object?BR> {:强制cd转换成你需要的cd。参?5?BR> 60 我要获得一个随机数?BR> {:使用java.util.RandomcR?BR> 61 我比较两个StringLfalseQ但是它们明明都?abc" Q?BR> {:比较String一定要使用equals或equalsIgnoreCaseҎQ不要?== Q?BR> ==比较的是两个引用Q变量)是否指向了同一个对象,而不是比较其内容?img src ="http://www.tkk7.com/xxxzheng/aggbug/21995.html" width = "1" height = "1" /> ]]> 开发JavapȝE序员要注意的基本知识二 http://www.tkk7.com/xxxzheng/archive/2005/11/30/21992.htmlSteve Steve Wed, 30 Nov 2005 08:48:00 GMT http://www.tkk7.com/xxxzheng/archive/2005/11/30/21992.html http://www.tkk7.com/xxxzheng/comments/21992.html http://www.tkk7.com/xxxzheng/archive/2005/11/30/21992.html#Feedback 0 http://www.tkk7.com/xxxzheng/comments/commentRss/21992.html http://www.tkk7.com/xxxzheng/services/trackbacks/21992.html 问题四:final关键字到底修C什么? final使得被修饰的变量"不变"Q但是由于对象型变量的本质是“引用”,使得“不变”也有了两种含义Q引用本w的不变Q和引用指向的对象不变?BR> 引用本n的不变: final StringBuffer a=new StringBuffer("immutable"); final StringBuffer b=new StringBuffer("not immutable"); a=b;//~译期错?BR> 引用指向的对象不变: final StringBuffer a=new StringBuffer("immutable"); a.append(" broken!"); //~译通过 可见Qfinal只对引用的“值?也即它所指向的那个对象的内存地址)有效Q它q引用只能指向初始指向的那个对象,改变它的指向会导致编译期错误。至于它所指向的对象的变化Qfinal是不负责的。这很类?=操作W:==操作W只负责引用的“值”相{,至于q个地址所指向的对象内Ҏ否相{,==操作W是不管的?BR> 理解final问题有很重要的含义。许多程序漏z都Z?---final只能保证引用永远指向固定对象Q不能保证那个对象的状态不变。在多线E的操作?一个对象会被多个线E共享或修改Q一个线E对对象无意识的修改可能会导致另一个用此对象的线E崩溃。一个错误的解决Ҏ是在此对象新徏的时候把它声明ؓfinalQ意图得它“永q不变”。其实那是徒劳的?BR> 问题五:到底要怎么样初始化Q?/B> 本问题讨论变量的初始化,所以先来看一下Java中有哪些U类的变量?BR> 1. cȝ属性,或者叫值域 2. Ҏ里的局部变?BR> 3. Ҏ的参?BR> 对于W一U变量,Java虚拟Z自动q行初始化。如果给Z初始|则初始化初始倹{如果没有给出,则把它初始化cd变量的默认初始倹{?BR> intcd变量默认初始gؓ0 floatcd变量默认初始gؓ0.0f doublecd变量默认初始gؓ0.0 booleancd变量默认初始gؓfalse charcd变量默认初始gؓ0(ASCII? longcd变量默认初始gؓ0 所有对象引用类型变量默认初始gؓnullQ即不指向Q何对象。注意数l本w也是对象,所以没有初始化的数l引用在自动初始化后其g是null?BR> 对于两种不同的类属性,static属性与instance属性,初始化的时机是不同的。instance属性在创徏实例的时候初始化Qstatic属性在cd载,也就是第一ơ用到这个类的时候初始化Q对于后来的实例的创建,不再ơ进行初始化。这个问题会在以后的pd中进行详l讨论?BR> 对于W二U变量,必须明确地进行初始化。如果再没有初始化之前就试图使用它,~译器会抗议。如果初始化的语句在try块中或if块中Q也必须要让它在W一ơ用前一定能够得到赋倹{也是_把初始化语句攑֜只有if块的条g判断语句中编译器也会抗议Q因为执行的时候可能不W合if后面的判断条Ӟ如此一来初始化语句׃会被执行了,q就q反了局部变量用前必须初始化的规定。但如果在else块中也有初始化语句,可以通过~译Q因为无论如何,L臛_一条初始化语句会被执行Q不会发生用前未被初始化的事情。对于try-catch也是一P如果只有在try块里才有初始化语句,~译部通过。如果在 catch或finally里也有,则可以通过~译。MQ要保证局部变量在使用之前一定被初始化了。所以,一个好的做法是在声明他们的时候就初始化他们,如果不知道要Z化成什么值好Q就用上面的默认值吧Q?BR> 其实W三U变量和W二U本质上是一LQ都是方法中的局部变量。只不过作ؓ参数Q肯定是被初始化q的Q传入的值就是初始|所以不需要初始化?BR> 问题六:instanceof是什么东东? instanceof是Java的一个二元操作符Q和==Q?gt;Q?lt;是同一cM东。由于它是由字母l成的,所以也是Java的保留关键字。它的作用是试它左边的对象是否是它双的类的实例,q回booleancd的数据。D个例子: String s = "I AM an Object!"; boolean isObject = s instanceof Object; 我们声明了一个String对象引用Q指向一个String对象Q然后用instancof来测试它所指向的对象是否是Objectcȝ一个实例,昄Q这是真的,所以返回trueQ也是isObject的gؓTrue?BR> instanceof有一些用处。比如我们写了一个处理̎单的pȝQ其中有q样三个c: public class Bill {//省略l节} public class PhoneBill extends Bill {//省略l节} public class GasBill extends Bill {//省略l节} 在处理程序里有一个方法,接受一个Billcd的对象,计算金额。假设两U̎单计方法不同,而传入的Bill对象可能是两U中的Q何一U,所以要用instanceof来判断: public double calculate(Bill bill) { if (bill instanceof PhoneBill) { //计算电话账单 } if (bill instanceof GasBill) { //计算燃气账单 } ... } q样可以用一个方法处理两U子cR?BR> 然而,q种做法通常被认为是没有好好利用面向对象中的多态性。其实上面的功能要求用方法重载完全可以实玎ͼq是面向对象变成应有的做法,避免回到l构化编E模式。只要提供两个名字和q回值都相同Q接受参数类型不同的Ҏ可以了Q?BR> public double calculate(PhoneBill bill) { //计算电话账单 } public double calculate(GasBill bill) { //计算燃气账单 } 所以,使用instanceof在绝大多数情况下q不是推荐的做法Q应当好好利用多态?img src ="http://www.tkk7.com/xxxzheng/aggbug/21992.html" width = "1" height = "1" /> ]]> java E序員注意几?/title> http://www.tkk7.com/xxxzheng/archive/2005/11/30/21903.htmlSteve Steve Wed, 30 Nov 2005 01:40:00 GMT http://www.tkk7.com/xxxzheng/archive/2005/11/30/21903.html http://www.tkk7.com/xxxzheng/comments/21903.html http://www.tkk7.com/xxxzheng/archive/2005/11/30/21903.html#Feedback 0 http://www.tkk7.com/xxxzheng/comments/commentRss/21903.html http://www.tkk7.com/xxxzheng/services/trackbacks/21903.html 问题一Q我声明了什么! String s = "Hello world!"; 许多人都做过q样的事情,但是Q我们到底声明了什么?回答通常是:一个StringQ内Ҏ“Hello world!”。这hp的回答通常是概念不清的Ҏ。如果要准确的回{,一半的人大概会回答错误?BR> q个语句声明的是一个指向对象的引用Q名为“s”,可以指向cd为String的Q何对象,目前指向"Hello world!"q个Stringcd的对象。这是真正发生的事情。我们ƈ没有声明一个String对象Q我们只是声明了一个只能指向String对象的引用变量。所以,如果在刚才那句语句后面,如果再运行一句: String string = s; 我们是声明了另外一个只能指向String对象的引用,名ؓstringQƈ没有W二个对象生,stringq是指向原来那个对象Q也是Q和s指向同一个对象?BR> 问题二:"=="和equalsҎI竟有什么区别? ==操作W专门用来比较变量的值是否相{。比较好理解的一ҎQ?BR> int a=10; int b=10; 则a==b是true?BR> 但不好理解的地方是: String a=new String("foo"); String b=new String("foo"); 则a==b返回false?BR> Ҏ前一帖说q,对象变量其实是一个引用,它们的值是指向对象所在的内存地址Q而不是对象本w。a和b都用了new操作W,意味着在内存中生两个内容ؓ"foo"的字W串Q既然是“两个”,它们自然位于不同的内存地址。a和b的值其实是两个不同的内存地址的|所以?=="操作W,l果会是 false。诚Ӟa和b所指的对象Q它们的内容都是"foo"Q应该是“相{”,但是==操作Wƈ不涉及到对象内容的比较?BR> 对象内容的比较,正是equalsҎ做的事?BR> 看一下Object对象的equalsҎ是如何实现的Q?BR> boolean equals(Object o){ return this==o; } Object 对象默认使用?=操作W。所以如果你自创的类没有覆盖equalsҎQ那你的cM用equals和?=会得到同Ll果。同样也可以看出Q?Object的equalsҎ没有辑ֈequalsҎ应该辑ֈ的目标:比较两个对象内容是否相等。因为答案应该由cȝ创徏者决定,所以Object把这个Q务留l了cȝ创徏者?BR> 看一下一个极端的c: Class Monster{ private String content; ... boolean equals(Object another){ return true;} } 我覆盖了equalsҎ。这个实CD无论Monster实例内容如何Q它们之间的比较永远q回true?BR> 所以当你是用equalsҎ判断对象的内Ҏ否相{,请不要想当然。因为可能你认ؓ相等Q而这个类的作者不q样认ؓQ而类的equalsҎ的实现是׃掌握的。如果你需要用equalsҎQ或者用Q何基于散列码的集合(HashSet,HashMap,HashTableQ,请察看一下java doc以确认这个类的equals逻辑是如何实现的?BR> 问题三:String到底变了没有Q?/B> 没有。因为String被设计成不可?immutable)c,所以它的所有对象都是不可变对象。请看下列代码: String s = "Hello"; s = s + " world!"; s 所指向的对象是否改变了呢?从本pdW一的l论很容易导个结论。我们来看看发生了什么事情。在q段代码中,s原先指向一个String对象Q内Ҏ "Hello"Q然后我们对sq行?操作Q那么s所指向的那个对象是否发生了改变呢?{案是没有。这Ӟs不指向原来那个对象了Q而指向了另一?String对象Q内容ؓ"Hello world!"Q原来那个对象还存在于内存之中,只是sq个引用变量不再指向它了?BR> 通过上面的说明,我们很容易导出另一个结论,如果l常对字W串q行各种各样的修改,或者说Q不可预见的修改Q那么用String来代表字W串的话会引起很大的内存开销。因?String对象建立之后不能再改变,所以对于每一个不同的字符Ԍ都需要一个String对象来表C。这Ӟ应该考虑使用StringBufferc,它允怿改,而不是每个不同的字符串都要生成一个新的对象。ƈ且,q两U类的对象{换十分容易?BR> 同时Q我们还可以知道Q如果要使用内容相同的字W串Q不必每ơ都new一个String。例如我们要在构造器中对一个名叫s的String引用变量q行初始化,把它讄为初始|应当q样做: public class Demo { private String s; ... public Demo { s = "Initial Value"; } ... } 而非 s = new String("Initial Value"); 后者每ơ都会调用构造器Q生成新对象Q性能低下且内存开销大,q且没有意义Q因为String对象不可改变Q所以对于内容相同的字符Ԍ只要一个String对象来表C就可以了。也pQ多ơ调用上面的构造器创徏多个对象Q他们的Stringcd属性s都指向同一个对象?BR> 上面的结Zq样一个事实:对于字符串常量,如果内容相同QJava认ؓ它们代表同一个String对象。而用关键字new调用构造器QL会创Z个新的对象,无论内容是否相同?BR> 至于Z么要把Stringc设计成不可变类Q是它的用途决定的。其实不只StringQ很多Java标准cd中的c都是不可变的。在开发一个系l的时候,我们有时候也需要设计不可变c,来传递一l相关的|q也是面向对象思想的体现。不可变cL一些优点,比如因ؓ它的对象是只ȝQ所以多U程q发讉K也不会有M问题。当然也有一些缺点,比如每个不同的状态都要一个对象来代表Q可能会造成性能上的问题。所以Java标准cdq提供了一个可变版本,?StringBuffer?img src ="http://www.tkk7.com/xxxzheng/aggbug/21903.html" width = "1" height = "1" /> ]]>
վ֩ģ壺
˾þ |
99re6ƵƷѹۿ |
Ƶ |
Ӱ |
վ |
Ƶ |
**һëƬ |
av |
Ұ߹ۿ
|
ַ߹ۿ |
һ߲ѹۿİƵ |
ۺۺ |
þ99žŹѿС˵ |
˳ھþۺվ |
ĻmvƵ8 |
鶹AVþþƷ |
ѿһƬ |
ƷҳѸ߹ۿ
|
ڵĤѿ |
ĻӰ߾Ʒ |
ɫƵ |
ٸƷһѶ̬ |
Ů˻Ů |
ҹһƵ |
|
ƷպAVһ
|
aƵѹۿ |
ڳ߿ |
aƵ |
Ѳһ |
AV벻߲ |
Ƶһ |
ϵվۿ |
˳ߵӰ |
ѿƵվ |
߹ۿ |
˾þۺһ |
Ȱһ |
˾Ʒѿ |
˳߲ |
av뾫Ʒվ
|