国士时代软件

时代软件  时间:2021-05-06  阅读:()
《如何成为AndroidAndroidAndroidAndroid高手》官方讨论群:65882321国士工作室电话::::15711060468Email:Email:Email:Email:guoshiandroid@gmail.
com博客::::http://www.
cnblogs.
com/guoshiandroid/关于国士工作室我们(国士工作室)是一支专注于Android平台企业级应用开发的技术团队,对娱乐多媒体应用有着深刻的理解及研发能力,致力服务于企业用户.
为音视频等娱乐多媒体网站、门户网站、SNS、论坛、电子商务等传统网络应用向移动互联网发展提供解决方案和技术支持,为企业提供Android培训服务等多种业务.
我们尤其擅长于提供从Android客户端到服务端的一站式解决方案和技术支持,服务端可以采用JavaEE,也可以采用轻量级流行的LAMP技术体系.
目前,研发出了比KU6、优酷更加强大和完善的Android视频网站娱乐多媒体客户端软件,并在持续升级中.
目前,我们正在务实而卓有成效的与音视频等娱乐多媒体网站、门户网站、SNS、论坛、电子商务等传统网络服务商合作,发展迅速,渴望有志之士的加入,和我们一起为成为世界最好的Android软件开发和咨询、培训公司而奋斗,为移动互联网和智能手机时代贡献力量!
联系我们电话:15711060468Email:Email:Email:Email:guoshiandroid@gmail.
com博客::::http://www.
cnblogs.
com/guoshiandroid/《如何成为AndroidAndroidAndroidAndroid高手》官方讨论群:65882321国士工作室电话::::15711060468Email:Email:Email:Email:guoshiandroid@gmail.
com博客::::http://www.
cnblogs.
com/guoshiandroid/注意:该文档参考和使用了网络上的很多免费开放的内容,并以免费开放的方式发布,希望为移动互联网和智能手机时代贡献绵薄之力!
可以随意转载,但不得使用该文档谋利.
另外:国士工作室已免费发布原创教程《大话企业级Android开发》,请访问国士工作室博客http://www.
cnblogs.
com/guoshiandroid/获取教程.
2007年底Google宣布举办总奖金高达1000万美元的开发者大奖赛,鼓励程序开发者在Android上写出实用而又具有创意的应用程序;2009年5月27日,在Google的I/O开发者聚会上,Google发布了总奖金接近2000万美元的第二次大奖赛的消息,开发者们开始了新一轮的较量;Android是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件.
Android一出生就被打上了富二代的胎记,不仅仅是因为诞生于当今的网络霸主Google,更主要还有一个空前强大和壮观的开放手机联盟OHA(OpenHandsetAlliance)提供全力的支持.
OHA是什么OHA涵盖了中国移动、T-Mobile、Sprint等移动运营商,包括HTC、Motolora、三星等手机制造商,有Google为代表的手机软件商,还有Inter、Nvidia为标志的底层硬件厂商和AstonishingTribe等商业运作公司,该组织声称组织的所有成员都会基于Android来开发新的手机业务.
但是,要成为Android高手并不是一件容易的事情.
并不是很多人想象的能够飞快的写出几行漂亮的代码去解决一些困难的问题就是Android高手了.
真正的Android高手需要考虑的问题远远不是写些漂亮的代码就足够的.
下面是成为一名真正的Android高手必须掌握和遵循的一些准则:1,学会懒惰2,精通Android体系架构、MVC、常见的设计模式、控制反转(IoC)3,编写可重用、可扩展、可维护、灵活性高的代码4,高效的编写高效的代码5,学会至少一门服务器端开发技术一:学会懒惰没搞错吧竟然让程序开发人员学会懒惰程序开发人员可能是世界上最为忙碌的一类人啦!
对,没错,学会懒惰!
正因为程序开发人员忙碌,正因为程序开发人员可能会在客户无限变化的需求之下没日没夜的加班,所以要学会懒惰,这样,你就可以把更多的时《如何成为AndroidAndroidAndroidAndroid高手》官方讨论群:65882321国士工作室电话::::15711060468Email:Email:Email:Email:guoshiandroid@gmail.
com博客::::http://www.
cnblogs.
com/guoshiandroid/间浪费在美好的事物身上!
如何懒惰:1,Don'tReinventtheWheel(不要重复发明轮子).
2,InventingtheWheel(发明轮子).
1,Don'tReinventtheWheel(不要重复发明轮子).
"轮子理论",也即"不要重复发明轮子",这是西方国家的一句谚语,原话是:Don'tReinventtheWheel.
"不要重复发明轮子"意思是企业中任何一项工作实际上都有人做过,我们所需要做的就是找到做过这件事情的人.
拿到软件领域中就是指有的项目或功能,别人已经做过,我们需要用的时候,直接拿来用即可,而不要重新制造.
Android号称是首个为移动终端打造的真正开放和完整的移动软件.
Android发布后不久Google公司就发布了操作系统核心(Kernel)与部分驱动程序的源代码,到目前位置除了GoogleMap等Google公司的核心组件没有开放源代码外,Android基本完成了完全的开源,这就极大的促进了Android的普及和移植.
受到Android开放行为和开源精神的影响,在世界各地,有成千上万的程序员喜欢和别人分享自己的聪明才智和自己编写的代码.
你可以在Google的Android讨论组或者Google搜索引擎上搜索到很多优秀的程序代码.
这样做并不是鼓励大家整天等着让别人为你编写代码,而是你可以"站在伟人的肩膀上",充分发扬"拿来主义",聪明地应用别人的程序代码可以节省你大量的时间.
下面笔者为大家介绍几个通用的类,这些类来自笔者平日的收集,如果你能把它们加入到你自己的类库中,迟早你会发现自己在进行Android开发的时候受益无穷:1)从输入流中获取数据并以字节数组返回,这种输入流可以来自Android本地也可以来自网络.
importjava.
io.
ByteArrayOutputStream;importjava.
io.
InputStream;publicclassStreamTool{/***从输入流获取数据*@paraminputStream*@return*@throwsException*/《如何成为AndroidAndroidAndroidAndroid高手》官方讨论群:65882321国士工作室电话::::15711060468Email:Email:Email:Email:guoshiandroid@gmail.
com博客::::http://www.
cnblogs.
com/guoshiandroid/publicstaticbyte[]readInputStream(InputStreaminputStream)throwsException{byte[]buffer=newbyte[1024];//你可以根据实际需要调整缓存大小intlen=-1;ByteArrayOutputStreamoutSteam=newByteArrayOutputStream();while((len=inputStream.
read(buffer))!
=-1){outSteam.
write(buffer,0,len);}outSteam.
close();inputStream.
close();returnoutSteam.
toByteArray();}}2)通过Android客户端上传数据到服务器:可以上传简单的表单,也可以方便的上传带有的文件,此类远远比Android自身的HttpClient更高效、更易于使用:importjava.
io.
DataOutputStream;importjava.
io.
InputStream;importjava.
net.
HttpURLConnection;importjava.
net.
URL;importjava.
net.
URLEncoder;importjava.
util.
ArrayList;importjava.
util.
List;importjava.
util.
Map;importorg.
apache.
http.
HttpResponse;importorg.
apache.
http.
NameValuePair;importorg.
apache.
http.
client.
HttpClient;importorg.
apache.
http.
client.
entity.
UrlEncodedFormEntity;importorg.
apache.
http.
client.
methods.
HttpPost;importorg.
apache.
http.
impl.
client.
DefaultHttpClient;importorg.
apache.
http.
message.
BasicNameValuePair;《如何成为AndroidAndroidAndroidAndroid高手》官方讨论群:65882321国士工作室电话::::15711060468Email:Email:Email:Email:guoshiandroid@gmail.
com博客::::http://www.
cnblogs.
com/guoshiandroid/publicclassHttpRequester{/***直接通过HTTP协议提交数据到服务器,实现如下面表单提交功能:**@paramactionUrl上传路径(注:避免使用localhost或127.
0.
0.
1这样的路径测试,因为它会指向手机模拟器,你可以使用http://www.
itcast.
cn或http://192.
168.
1.
10:8080这样的路径测试)*@paramparams请求参数key为参数名,value为参数值*@paramfile上传文件*/publicstaticStringpost(StringactionUrl,Mapparams,FormFile[]files){try{StringBOUNDARY7d4a6d158c9";//数据分隔线StringMULTIPART_FORM_DATA="multipart/form-data";URLurl=newURL(actionUrl);HttpURLConnectionconn=(HttpURLConnection)url.
openConnection();conn.
setConnectTimeout(5*1000);conn.
setDoInput(true);//允许输入conn.
setDoOutput(true);//允许输出conn.
setUseCaches(false);//不使用Cache《如何成为AndroidAndroidAndroidAndroid高手》官方讨论群:65882321国士工作室电话::::15711060468Email:Email:Email:Email:guoshiandroid@gmail.
com博客::::http://www.
cnblogs.
com/guoshiandroid/conn.
setRequestMethod("POST");conn.
setRequestProperty("Connection","Keep-Alive");conn.
setRequestProperty("Charset","UTF-8");conn.
setRequestProperty("Content-Type",MULTIPART_FORM_DATA+";boundary="+BOUNDARY);StringBuildersb=newStringBuilder();for(Map.
Entryentry:params.
entrySet()){//构建表单字段内容sb.
append("--");sb.
append(BOUNDARY);sb.
append("\r\n");sb.
append("Content-Disposition:form-data;name=\""+entry.
getKey(r\n\r\n");sb.
append(entry.
getValue());sb.
append("\r\n");}DataOutputStreamoutStream=newDataOutputStream(conn.
getOutputStream());outStream.
write(sb.
toString().
getBytes());//发送表单字段数据for(FormFilefile:files){//发送文件数据StringBuildersplit=newStringBuilder();split.
append("--");split.
append(BOUNDARY);split.
append("\r\n");split.
append("Content-Disposition:form-data;name=\""+file.
getFormname()+"\";filename=\""+file.
getFilname(r\n");split.
append("Content-Type:"+file.
getContentType()+"\r\n\r\n");outStream.
write(split.
toString().
getBytes());if(file.
getInStream()!
=null){byte[]buffer=newbyte[1024];《如何成为AndroidAndroidAndroidAndroid高手》官方讨论群:65882321国士工作室电话::::15711060468Email:Email:Email:Email:guoshiandroid@gmail.
com博客::::http://www.
cnblogs.
com/guoshiandroid/intlen=0;while((len=file.
getInStream().
read(buffer))!
=-1){outStream.
write(buffer,0,len);}file.
getInStream().
close();}else{outStream.
write(file.
getData(),0,file.
getData().
length);}outStream.
write("\r\n".
getBytes());}byte[]end_dataBOUNDARY+"--\r\n").
getBytes();//数据结束标志outStream.
write(end_data);outStream.
flush();intcah=conn.
getResponseCode();if(cah!
=200)thrownewRuntimeException("请求url失败");InputStreamis=conn.
getInputStream();intch;StringBuilderb=newStringBuilder();while((ch=is.
read())!
=-1){b.
append((char)ch);}outStream.
close();conn.
disconnect();returnb.
toString();}catch(Exceptione){thrownewRuntimeException(e);}}《如何成为AndroidAndroidAndroidAndroid高手》官方讨论群:65882321国士工作室电话::::15711060468Email:Email:Email:Email:guoshiandroid@gmail.
com博客::::http://www.
cnblogs.
com/guoshiandroid//***提交数据到服务器*@paramactionUrl上传路径(注:避免使用localhost或127.
0.
0.
1这样的路径测试,因为它会指向手机模拟器,你可以使用http://www.
itcast.
cn或http://192.
168.
1.
10:8080这样的路径测试)*@paramparams请求参数key为参数名,value为参数值*@paramfile上传文件*/publicstaticStringpost(StringactionUrl,Mapparams,FormFilefile){returnpost(actionUrl,params,newFormFile[]{file});}publicstaticbyte[]postFromHttpClient(Stringpath,Mapparams,Stringencode)throwsException{Listformparams=newArrayList();//用于存放请求参数for(Map.
Entryentry:params.
entrySet()){formparams.
add(newBasicNameValuePair(entry.
getKey(),entry.
getValue()));}UrlEncodedFormEntityentity=newUrlEncodedFormEntity(formparams,"UTF-8");HttpPosthttppost=newHttpPost(path);httppost.
setEntity(entity);HttpClienthttpclient=newDefaultHttpClient();//看作是浏览器HttpResponseresponse=httpclient.
execute(httppost);//发送post请求returnStreamTool.
readInputStream(response.
getEntity().
getContent());}《如何成为AndroidAndroidAndroidAndroid高手》官方讨论群:65882321国士工作室电话::::15711060468Email:Email:Email:Email:guoshiandroid@gmail.
com博客::::http://www.
cnblogs.
com/guoshiandroid//***发送请求*@parampath请求路径*@paramparams请求参数key为参数名称value为参数值*@paramencode请求参数的编码*/publicstaticbyte[]post(Stringpath,Mapparams,Stringencode)throwsException{//Stringparams="method=save&name="+URLEncoder.
encode("老毕","UTF-8")+"&age=28&";//需要发送的参数StringBuilderparambuilder=newStringBuilder("");if(params!
=null&&!
params.
isEmpty()){for(Map.
Entryentry:params.
entrySet()){parambuilder.
append(entry.
getKey()).
append("=").
append(URLEncoder.
encode(entry.
getValue(),encode)).
append("&");}parambuilder.
deleteCharAt(parambuilder.
length()-1);}byte[]data=parambuilder.
toString().
getBytes();URLurl=newURL(path);HttpURLConnectionconn=(HttpURLConnection)url.
openConnection();conn.
setDoOutput(true);//允许对外发送请求参数conn.
setUseCaches(false);//不进行缓存conn.
setConnectTimeout(5*1000);conn.
setRequestMethod("POST");//下面设置http请求头conn.
setRequestProperty("Accept","image/gif,image/jpeg,image/pjpeg,image/pjpeg,application/x-shockwave-flash,application/xaml+xml,application/vnd.
ms-xpsdocument,application/x-ms-xbap,application/x-ms-application,application/vnd.
ms-excel,application/vnd.
ms-powerpoint,application/msword,*/*");《如何成为AndroidAndroidAndroidAndroid高手》官方讨论群:65882321国士工作室电话::::15711060468Email:Email:Email:Email:guoshiandroid@gmail.
com博客::::http://www.
cnblogs.
com/guoshiandroid/conn.
setRequestProperty("Accept-Language","zh-CN");conn.
setRequestProperty("User-Agent","Mozilla/4.
0(compatible;MSIE8.
0;WindowsNT5.
2;Trident/4.
0;.
NETCLR1.
1.
4322;.
NETCLR2.
0.
50727;.
NETCLR3.
0.
04506.
30;.
NETCLR3.
0.
4506.
2152;.
NETCLR3.
5.
30729)");conn.
setRequestProperty("Content-Type","application/x-www-form-urlencoded");conn.
setRequestProperty("Content-Length",String.
valueOf(data.
length));conn.
setRequestProperty("Connection","Keep-Alive");//发送参数DataOutputStreamoutStream=newDataOutputStream(conn.
getOutputStream());outStream.
write(data);//把参数发送出去outStream.
flush();outStream.
close();if(conn.
getResponseCode()==200){returnStreamTool.
readInputStream(conn.
getInputStream());}returnnull;}}2,InventingtheWheel(发明轮子).
发明轮子不错,发明轮子!
我们不仅要发明轮子,更要成为努力成为世界上发明轮子的主导力量,唯有这样,才能谈的上中华名族软件大业的真正强大.
在Android,要发明轮子,就是我们要主动的是解决一些世界上他人未解决的难题或者创造新的编程框架或者对Android进行深度的改造以适合自己的业务发展需要.
Google发布了Android后不久,中国移动便投入了大量的人力和物力,在Android的基础上创建融入自己业务并开发、封装了新的功能的和框架的OMS,这是Android中发明轮子的一个非常重要的例子.
可能你会说,这发明轮子也太难了吧,别急,我们慢慢来,开发一个框架特定领域的框架吧!
你可能会一脸无辜的说,开发一个框架是说的那么容易吗当然不是啦.
但是也并非不可能,《如何成为AndroidAndroidAndroidAndroid高手》官方讨论群:65882321国士工作室电话::::15711060468Email:Email:Email:Email:guoshiandroid@gmail.
com博客::::http://www.
cnblogs.
com/guoshiandroid/首先,我们分析一下框架的魅力的源泉,看看Spring、Struts等JavaEE框架,在看看.
NET框架,当然也可以看看发展的如火如荼、层出不穷的PHP框架,她们的强大和魅力的源泉都在于:IoC(InversionofControl).
Don'tcallus,we'llcallyou(别找我,我会来找你的).
我们下面就自己发明一个轮子的模型,实际展示一个框架最初核心的类,让你一饱眼福:1)下面的类是文件下载类,支持文件的多线程断点续传,使用该类的即可安全、高效的下载任何类型的二进制文件:importjava.
io.
File;importjava.
io.
FileInputStream;importjava.
io.
FileOutputStream;importjava.
io.
RandomAccessFile;importjava.
net.
HttpURLConnection;importjava.
net.
URL;importjava.
util.
LinkedHashMap;importjava.
util.
Map;importjava.
util.
Properties;importjava.
util.
UUID;importjava.
util.
concurrent.
ConcurrentHashMap;importjava.
util.
regex.
Matcher;importjava.
util.
regex.
Pattern;importcn.
itcast.
service.
FileService;importandroid.
content.
Context;importandroid.
util.
Log;/***文件下载器*/publicclassFileDownloader{privateContextcontext;privateFileServicefileService;《如何成为AndroidAndroidAndroidAndroid高手》官方讨论群:65882321国士工作室电话::::15711060468Email:Email:Email:Email:guoshiandroid@gmail.
com博客::::http://www.
cnblogs.
com/guoshiandroid/privatestaticfinalStringTAG="FileDownloader";/*已下载文件大小*/privateintdownloadSize=0;/*原始文件大小*/privateintfileSize=0;/*线程数*/privateDownloadThread[]threads;/*下载路径*/privateURLurl;/*本地保存文件*/privateFilesaveFile;/*下载记录文件*/privateFilelogFile;/*缓存各线程最后下载的位置*/privateMapdata=newConcurrentHashMap();/*每条线程下载的大小*/privateintblock;privateStringdownloadUrl;//下载路径/***获取线程数*/publicintgetThreadSize(){returnthreads.
length;}/***获取文件大小*@return*/publicintgetFileSize(){《如何成为AndroidAndroidAndroidAndroid高手》官方讨论群:65882321国士工作室电话::::15711060468Email:Email:Email:Email:guoshiandroid@gmail.
com博客::::http://www.
cnblogs.
com/guoshiandroid/returnfileSize;}/***累计已下载大小*@paramsize*/protectedsynchronizedvoidappend(intsize){downloadSize+=size;}/***更新指定线程最后下载的位置*@paramthreadId线程id*@parampos最后下载的位置*/protectedvoidupdate(intthreadId,intpos){this.
data.
put(threadId,pos);}/***保存记录文件*/protectedsynchronizedvoidsaveLogFile(){this.
fileService.
update(this.
downloadUrl,this.
data);}/***构建文件下载器*@paramdownloadUrl下载路径*@paramfileSaveDir文件保存目录*@paramthreadNum下载线程数*/publicFileDownloader(Contextcontext,StringdownloadUrl,FilefileSaveDir,int《如何成为AndroidAndroidAndroidAndroid高手》官方讨论群:65882321国士工作室电话::::15711060468Email:Email:Email:Email:guoshiandroid@gmail.
com博客::::http://www.
cnblogs.
com/guoshiandroid/threadNum){try{this.
context=context;this.
downloadUrl=downloadUrl;fileService=newFileService(context);this.
url=newURL(downloadUrl);if(!
fileSaveDir.
exists())fileSaveDir.
mkdirs();this.
threads=newDownloadThread[threadNum];HttpURLConnectionconn=(HttpURLConnection)url.
openConnection();conn.
setConnectTimeout(6*1000);conn.
setRequestMethod("GET");conn.
setRequestProperty("Accept","image/gif,image/jpeg,image/pjpeg,image/pjpeg,application/x-shockwave-flash,application/xaml+xml,application/vnd.
ms-xpsdocument,application/x-ms-xbap,application/x-ms-application,application/vnd.
ms-excel,application/vnd.
ms-powerpoint,application/msword,*/*");conn.
setRequestProperty("Accept-Language","zh-CN");conn.
setRequestProperty("Referer",downloadUrl);conn.
setRequestProperty("Charset","UTF-8");conn.
setRequestProperty("User-Agent","Mozilla/4.
0(compatible;MSIE8.
0;WindowsNT5.
2;Trident/4.
0;.
NETCLR1.
1.
4322;.
NETCLR2.
0.
50727;.
NETCLR3.
0.
04506.
30;.
NETCLR3.
0.
4506.
2152;.
NETCLR3.
5.
30729)");conn.
setRequestProperty("Connection","Keep-Alive");conn.
connect();printResponseHeader(conn);if(conn.
getResponseCode()==200){this.
fileSize=conn.
getContentLength();//根据响应获取文件大小if(this.
fileSizelogdata=fileService.
getData(downloadUrl);if(logdata.
size()>0){for(Map.
Entryentry:logdata.
entrySet())data.
put(entry.
getKey(),entry.
getValue()+1);}this.
block=this.
fileSize/this.
threads.
length+1;if(this.
data.
size()==this.
threads.
length){for(inti=0;i0)randOut.
setLength(this.
fileSize);randOut.
seek(this.
data.
get(i+1));this.
threads[i]=newDownloadThread(this,this.
url,randOut,this.
block,this.
data.
get(i+1),i+1);this.
threads[i].
setPriority(7);this.
threads[i].
start();}else{this.
threads[i]=null;}}this.
fileService.
save(this.
downloadUrl,this.
data);booleannotFinish=true;//下载未完成while(notFinish){//循环判断是否下载完毕Thread.
sleep(900);notFinish=false;//假定下载完成for(inti=0;igetHttpResponseHeader(HttpURLConnectionhttp){Mapheader=newLinkedHashMap();for(inti=0;;i++){Stringmine=http.
getHeaderField(i);if(mine==null)break;header.
put(http.
getHeaderFieldKey(i),mine);}returnheader;}/***打印Http头字段*@paramhttp*/publicstaticvoidprintResponseHeader(HttpURLConnectionhttp){《如何成为AndroidAndroidAndroidAndroid高手》官方讨论群:65882321国士工作室电话::::15711060468Email:Email:Email:Email:guoshiandroid@gmail.
com博客::::http://www.
cnblogs.
com/guoshiandroid/Mapheader=getHttpResponseHeader(http);for(Map.
Entryentry:header.
entrySet()){Stringkey=entry.
getKey()!
=nullentry.
getKey(print(key+entry.
getValue());}}privatestaticvoidprint(Stringmsg){Log.
i(TAG,msg);}publicstaticvoidmain(String[]args){/*FileDownloaderloader=newFileDownloader(context,"http://browse.
babasport.
com/ejb3/ActivePort.
exe",newFile("D:\\androidsoft\\test"),2);loader.
getFileSize();//得到文件总大小try{loader.
download(newDownloadProgressListener(){publicvoidonDownloadSize(intsize){print("已经下载:"+size);}});}catch(Exceptione){e.
printStackTrace();}*/}}2)下面的类是真正支持下载的线程类:《如何成为AndroidAndroidAndroidAndroid高手》官方讨论群:65882321国士工作室电话::::15711060468Email:Email:Email:Email:guoshiandroid@gmail.
com博客::::http://www.
cnblogs.
com/guoshiandroid/importjava.
io.
InputStream;importjava.
io.
RandomAccessFile;importjava.
net.
HttpURLConnection;importjava.
net.
URL;importandroid.
util.
Log;publicclassDownloadThreadextendsThread{privatestaticfinalStringTAG="DownloadThread";privateRandomAccessFilesaveFile;privateURLdownUrl;privateintblock;/*下载开始位置*/privateintthreadId=-1;privateintstartPos;privateintdownLength;privatebooleanfinish=false;privateFileDownloaderdownloader;publicDownloadThread(FileDownloaderdownloader,URLdownUrl,RandomAccessFilesaveFile,intblock,intstartPos,intthreadId){this.
downUrl=downUrl;this.
saveFile=saveFile;this.
block=block;this.
startPos=startPos;this.
downloader=downloader;this.
threadId=threadId;this.
downLength=startPos-(block*(threadId-1));}《如何成为AndroidAndroidAndroidAndroid高手》官方讨论群:65882321国士工作室电话::::15711060468Email:Email:Email:Email:guoshiandroid@gmail.
com博客::::http://www.
cnblogs.
com/guoshiandroid/@Overridepublicvoidrun(){if(downLength的初始化类的方法,当类第一次被使用的时候这个方法会被执行.
方法会将42赋给intVal,然后把一个指向类中常量表的引用赋给strVal.
当以后要用到这些值的时候,会在成员变量表中查找到他们.
下面我们做些改进,使用"final"关键字:Java代码22staticfinalintintVal=42;23staticfinalStringstrVal="Hello,world!
";现在,类不再需要方法,因为在成员变量初始化的时候,会将常量直接保存到类文件中.
用到intVal的代码被直接替换成42,而使用strVal的会指向一个字符串常量,而不是使用成员变量.
将一个方法或类声明为"final"不会带来性能的提升,但是会帮助编译器优化代码.
举例说,如果编译器知道一个"getter"方法不会被重载,那么编译器会对其采用内联调用.
《如何成为AndroidAndroidAndroidAndroid高手》官方讨论群:65882321国士工作室电话::::15711060468Email:Email:Email:Email:guoshiandroid@gmail.
com博客::::http://www.
cnblogs.
com/guoshiandroid/你也可以将本地变量声明为"final",同样,这也不会带来性能的提升.
使用"final"只能使本地变量看起来更清晰些(但是也有些时候这是必须的,比如在使用匿名内部类的时候)(xing:原文是oryouhaveto,e.
g.
foruseinananonymousinnerclass)谨慎使用foreachforeachforeachforeachforeach可以用在实现了Iterable接口的集合类型上.
foreach会给这些对象分配一个iterator,然后调用hasNext()和next()方法.
你最好使用foreach处理ArrayList对象,但是对其他集合对象,foreach相当于使用iterator.
下面展示了foreach一种可接受的用法:Java代码24publicclassFoo{25intmSplat;26staticFoomArray[]=newFoo[27];2728publicstaticvoidzero(){29intsum=0;30for(inti=0;i时代软件的主流应用模式将是"手机客户端+互联网络应用服务端",这种模式要求做移动互联网开发的程序员不但要掌握像Android这样的手机终端软件技术还要掌握开发互联网络应用的服务器端技术.
目前,软件企业普遍存在这样的问题,做移动互联网开发Android终端软件的程序员不了解web应用技术,而做web应用的程序员不了解移动终端技术,这样就导致了客户端与服务端在衔接上出现了问题.
目前的现状是:既掌握移动互联网Android终端技术,又掌握web应用技术的程序员比较稀缺,随着中国步入移动互联网时代,企业对这种移动互联网时代综合性人才的需求很旺盛.
如果不了解web应用技术,最终会遇到了技术和发展的瓶颈;另一方面,Google联合OHA推出的真正优势之一也在于和和互联网结合,Google的用意之一也是想开辟新的终端去使用Google的优势服务.
服务器端开发技术目前主流的有Sun的JavaEE、微软的.
NET,开源的以PHP和MySQL为代表的LAMP体系,我们该选择哪一种呢从理论上讲,很多人倾向于选择JavaEE,毕竟它们都是使用Java作为开发语言的,但是很多人面对JavaEE众多的框架就望而生畏,其实在学习JavaEE的时候可以从Struts入手,随着业务的需求逐步深入.
当然,选择微软的.
NET也行,毕竟该技术体系也占有很大市场份额.
其实,笔者认为,选择LAMP可以是会获得最高的"性价比"的,一方面PHP是现在Web方面的主流语言,大多数新型的网站尤其是创业性质的网站一般都会选用PHP作为服务端开发语言,另一方面,前面也说过,Android是为移动互联而生的,两者达到了完美的契合.
如果您精通Android,又精通LAMP、JavaEE、.
NET,请联系笔者:官方博客:http://www.
cnblogs.
com/guoshiandroid/官方Email:guoshiandroid@gmail.
com官方讨论QQ群:65882321

提速啦(24元/月)河南BGP云服务器活动 买一年送一年4核 4G 5M

提速啦的来历提速啦是 网站 本着“良心 便宜 稳定”的初衷 为小白用户避免被坑 由赣州王成璟网络科技有限公司旗下赣州提速啦网络科技有限公司运营 投资1000万人民币 在美国Cera 香港CTG 香港Cera 国内 杭州 宿迁 浙江 赣州 南昌 大连 辽宁 扬州 等地区建立数据中心 正规持有IDC ISP CDN 云牌照 公司。公司购买产品支持3天内退款 超过3天步退款政策。提速啦的市场定位提速啦主...

老周互联24小时无理由退款,香港原生IP,28元起

老周互联怎么样?老周互联隶属于老周网络科技部旗下,创立于2019年12月份,是一家具有代表性的国人商家。目前主营的产品有云服务器,裸金属服务器。创办一年多以来,我们一直坚持以口碑至上,服务宗旨为理念,为用户提供7*24小时的轮班服务,目前已有上千多家中小型站长选择我们!服务宗旨:老周互联提供7*24小时轮流值班客服,用户24小时内咨询问题可提交工单,我们会在30分钟内为您快速解答!另免费部署服务器...

这几个Vultr VPS主机商家的优点造就商家的用户驱动力

目前云服务器市场竞争是相当的大的,比如我们在年中活动中看到各大服务商都找准这个噱头的活动发布各种活动,有的甚至就是平时的活动价格,只是换一个说法而已。可见这个行业确实竞争很大,当然我们也可以看到很多主机商几个月就消失,也有看到很多个人商家捣鼓几个品牌然后忽悠一圈跑路的。当然,个人建议在选择服务商的时候尽量选择老牌商家,这样性能更为稳定一些。近期可能会准备重新整理Vultr商家的一些信息和教程。以前...

时代软件为你推荐
诊断snsservererror电脑连接路由登录提示server error:401 N/A,如何处理?flashwind下载了那个FlashWind极速旋风还需要安装吗?怎么安装?怎样使用?wordpress模板我在wordpress模板下载了一套模板,做了www.xuanqianbao.com这个站,模板的原站是www.rrzdm.com.一样的模板,我在文件在插入图片,却不能在首页显示,他的网站却可以.直phpadmin下载求张艺兴《莲》mp3下载苹果appstore宕机苹果手机为什么显示无法连接到appstoregoogleprGOOGLE PR是什么意思360arp防火墙在哪arp防火墙在哪开额- -360里是哪个?上海市浦东新区人民法院民事判决书(2009)浦民三(知)初字第206号加多宝和王老吉王老吉和加多宝是什么关系
域名服务器上存放着internet主机的 电影服务器 256m内存 idc测评网 免费ftp空间 老左博客 双12活动 申请空间 中国电信测速112 如何安装服务器系统 免费私人服务器 drupal安装 ebay注册 免费asp空间 wordpress中文主题 空间申请 阵亡将士纪念日 阿里云邮箱申请 闪讯网 美国主机侦探 更多