个人阶段知识总结(一) String三兄弟以及classpath

  以前每当提到关于一些java底层的问题的时候总是让我头疼,相信这是很多java初学者都经历过的,近段在网上看了一些关于java稍微底层的资料,下面给出一些个人阶段小总结

 1.  String  StringBuffer  StringBuilder区别联系

 

简单的说String是一个字符串常量,StringBuffer是线程安全的字符串变量,StringBuilder是线程不安全的字符串变量。

 

看了网上那么多的资料,也有一些简单的理解:String是一个不可变的对象,当每次改变他的内容的时候实际是创建的一个新的对象,然后这个String指向这个新的对象。所以说String是一个字符串常量。而StringBuffer指向的字符串长度内容可以改变,当频繁的改变一个的字符串的内容时候推荐使用StringBuffer,而如果要简单的得到一个字符串对象,使用String即可。

 

由于改变String的内容需要重新去创建一个对象,然后改变指向的对象,但是一个有趣的现象是:当在进行String Str=”abc”+”def”这样的字符串操作时候,选用String的运行速度要快于StringBuffer,使用StringBuffer添加一段字符串的方法有appendinsert两个append只能在末尾添加,insert是在一个指定的位置,当使用String来操作”a”+”b”的时候,默认的是直接将其作为ab一个字符串来看待,所以String的速度在这种情况下优于StringBuffer

 

下面说一下StringBuufferStringBuilder,后者是在JDK5.0新增的一个类,他与StringBuffer最大的区别在于他是单线程变量,主要在单线程时使用,他可以执行StringBuffer所有的操作,但是不执行同步,即不能在多线程情况下使用,所以一般使用StringBuffer,所以StringBuilder是线程不安全的。

 

2. Classpath

 

ClasspathJava虚拟机(JVM)借助类装载器装入应用程序使用的类,具体装入哪些类根据当时的需要决定。CLASSPATH环境变量告诉类装载器到哪里去寻找第三方提供的类和用户定义的类以及JVM要到哪里去寻找 .class文件。

 

一般我们将我们需要的第三方类的路径在系统环境变量中去设置,我们没运行一个java程序,就会生成相应的 .class文件,对于我们需要的String这些第三方类JVM去哪里找到呢,这时候就需要Classpath了,java会在Classpath中一个一个寻找,如果不在系统环境变量设置,每次都需要在运行前去设置Classpath,对于Java所需的.class文件,必须通过classpath来指定。下面要谈一下java中的package了。Sun公司最初使用package的原因是为了避免命名冲突,如果我们设计了一个很简单的Person类,如果某人开发了一个类库,其中恰巧也有一个Person类,当我们使用这个类库时,两个Person类出现了命名冲突,JDK不知道我们到底要使用哪个Person类。

 

Eclipse中的java文件都会有package ***这个代表我们当前的java文件存放的路径(不是文件绝对路径),如果我们引用了其他的类,就会在上面使用import java.*这样的字样,其实在编译的过程中,会自动的将这些路径添加到classpath中去,这样javac命令就会找到我们的java文件,当我们使用java命令去运行一个.class文件的时候就不必去指定文件的路径。

  对于classpath可以参考下面网址的资料    

http://www.exam8.com/computer/Java/zonghe/200707/659761.html

你可能感兴趣的:(java,eclipse,jvm,多线程,虚拟机)