JAVA网站制作之进步String和StringBuffer功能的技能
先谈谈我对java的一些认识。我选择java,是因为他语法简单,功能强大,从web,到桌面,到嵌入式,无所不能。但当我进一步了解了java后,感叹,java原来也有许多缺点。技能|功能String和StringBuffer之概览创立字符串的较佳路子
滞留字符串带来的优化
毗连字符串时的优化技能
借助StringBuffer的初始化历程的优化技能
关头点String和StringBuffer之概览
非可变对象一旦创立以后就不克不及再被改动,可变对象则能够在创立以后被改动。String对象长短可变对象,StringBuffer对象则是可变对象。为取得更佳的功能你必要依据实践情形胆小如鼠地选择究竟利用这二者中的某一个。上面的话题会作具体的论述。(注重:这个章节假定读者已具有Java的String和StringBuffer的相干基本常识。)创立字符串的较佳路子你能够依照以下体例创立字符串对象:
1.Strings1="hello";
Strings2="hello";
2.Strings3=newString("hello");
Strings4=newString("hello");下面哪一种体例会带来更好的功能呢?上面的代码片段用来丈量两者之间的区分。
StringTest1.javapackagecom.performance.string;/**Thisclassshowsthetimetakenforcreationof
*StringliteralsandStringobjects.
*/publicclassStringTest1{publicstaticvoidmain(String[]args){//createStringliterals
longstartTime=System.currentTimeMillis();
for(inti=0;i<50000;i++){Strings1="hello";
Strings2="hello";
}longendTime=System.currentTimeMillis();
System.out.println("TimetakenforcreationofStringliterals:"
+(endTime-startTime)+"milliseconds");//createStringobjectsusingnewkeyword
longstartTime1=System.currentTimeMillis();
for(inti=0;i<50000;i++){Strings3=newString("hello");
Strings4=newString("hello");
}longendTime1=System.currentTimeMillis();
System.out.println("TimetakenforcreationofStringobjects:"
+(endTime1-startTime1)+"milliseconds");
}
}
这段代码的输入:
TimetakenforcreationofStringliterals:0milliseconds
TimetakenforcreationofStringobjects:170millisecondsJVM是如何处置字符串的呢?
Java假造时机保护一个外部的滞留字符串对象的列表(独一字符串的池)来制止在堆内存中发生反复的String对象。当JVM从class文件里加载字符串字面量并实行的时分,它会先反省一下以后的字符串是不是已存在于滞留字符串列表,假如已存在,那就不会再创立一个新的String对象而是将援用指向已存在的String对象,JVM会在外部为字符串字面量作这类反省,但其实不会为经由过程new关头字创立的String对象作这类反省。固然你能够明白地利用String.intern()办法强迫JVM为经由过程new关头字创立的String对象作如许的反省。如许能够强迫JVM反省外部列表而利用已有的String对象。 以是结论是,JVM会内涵地为字符串字面量保护一些独一的String对象,程序员不必要为字符串字面量而忧愁,可是大概会被一些经由过程new关头字创立的String对象而困扰,不外他们可使用intern()办法来制止在堆内存上创立反复的String对象来改良Java的运转功能。下一大节会向人人展现更多的信息。下图展现了未利用intern()办法来创立字符串的情形。
<br> 你能够本人利用==操纵符和String.equals()办法来编码测试下面提到的区分。==操纵符会前往true假如一些援用指向一个不异的对象但不会判别String对象的内容是不是不异;String.equals()办法会前往true假如被操纵的String对象的内容不异。关于下面的代码会有s1==s2,由于s1和s2两个援用指向统一个对象,关于下面的代码,s3.equals(s4)会前往true由于两个对象的内容都一样为”hello”。你能够从上图看出这类机制。在这里有三个自力的包括了不异的内容(”hello”)的对象,实践上我们不必要这么三个自力的对象DD由于要运转它们的话既华侈工夫又华侈内存。 那末如何才干确保String对象不会反复呢?下一个话题会涵盖关于内建String机制的乐趣。</p>下一页
java也能做一些底层语言开发做的事情(难度很高,不是java顶尖高手是做不来的), Java 编程语言的风格十分接近C、C++语言。 你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢? 有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想) 设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧 是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言 关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。 如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。 任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 是一种语言,用以产生「小应用程序(Applet(s)) 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。 Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。 接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。 是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能 任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧! Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台 Java是一种计算机编程语言,拥有跨平台、面向对java 应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
页:
[1]