??xml version="1.0" encoding="utf-8" standalone="yes"?>
一般默认情况下Q?/span>Eclipse的代码提C功能是?/span>MicrosoftVisualStudio的差很多的,主要?/span>Eclipse本n有很多选项是默认关闭的Q要开发者自己去手动配置。如果开发者不清楚的话Q就不知?/span>Eclipse的代码提C功能一栯?/span>MicrosoftVisualStudio的代码提C功能一样强大?/span>
先D个简单的例子说明问题所在,例如?/span>EclipseQ代码里面,打个foreachQ?/span>switch{这些,是无法得C码提C的Q其他的更不用说了Q而在MicrosoftVisualStudio里面是得到非常友好的代码提示的。实际上Q?/span>Eclipse代码里面的代码提C功能默认的一般是?#8220;.”Q一般是有了?#8220;.”才会有代码提C?/span>
原理Q?#8220;Auto Activation triggers for java”q个选项是指触发代码提C的的选项Q把“.”Ҏ“.abcdefghijklmnopqrstuvwxyz(,”的意思,是指遇?/span>26个字母和.Q(q些W号p发代码提C功能了。增?/span>Eclipse的代码提C功能,具体怎么h配置Q下面开始说步骤Q?/span>
1.打开EclipseQ然?#8220;window”→“Preferences”
2.选择“java”Q展开Q?#8220;Editor”Q选择“Content Assist”?/span>
3.选择“Content Assist”Q然后看到右边,双?#8220;Auto-Activation”下面?#8220;Auto Activation triggers for java”q个选项。其实就是指触发代码提示的就?#8220;.”q个W号.
4.“Auto Activation triggers for java”q个选项Q在“.”后加abc字母Q方便后面的查找修改。然?#8220;apply”Q点?#8220;OK”?/span>
5.然后Q?#8220;File”→“Export”Q在弹出的窗口中选择“Perferences”Q点?#8220;下一?#8221;?/span>
6.选择导出文g路径Q本人导出到桌面Q输?#8220;test”作ؓ文g名,点击“保存”?/span>
7.在桌面找到刚在保存的文g“test.epf”,右键选择“用记事本打开”?/span>
8.可以看到很多配置Eclipse的信息?/span>
9.?#8220;ctrl+F”快捷键,输入“.abc”Q点?#8220;查找下一?#8221;?/span>
10.查找?#8220;.abc”的配|信?/span>.
11.?#8220;.abc”Ҏ“.abcdefghijklmnopqrstuvwxyz(,”Q保存,关闭“test.epf”?/span>
12.回到Eclipse界面Q?#8220;File”→“Import”Q在弹出的窗口中选择“Perferences”Q点?#8220;下一?#8221;Q选择刚在已经修改?#8220;test.epf”文gQ点?#8220;打开”Q点?#8220;Finish”。该步骤和上面的导出步骤cM?/span>
13.最后当然是q行代码试了。随便新Z个工E,新徏一个类。在代码输入switchQ?/span>foreach{进行测试。你立即会发玎ͼ果然Z提示Q而且无论是敲哪个字母都会有很多相关的提示了,很流畅很方便?/span>
ȝQ?#8220;Auto Activation triggers for java”q个选项是指触发代码提C的的选项Q把“.”Ҏ“.abcdefghijklmnopqrstuvwxyz(,”的意思,是指遇?/span>26个字母和.Q(q些W号p发代码提C功能了。顺便说一下,修改cdQ接口名{以不同颜色高亮的,可以q样配置?#8220;java”→“enditor”→“syntac”Q右边展开“java”→“classes”Q勾?#8220;Enable”q个选项Q选择自己喜欢的颜色即可。当然还有其他相关的颜色配置。具体就不说啦。其实,?#8220;Preferences”q个东西Q有很多可以配置的东西,使得Eclipse优化的,具体的就要各个hҎ自己个h喜好去配|?/span>
您正在看的文章来自疯狂Y件教育中?/span> www.fkjava.org
信息咨询Q?/span>Q564205990 星老师
首先Q对~码知识q行要的说明Q请务必理解后再看下面的代码。发送中文字W请求时Q如果?/span>get方式Q运行正常;而?/span>postҎ则会出现q。这是由于异步对?/span>XMLHttpRequest在处理返回的responseText的时候,是按UTF-8~码q行解码的?/span>
如果你原来的|页~码?/span>gb2312的话Q当然会发生~码的冲H了Q如果你原来的网늼码是utf-8Q那么就不会出现中文q的问题了?/span>
出现了中文ؕ码该怎么办呢Q通常的解军_法是?/span>escape()对发送的数据q行~码Q然后在q回?/span>responseText上再?/span>unescape()q行解码。然而在JavaScript~程中通常不推荐?/span>escape()?/span>unescape()Q而推荐?/span>encodeURI()?/span>decodeURI()。请看下面的“表单验证实例”Q或许对你学习编码知识有一定的帮助?/span>
W一?/span>jQuery?/span>load(url,[data],[callback])Ҏ
语法说明Q?/span>url为异步请求的地址Q?/span>data用来向服务器传送请求数据,为可选参数。一?/span>data参数启用Q整个请求过E将?/span>post的方式进行,否则默认?/span>get方式。如果希望在get方式下也传递数据,可以?/span>url地址后面用类?#8220;dataname1=data1&dataName2=data2”的方法?/span>
callback?/span>Ajax加蝲成功后运行的回调函数。另外?/span>load()Ҏq回的数据,不再需要考虑是文本还?/span>XMLQ?/span>jQuery都会自动q行处理。好了,下面马上使用load()Ҏ实现“自动表单验证”实例。首先是Q?/span>html框架Q?/span>5个例子都是一LQ如下:
1. <form>
2. 用户늧:<input type="text" onblur="startCheck(this)" name="User" id="User"><span id="UserResult"></span><br />
3. 输入密码:<input type="password" name="passwd1"><br />
4. 认密码:</td><td><input type="password" name="passwd2"><br />
5. <input type="submit" value="注册" class="button">
6. <input type="reset" value="重置" class="button">
7. </form>
必要说明Q?/span>
1?/span>onblur="startCheck(this)" q是JavaScript代码(U?/span>js) Q意思是text文本框失ȝҎ触发自定义函?/span>startCheck(),this是指?/span>text文本框的倹{?/span>
2?/span><span id="UserResult"></span>用来存放异步对象q回的结果?/span>
1. jQuery代码如下Q?/span>
2.
3. <script language="javascript" src="jquery.min.js"></script>
4. <script language="javascript">
5. function startCheck(oInput){
6. //首先判断是否有输入,没有输入直接q回Qƈ提示
7. if(!oInput.value){
8. oInput.focus(); //聚焦到用户名的输入框
9. document.getElementById("UserResult").innerHTML = "User cannot be empty.";
10. return;
11. }
12. oInput=$.trim(oInput.value); //使用jQuery?/span>$.trim()Ҏqo左右I格
13. var sUrl = "action.asp?user=" + oInput;
14. sUrl=encodeURI(sUrl); //使用encodeURI()~码Q解决中文ؕ码问?/span>
15. $("#UserResult").load(sUrl,function(data){
16. $("#UserResult").html(decodeURI(data)); //使用decodeURI()解码
17. }
18. );
19. }
20. </script>
必要说明Q?/span>
1、?/span>jQueryӞ都必d?/span>jquery.min.js文gQ可以到http://jquery.com/官网下蝲最新的版本?/span>
2、判断是否有输入Ӟ用的全是JavaScript语法?/span>
3、对传递给“处理?#8221;的参数进?/span>encodeURI~码Q以解决中文q问题?/span>
4?/span>load()中的function函数是ؓ了对q回l果q行decodeURI解码Q以解决中文q问题?/span>
5、对$.trim()?/span>$("#UserResult")?/span>html{?/span>jQuery语法不理解的Q可以参?/span>jQuery中文手册。本站提供下载?/span>
1. action.asp处理代码如下:
2.
3. <%
4. if(Request("user")="eko") then
5. Response.Write "Sorry, " & Request("user") & " already exists."
6. else
7. Response.Write Request("user")&" is ok."
8. end if
9. %>
必要说明Q?/span>
1?/span>action.asp处理늚~码?/span>GB2312Q如果把"Sorry..already exists..is ik"{英文改Z文,L下面的说明?/span>
2、?/span>postҎ会出Cؕ码,q是׃异步对象XMLHttpRequest在处理返回的responseText的时候,是按UTF-8~码q行解码的?/span>
3、所?/span>post方式的话Q必Laction.asp另存ؓӞW三的~码?/span> ANST 改ؓ UTF-8 (请务必记?/span>!!)?/span>
W二、?/span>$.get(url,[data],[callback])?/span>$.post(url,[data],[callback])Ҏ
语法说明Q尽?/span>load()Ҏ可以实现get?/span>post两种方式Q但很多时候开发者还是希望能够指定发送方式,q且处理服务器返回的倹{?/span>jQuery提供?/span>$.get()?/span>$.post()两种ҎQ分别针对这两种h方式?/span>
其中Q?/span>url求地址Q?/span>data求数据的列表Q是可选参敎ͼcallback求成功后的回调函敎ͼ该函数接受两个参敎ͼW一个参Cؓ服务器返回的数据Q第二个参数为服务器的状态,是可选参数?/span>$.post()中的type求数据的cdQ可以是html?/span>xml?/span>json{?/span> “可自动校验表单实?#8221;?/span>jQuery代码如下Q?/span>html如上所q?/span>
1. <script language="javascript" src="jquery.min.js"></script>
2. <script language="javascript">
3. function createQueryString(){
4. var username=$("#User").val();
5. //l合成对象的形式
6. var queryString={user:username};
7. return queryString;
8. }
9. function startCheck(oInput){
10. //首先判断是否有输入,没有输入直接q回Qƈ提示
11. if(!oInput.value){
12. oInput.focus(); //聚焦到用户名的输入框
13. document.getElementById("UserResult").innerHTML = "User cannot be empty.";
14. return;
15. }
16. oInput=$.trim(oInput.value); //使用jQuery?/span>$.trim()Ҏqo左右I格
17. $.get("action.asp",createQueryString(),
18. function(data){
19. $("#UserResult").html(data);
20. });
21. }
22. </script>
必要说明Q?/span>
1、对$.trim()?/span>$("#UserResult")?/span>html?/span>val(){?/span>jQuery语法不理解的Q可以参?/span>jQuery中文手册。本站提供下载?/span>
2、自定义函数createQueryString()Q是对传?#8220;处理?#8221;的参敎ͼq行处理。一U常规的Ҏ?/span>
3、因为是?/span>get方式处理Q说明这里不需要进行编码和解码。下面以post方式处理Q则需要编码和解码了,代码如下
1. function createQueryString(){
2. //使用encodeURI()~码解决中文q问题
3. var username=encodeURI($("#User").val());
4. //l合成对象的形式
5. var queryString={user:username};
6. return queryString;
7. }
8. function startCheck(oInput){
9. //首先判断是否有输入,没有输入直接q回Qƈ提示
10. if(!oInput.value){
11. oInput.focus(); //聚焦到用户名的输入框
12. document.getElementById("UserResult").innerHTML = "User cannot be empty.";
13. return;
14. }
15. oInput=$.trim(oInput.value); //使用jQuery?/span>$.trim()Ҏqo左右I格
16. $.post("action.asp",createQueryString(),
17. function(data){
18. $("#UserResult").html(decodeURI(data));
19. });
20. }
21. </script>
W三、?/span>$.ajax()Ҏ
语法说明Q尽?/span>load()?/span>$.get()?/span>$.post()非常方便实用Q但却不能控刉误和很多交互的细节,可以说这3U方法对Ajax的可控性较差?/span>jQuery提供了一个强大的函数$.ajax(options)来设|?/span>Ajax讉K服务器的各个l节Q它的语法十分简单,是讄Ajax的各个选项Q然后指定相应的倹{?#8220;可自动校验表?#8221;实例代码如下Q?/span>
1. <script language="javascript" src="jquery.min.js"></script>
2. <script language="javascript">
3. function createQueryString(){
4. //使用encodeURI()~码解决中文q问题
5. var username=encodeURI($("#User").val());
6. //l合成对象的形式
7. var queryString={user:username};
8. return queryString;
9. }
10. function startCheck(oInput){
11. //首先判断是否有输入,没有输入直接q回Qƈ提示
12. if(!oInput.value){
13. oInput.focus(); //聚焦到用户名的输入框
14. document.getElementById("UserResult").innerHTML = "User cannot be empty.";
15. return;
16. }
17. oInput=$.trim(oInput.value); //使用jQuery?/span>$.trim()Ҏqo左右I格
18. $.ajax({
19. type: "GET",
20. url: "action.asp",
21. data: createQueryString(),
22. success: function(data){
23. $("#UserResult").html(decodeURI(data));
24. }
25. });
26. }
27. </script>
必要说明Q?/span>
1、代码基本同上,只是$.ajax(options)E有不同Q对于其参数不理解可以参?/span>jQuery中文手册?/span>
2、给个徏议,无论?/span>get方式q是post方式Q都习惯q行~码Q以防出C文ؕ码的问题?/span>
3、再一下,无论使用哪种E序Q如果遇到问题了Q都可以参考相关的手册说明Q这是徏站所必需的?/span>
上面的实例用了jQuery?/span>load()Ҏ?/span>$.get()?/span>$.post()?/span>$.ajax()?/span>4U方法,都要考虑中文q的问题,下面推荐一个方法,q一步简?/span>jQuery代码Q呵c?/span>
W四、表单插?/span>
表单插gQ?/span>Form PluginQ是一Ƒ֊能非常强大的插gQ在jQuery官方|站上目前ؓ4星推荐Q下载后?/span>jquery.form.js文g。该插g提供获取表单数据、重|表单项目、?/span>Ajax提交数据{一pd功能Q深受开发h员的喜爱。用表单插Ӟ再次重写“表单校验实例”Q完整代码如下:
1. <form id="myform" action="action.asp">
2. 用户늧:<input type="text" onblur="startCheck(this)" name="User" id="User"><input type="button" value=" ?/span>" class="button"><span id="UserResult"></span><br />
3. 输入密码:<input type="password" name="passwd1"><br />
4. 认密码:</td><td><input type="password" name="passwd2"><br /><br />
5. <input type="submit" value="注册" class="button"><input type="reset" value="重置" class="button">
6. </form>
HTML框架加了一?#8220;?#8221;的按?/span>(使用手动校验的方?/span>)Q?/span>jQuery如下Q?/span>
1. <script language="javascript" src="jquery.min.js"></script>
2. <script language="javascript" src="jquery.form.js"></script>
3. <script language="javascript">
4. function startCheck(oInput){
5. //首先判断是否有输入,没有输入直接q回Qƈ提示
6. if(!oInput.value){
7. oInput.focus(); //聚焦到用户名的输入框
8. document.getElementById("UserResult").innerHTML = "User cannot be empty.";
9. return;
10. }
11. }
12. $(function(){
13. $("input[type=button]").click(function(){
14. var options={
15. target: "#UserResult"
16. };
17. //表单?/span>Ajax?/span>
18. $("#myform").ajaxSubmit(options);
19. });
20. });
21. </script>
必要说明Q?/span>
1、用表单插Ӟ必须加蝲jquery.form.js文g?/span>
2、按Ajax方式提交数据Q可以用表单插件的ajaxSubmit(options)来按?/span>Ajax的方式直接提交表单或者?/span>ajaxform(options)ҎQ通常在页面加载完成时执行Q用来将表单l一Ajax化,q且提交表单依然使用传统?/span>submit按钮Q只不过q行的是Ajax提交。其中参?/span>options?/span>$.ajax(options)的参数基本相同?/span>
您正在看的文章来自疯狂Y件教育中?/span> www.fkjava.org
信息咨询Q?/span>Q564205990 星老师
一?/span>Eclipse~译器提供源代码格式输入
Eclipse提供自动源码格式选项Qƈ且组l输入(删除未用的代码Q。你可以使用下面的这些快捷键q行操作?/span>
Ctrl + Shift + F--源代码格?/span>
Ctrl + Shift + O--l织输入q删除未使用的代?/span>
代替手动调用q两个函敎ͼ只需ҎEclipse自动格式和自动组l选项Q可以随时保存文件?/span>
操作步骤Q在Eclipse中进?/span>Window -> Preferences -> Java -> Editor -> Save Actions,然后以选定的方式保存,最后检?/span>Format source code + Organize imports.
二、避免多个返回(退出点Q?/span>
依照你的ҎQ确保只有一个退出点。不要在同一个地Ҏ多个地方使用q回。比如,下面的代码,NOT RECOMMENDEDQ不Q,q是因ؓ有多个退出点Q返回语句)?/span>
1.private boolean isEligibleQ?/span>int ageQ?/span>{
2. ifQ?/span>age > 18Q?/span>{
3. return true;
4. }else{
5. return false;
6. }
7.}
下面的代码有所提升Q这是更高版本的?/span>
1.private boolean isEligibleQ?/span>int ageQ?/span>{
2. boolean result;
3. ifQ?/span>age > 18Q?/span>{
4. result = true;
5. }else{
6. result = false;
7. }
8. return result;
9.}
三、简?/span>if-else
我写了几个实用的Ҏ作ؓ参考,查语句条件ƈ且基于该条gq回倹{比如,考虑?/span>isEligibleҎQ正如你之前所看到的:
1.private boolean isEligibleQ?/span>int ageQ?/span>{
2. boolean result;
3. ifQ?/span>age > 18Q?/span>{
4. result = true;
5. }else{
6. result = false;
7. }
8. return result;
9.}
整个Ҏ以一个单一?/span>return语句重新~写Q?/span>
1.private boolean isEligibleQ?/span>int ageQ?/span>{
2.3.return age > 18;
4.5.}
四、不要给Boolean, Integer或?/span>String创徏新的实例
避免l?/span>Boolean,Integer,String创徏新的实例。比如,使用new BooleanQ?/span>trueQ,Boolean,valueOfQ?/span>trueQ。修改后的语句与之前的效果基本相同,除了在性能上有所提升?/span>
五、用大括号模块语句
永远别忘了用大括号模块语句比如if?/span>for?/span>while.q样做的好处是当你在修改模块U语句时减少了模p代码ƈ且避免引q?/span>bug的机会?/span>
不徏议:
1.ifQ?/span>age > 18Q?/span>
2. result = true;
3.else
4. result = false;
Q?/span>
1.ifQ?/span>age > 18Q?/span>{
2. result = true;
3.}else{
4. result = false;
5.}
六、以finalcd标记Ҏ参数QQ何时候都适用
误住,?/span>finalcd标记Ҏ参数QQ何时候都适用。这样做的好处在于当你不心修改参数值时Q编译器会给你警告,同时它还能以更好的方式优化编译器代码字节?/span>
Q?/span>
private boolean isEligibleQ?/span>final int ageQ?/span>{ … }
七、在UPPERCASE中命?/span>public static final字段
?/span>UPPERCASE中命?/span>public static final字段Q通常也被UC为常量)。这个可以让你轻村分常量字D和局部变量之间的不同?/span>
不徏议:
public static final String testAccountNo = "12345678";
Q?/span>
public static final String TEST_ACCOUNT_NO = "12345678";,
八、组合成单一?/span>if语句
在尽可能多的情况下,把多?/span>if语句l合成单一?/span>if语句Q比如下面的代码Q?/span>
1.ifQ?/span>age > 18Q?/span>{
2. ifQ?/span> voted == falseQ?/span>{
3. // eligible to vote.
4. }
5.}
合ƈ成单一?/span>if语句Q?/span>
1.ifQ?/span>age > 18 && !votedQ?/span>{
2. // eligible to vote
3.}
九?/span>Switch应该?/span>default
始终l?/span>Switch语句ddefault.
十、用常量来避免重复定义相同的字W串?/span>
如果你在多个地方必须使用字符Ԍ那么使用帔R来避免重复定义拥有相同值的字符丌Ӏ?/span>
比如Q看下面的代码:
1.private void someMethodQ){
2. logger.logQ?/span>"My Application" + eQ;
3. …
4. …
5. logger.logQ?/span>"My Application" + fQ;
6.}
string literal"我的应用"可以作ؓ帔Rq且能在代码中用?/span>
1.public static final String MY_APP = "My Application";
2.
3.private void someMethodQ){
4. logger.logQ?/span>MY_APP + eQ;
5. …
6. …
7. logger.logQ?/span>MY_APP + fQ;
8.}
您正在看的文章来自疯狂Y件教育中?/span> www.fkjava.org
信息咨询Q?/span>Q564205990 星老师
2012q中国移动互联网大会上,Ƨ朋览器ȝ理宋麟在名ؓ“Ud互联|的未来”的主题演讲中表示Q新一代网l标?/span>HTML5对于Ud览器性能和用户体验的提升有重要意义,虽然目前国内HTML5存在一定虚火,但最晚到明年q中HTML5技术会向成熟。伴随着HTML5标准的普及,或将带来整个览器行业的重新z牌?/span>
“HTML5作ؓ一个技术而言Q是最W合互联|精的一Ҏ术?#8221;宋麟说。作Z个开攄|络标准Q?/span>HTML5h跨^台、多讑֤、及时更新等多项优势Q在l一?/span>HTML5标准下,Ud览器可以在不同q_、不同设备上实现一致的用户体验。对开发者和用户而言Q?/span>HTML5都能带来极大便利Q同ӞHTML5的开放性其不会被M一家企业垄断,有利于促q整个行业的良性发展?/span>
虽然HTML5目前存在性能不够完善、盈利模式不清晰{许多争议,但宋麟认?/span>HTML5与移动互联网的未来密切相养I伴随HTML5技术标准的成熟Q移动浏览器更好地承担q_的功能?/span>
从去q年底到今年q中Q国内主移动浏览器厂商先后推出支持HTML5标准的品,q展开?/span>HTML5跑分上的比拼?#8220;现阶D?/span>HTML5在国内有点被q度Ҏ?#8221;宋麟认ؓQ?#8220;主要表现在目?/span>HTML5技术无论是用户体验q是性能支持上都q不是十分成熟?#8221;作ؓHTML5标准的发明hQ?/span>OperaƧ朋与全球其他领先企业都?/span>HTML5研发作ؓ现阶D늚重点Q预计到明年q中Q?/span>HTML5标准得到初步的普及?/span>
谈及HTML5标准普及对移动互联网市场竞争带来的媄响,宋麟认ؓHTML5既是全行业的ZQ也会对现有市场格局带来冲击?#8220;变局中有Z跑赢Q也会有被淘汰?#8221;宋麟表示?/span> 您正在看的文章来自疯狂Y件教育中?/span> www.fkjava.org
信息咨询Q?/span>Q564205990 星老师
1.Java的环?/span>JDK(Java development Kit)
?/span>Sun公司httpQ?/span>//www.oracle.com的网上有各U版本的JdkQ供用户下蝲使用。安?/span>jdk后,一定要修改环境变量。就实际上而言Q说修改不如说是d环境变量。最后进?/span>cmd界面验证JDK首安装成功!若安装不成功Q?/span>oracle公司的网上也有一些列的解x案?/span>
2.Java的类?/span>
Java是大写敏感的一U语aQ只能以字母开_可以含有下划U和数字Q不能用关键字和保留字?/span>
Java 关键字列?/span> (依字母排?/span> ?/span>51l?/span>):
abstract, assert,boolean, break, byte, case, catch, char, class, const, continue, default, do, double, else, enum,extends, final, finally, float, for, if, implements, import, instanceof, int, interface, long, native, new, package, private, protected, public, return, short, static, strictfp, super, switch, synchronized, this, throw, throws, transient, try, void, volatile, while
Java 保留字列?/span> (依字母排?/span> ?/span>14l?/span>) : Java保留字是指现?/span>Java版本未使用 但以后版本可能会作ؓ关键字用?/span>
byValue, cast, false, future, generic, inner, operator, outer, rest, true, var Q?/span> goto Q?/span>const,null
cd在用中习惯每个单词首字母大写。且于文件名相同?/span>
3.Java的数据类?/span>
一般而言Q?/span>Java的数据类型可分ؓ基本cd和引用类?/span>
基本cdQ?/span>
boolean 布尔|作二元判?/span> true, false
byte 8位有W号整数 最?/span>-128Q最大?/span>127
short 16位有W号整数 最?/span>-32768Q最大?/span>32767
int 32位有W号整数 最?/span>-2147483648Q最大?/span>2147483647
long 64位有W号整数 最?/span>-9223372036854775808Q最大?/span> 9223372036854775807
float 32位QҎ 1.4E-45~3.4028235E38
double 64位QҎ 4.9E-324~1.7976931348623157E308
char 16?/span>Unicode字符 不适用
基本cdQ?/span>Primitive TypesQ也UC内置cdQ是其他cd的基。所有的其他cdQ包?/span>Java核心库和用户自定义类型)都是通过基本cd扩展而来的。这些类型是我们描述对象最基本的方式。比如:判断是否使用booleanQ衡量大、长度用各U整型(包括short, int, longQ和点敎ͼfloat?/span>doubleQ;表达字符使用charQ而处理二q制数据块?/span>byte?/span>
引用cd
有数l和对象Q究其根本数l也是对?/span>
最后不得不提一?/span>String?/span>
String s="abc";//s不ؓ对象
String s=new String("abc");//sZ个对?/span>
4.对象与类
c:cM于生物界的门U目U属U的分类Q在Java语言中,只有c这个概念,而可以通过父类和子cȝ方式来表达这U层ơ家哪的关系。比如,我们可以说食物是一个类Q而面食就是一个子cR?/span>
对象Q就像是一个类的一个实例,比如我们说电脑,q就是一个类Q泛指电脑这cM西,而我们说Q这台电脑,q就是一个实例了Q就是一个对象。当ӞcM可以是看不见怸着的东西,比如说语a是一个类Q而中国普通话是一个对象?/span>
cd 对象?/span>=new cdQ)Q?/span>//实例化对象的格式
MQ类相当于一个概念,而类是q个概念下的一个实体?/span>
5.参数传?/span>
Java中参C递的方式?/span>C中一P可分Zc:g递和引用传?/span>
g?/span>
int a=10;//定义一个变?/span>
fun b=new fun();//假设已有一个类?/span>fun,实例化一个对?/span>b;
b.function(a);//?/span>a的g递给b的方?/span>
g递中Q只会传递原有变量的|传递之后,会有一块新的你内存存储变量|其后的一切动作均与原来变量无兟?/span>
引用传?/span>
fun f1=new fun();//实例化一个对?/span>b
fun f2=new fun();//实例化一个对?/span>b
f1=f2;//?/span>f2的Dl?/span>f1
引用传递中f1Q?/span>f2相当?/span>C中指针,分别指向一个对象的首地址?/span>f1=f2则是?/span>f2指向的地址赋给f1。传递了一个地址?/span>
6.构造方?/span>
构造方法是在实例化对象Ӟql自动运行的函数Q且只运行一ơ。每一个对象均有其构造方法,pȝ自动为类配有一个无参的构造方法,若程序员自己写有构造方法,则系l的构造方法失效?/span>
7.Ҏ的重?/span>
public class student{
public void student(){};
public void student(Book book){};
public void student(Book book,Computer computer){};
}
q里有三个方法的名字相同Q可是他们却可以执行不用的功能,只要参数的个敎ͼcdQ次序不同就可以写出一个新的名字相同的Ҏ。这是一U重载,当然前面所提到的构造方法,也可以重载?/span>
8.this关键?/span>
public class student{
String name;
public void setName(String name){
this.name=name;
}
}
q里?/span>this关键字就指向cȝ头。不同的cȝthis关键字指向自w的头?/span>
您正在看的文章来自疯狂Y件教育中?/span> www.fkjava.org
信息咨询Q?/span>Q 564205990 星老师
package sy;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
public class PanelTest extends JPanel {
public BufferedImage image;
@Override
protected void paintComponent(Graphics g) {
// TODO Auto-generated method stub
super.paintComponent(g);
BufferedImage subImage=this.image.getSubimage(30, 30, 100, 100);
g.drawImage(subImage,100,100,100,100,null);
int color_point=subImage.getRGB(24, 4);
Color color=new Color(color_point);
System.out.println(color_point);
System.out.print(color.getGreen());
}
public PanelTest()
{
try {
this.image=ImageIO.read(new File("D:/black.jpg"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
this.setSize(300, 200);
this.setLocation(100, 100);
this.setBorder(BorderFactory.createTitledBorder("title"));
// repaint();
}
}
Java深入C定程?/span>,׃可避免的到设计模式q一概念,了解设计模式,自己?/span>java中的接口或抽象类应用有更q理解.设计模式?/span>java的中型系l中应用q泛,遵@一定的~程模式,才能使自q代码便于理解,易于交流,Command(命o模式)模式是比较常用的一个模?/span>.
Command命o模式: Command模式通过被称?/span>Command的类装了对目标对象的调用行Z及调用参数。将一个请求封装ؓ一个对象,从而你不同的h对客戯行参数化Q对h排队或记录请求日志,以及支持可撤销的操作?/span>
优点: 解耦了调用者和接受者之间联pR调用者调用一个操作,接受者接受请求执行相应的动作Q因Z?/span>Command模式解耦,调用者无需知道接受者Q何接口?/span>
~点: 造成出现q多的具体命令类
在此写了7?/span>javacL描述说明Command设计模式的实现方式;
1?/span> Control.java 命o控制者对象类 (命o控制器在q里臛_重要Q相当于遥控器的作用)
2?/span> Tv.java 命o接收者对象类
3?/span> Command.java 命o接口c?/span>
4?/span> CommandChannel.java 频道切换命oc?/span>
5?/span> CommandOff.java x命oc?/span>
6?/span> CommandOn.java 开机命令类
7?/span> CommandTest.java 带有mainҎ的测试类(命o发送?/span>)
=============== 1?/span> Control.java
package command;
//命o控制?/span>
public class Control {
private Command onCommand, offCommand, changeChannel;
public Control(Command on, Command off, Command channel) {
onCommand = on;
offCommand = off;
changeChannel = channel;
}
public void turnOn() {
onCommand.execute();
}
public void turnOff() {
offCommand.execute();
}
public void changeChannel() {
changeChannel.execute();
}
}
=============== 1 end
=============== 2?/span> Tv.java
package command;
//命o接收?/span>
public class Tv {
public int currentChannel = 0;
public void turnOn() {
System.out.println("The televisino is on.");
}
public void turnOff() {
System.out.println("The television is off.");
}
public void changeChannel(int channel) {
this.currentChannel = channel;
System.out.println("Now TV channel is " + channel);
}
}
=============== 2 end
=============== 3?/span> Command.java
package command;
//命o接口
public interface Command {
void execute();
}
=============== 3 end
=============== 4?/span> CommandChannel.java
package command;
//频道切换命o
public class CommandChannel implements Command {
private Tv myTv;
private int channel;
public CommandChannel(Tv tv, int channel) {
myTv = tv;
this.channel = channel;
}
public void execute() {
myTv.changeChannel(channel);
}
}
=============== 4 end
=============== 5?/span> CommandOff.java
package command;
//x命o
public class CommandOff implements Command {
private Tv myTv;
public CommandOff(Tv tv) {
myTv = tv;
}
public void execute() {
myTv.turnOff();
}
}
=============== 5 end
=============== 6?/span> CommandOn.java
package command;
//开机命?/span>
public class CommandOn implements Command {
private Tv myTv;
public CommandOn(Tv tv) {
myTv = tv;
}
public void execute() {
myTv.turnOn();
}
}
=============== 6 end
=============== 7?/span> CommandTest.java
package command;
//命o发送?/span>
public class CommandTest{
public static void main(String[] args){
//命o接收?/span>
Tv myTv = new Tv();
//开机命?/span>
CommandOn on = new CommandOn(myTv);
//x命o
CommandOff off = new CommandOff(myTv);
//频道切换命o
CommandChannel channel = new CommandChannel(myTv, 2);
//命o控制对象
Control control = new Control( on, off, channel);
//开?/span>
control.turnOn();
//切换频道
control.changeChannel();
//x
control.turnOff();
}
}
=============== 7 end
Command模式通常可应用到以下场景Q?/span>
1 Multi-level undoQ多U?/span>undo操作Q?/span>
如果pȝ需要实现多U回退操作Q这时如果所有用L操作都以command对象的Ş式实玎ͼpȝ可以
单地?/span>stack来保存最q执行的命oQ如果用户需要执?/span>undo操作Q系l只需单地popup一个最q的
command对象然后执行它的undo()Ҏ既可?/span>
2 Transactional behaviorQ原子事务行为)
借助command模式Q可以简单地实现一个具有原子事务的行ؓ。当一个事务失败时Q往往需要回退到执
行前的状态,可以借助command对象保存q种状态,单地处理回退操作?/span>
3 Progress barsQ状态条Q?/span>
假如pȝ需要按序执行一pd的命令操作,如果每个command对象都提供一?/span>
getEstimatedDuration()ҎQ那么系l可以简单地评估执行状态ƈ昄出合适的状态条?/span>
4 WizardsQ导航)
通常一个用多?/span>wizard面来共同完成一个简单动作。一个自然的Ҏ是用一?/span>command对象来封
?/span>wizardq程Q该command对象在第一?/span>wizard面昄时被创徏Q每?/span>wizard面接收用户输入q设
|到?/span>command对象中,当最后一?/span>wizard面用户按下“Finish”按钮Ӟ可以单地触发一个事?/span>
调用execute()Ҏ执行整个动作。通过q种ҎQ?/span>commandcM包含M跟用L面有关的代码Q可?/span>
分离用户界面与具体的处理逻辑?/span>
5 GUI buttons and menu itemsQ?/span>GUI按钮与菜单条{等Q?/span>
Swingpȝ里,用户可以通过工具条按钮,菜单按钮执行命oQ可以用command对象来封装命令的执行?/span>
6 Thread poolsQ线E池Q?/span>
通常一个典型的U程池实现类可能有一个名?/span>addTask()?/span>publicҎQ用来添加一工作Q务到d
队列中。该d队列中的所有Q务可以用command对象来封装,通常q些command对象会实C个通用?/span>
接口比如java.lang.Runnable?/span>
7 Macro recordingQ宏U录Q?/span>
可以?/span>command对象来封装用L一个操作,q样pȝ可以单通过队列保存一pd?/span>command对象的状
态就可以记录用户的连l操作。这样通过执行队列中的command对象Q就可以完成"Play back"操作了?/span>
8 Networking
通过|络发?/span>command命o到其他机器上q行?/span>
9 Parallel ProcessingQƈ发处理)
当一个调用共享某个资源ƈ被多个线Eƈ发处理时?/span>
您正在看的文章来自疯狂Y件教育中?/span> www.fkjava.org
信息咨询Q?/span>Q564205990 星老师
在现实工作中Q我们常帔R要保存一些系l配|信息,大家一般都会选择配置文g来完成,本文ҎW者工作中用到的读取配|文件的Ҏ小ȝ一下,主要叙述的是springd配置文g的方法?/span>
一、读?/span>xml配置文g
(一)新徏一?/span>java bean
package chb.demo.vo;
public class HelloBean {
private String helloWorld;
public String getHelloWorld() {
return helloWorld;
}
public void setHelloWorld(String helloWorld) {
this.helloWorld = helloWorld;
}
}
(?/span>)构造一个配|文?/span>
Hello!chb!
(?/span>)dxml文g
1.利用ClassPathXmlApplicationContext
ApplicationContext context = new ClassPathXmlApplicationContext("beanConfig.xml");
HelloBean helloBean = (HelloBean)context.getBean("helloBean");
System.out.println(helloBean.getHelloWorld());
2.利用FileSystemResourced
Resource rs = new FileSystemResource("D:/software/tomcat/webapps/springWebDemo/WEB-INF/classes/beanConfig.xml");
BeanFactory factory = new XmlBeanFactory(rs);
HelloBean helloBean = (HelloBean)factory.getBean("helloBean");
System.out.println(helloBean.getHelloWorld());
值得注意的是Q利?/span>FileSystemResourceQ则配置文g必须攑֜project直接目录下,或者写明绝对\径,否则׃抛出找不到文件的异常
二、读?/span>properties配置文g
q里介绍两种技术:利用springdproperties 文g和利?/span>java.util.Propertiesd
(一)利用springdproperties 文g
我们q利用上面的HelloBean.java文gQ构造如?/span>beanConfig.properties文gQ?/span>
helloBean.class=chb.demo.vo.HelloBean
helloBean.helloWorld=Hello!chb!
属性文件中?/span>"helloBean"名称xBean的别名设定,.class用于指定cL源?/span>
然后利用org.springframework.beans.factory.support.PropertiesBeanDefinitionReader来读取属性文?/span>
BeanDefinitionRegistry reg = new DefaultListableBeanFactory();
PropertiesBeanDefinitionReader reader = new PropertiesBeanDefinitionReader(reg);
reader.loadBeanDefinitions(new ClassPathResource("beanConfig.properties"));
BeanFactory factory = (BeanFactory)reg;
HelloBean helloBean = (HelloBean)factory.getBean("helloBean");
System.out.println(helloBean.getHelloWorld());
(?/span>)利用java.util.Propertiesd属性文?/span>
比如Q我们构造一?/span>ipConfig.properties来保存服务器ip地址和端口,如:
ip=192.168.0.1
port=8080
则,我们可以用如下程序来获得服务器配|信息:
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("ipConfig.properties");
Properties p = new Properties();
try {
p.load(inputStream);
} catch (IOException e1) {
e1.printStackTrace();
}
System.out.println("ip:"+p.getProperty("ip")+",port:"+p.getProperty("port"));
您正在看的文章来自疯狂Y件教育中?/span> www.fkjava.org
信息咨询Q?/span>Q564205990 星老师
1,byte[]的长?/span>
写了一个从文g里读字符串的函数Q?/span>
public static String readFileQ?/span>String fFileNameQ?/span>{//, String fEncodingQ?/span> {
char[] buffer = new char[1024];
StringBuilder text = new StringBuilderQ)Q?/span>
InputStreamReader reader = null;
try {
reader = new InputStreamReaderQ?/span>new FileInputStreamQ?/span>fFileNameQ)Q?/span>
while Q?/span>reader.readQ?/span>buffer, 0, 1024Q!=-1Q?/span>{
text.appendQ?/span>bufferQ; <==有错
}
}
catchQ?/span>Exception eQ?/span>{
e.printStackTraceQ)Q?/span>
}
finally{
ifQ?/span>reader!=nullQ?/span>{
try {
reader.closeQ)Q?/span>
} catch Q?/span>IOException eQ?/span> {
// TODO Auto-generated catch block
e.printStackTraceQ)Q?/span>
}
}
}
return text.toStringQ)Q?/span>
}
_看q段代码没有问题。但是读出的字符L实际要多。问题在text.appendQ?/span>bufferQ?/span> buffer是一?/span>1024?/span>char数组。每?/span>append固定?/span>1024?/span>char.Ҏ好了?/span>
reader = new InputStreamReaderQ?/span>new FileInputStreamQ?/span>fFileNameQ)Q?/span>
int readed;
while Q(readed = reader.readQ?/span>buffer, 0, 1024Q)Q?/span>=-1Q?/span>{
text.appendQ?/span>new StringQ?/span>buffer, 0, readedQ)Q?/span>
}
2,优先U的错误
Log.dQ?/span>TAG, "location="+where+", "+locationService==null?"null":locationService.getLocationQ)Q;
q行代码的本意是如果locationService==null,p?/span>"null",避免NullPointerException.但实际上仍然发生NullPointerException.原来"+"的优先大于"?",所以上面代码实际上是:
Log.dQ?/span>TAG, Q?/span>"location="+where+", "+locationServiceQ?/span>==null?"null":locationService.getLocationQ)Q?/span>
括号里的当然不会?/span>null.Ҏ
Log.dQ?/span>TAG, "location="+where+", "+Q?/span>locationService==null?"null":locationService.getLocationQ)Q)Q?/span>
好了?/span>
您正在看的文章来自疯狂Y件教育中?/span> www.fkjava.org
信息咨询Q?/span>Q564205990 星老师
<%@ page contentType=“image/jpeg” … %>
然后你需要创Z?/span>BufferedImagel制你的动态图像:
BufferedImage image = new BufferedImageQ?/span>width,height, BufferedImage.TYPE_INT_RGBQ;
创徏完一?/span>BufferedImage后,你需要得到图形环境进行绘Ӟ一?/span>Graphics或?/span>Graphics2D对象Q?/span>
Graphics g = image.getGraphicsQ)Q?/span>
// or Graphics2d g2d = image.createGraphicsQ)Q?/span>
从现在v你就可以l制囑փ内容了。对囑Ş环境l制׃dBufferedImage.最开始这个图像都是黑色的Q因此用你希望的背景颜色填充囑փ是一个不错的LQ然后,当你完成囑փ的绘Ӟ你需?/span>dispose囑Ş环境Q?/span>
g.disposeQ)Q?/span>
// or g2d.disposeQ)Q?/span>
一旦完成图像的l制Q你?/span>response中返回那个图像。你可以使用非标准的com.sun.image.codec.jpeg包中?/span>JPEGImageEncodercȝ码图像,或者如果你使用JDK1.4,你可以用标准的ImageIOcR在使用JPEGImageEncoder时有一个技巧,你必MServletResponse取来ServletOutputStream而不能用隐含的JSP输出变量out.
ServletOutputStream sos = response.getOutputStreamQ)Q?/span>
JPEGImageEncoder encoder =JPEGCodec.createJPEGEncoderQ?/span>sosQ;
encoder.encodeQ?/span>imageQ;
// or ImageIO.writeQ?/span>image, “JPEG”, outQ;
q里有一个从所有的可能Ҏ中(例如g.disposeQ)Q或?/span>g2d.disposeQ)Q)选取的一个完整的范例。这个例子?/span>Graphics对象l制一个随机的多边形,囑փ通过JPEGImageEncoderl制Q你可以自由讄多边形的点数得到更复杂的ŞӞ换言之,有更多顶点和辏V?/span>
要运行这个范例,从“<%@”到最后一?#8220;%>”之间?/span>jsp代码攑ֈ一个名?/span>image.jsp的文件中Q将那个文g攑ֈ你的web服务器可以找到的地方?/span>
您正在看的文章来自疯狂Y件教育中?/span> www.fkjava.org
信息咨询Q?/span>Q564205990 星老师