Java_String

转载 2012年03月27日 09:35:17

package stringTest;

public class Test {
	public static void main(String[] args) {
		// String str = new String();
		String temp = "a";
		System.out.println(temp);
		temp = temp + "b";
		System.out.println(temp);
		StringBuffer strbus = new StringBuffer();
		strbus.append("a").append("b");
		System.out.println(strbus.length());
		strbus.append("c");
		System.out.println(strbus);
		String a = "ab";
		String c ="ab";
		System.err.println(a);
		String b = "a" + "b";
		
		String aa = new String("aa");
		String bb = new String ("aa");
		System.out.println((aa==bb));
		if (a == c) {
			System.out.println("aaaaa");
		}
		int inta =12345;
		String aaa = "aaa";
		aaa.intern();
		aaa="bbb";
	}

	public static void printStackTrace() {
		Throwable dummyException = new Throwable();
		StackTraceElement locations[] = dummyException.getStackTrace();
		for (int i = 0; i < locations.length; i++) {
			System.out.println("Stack trace [" + i + "] ......");
			StackTraceElement location = locations[i];

			// Caller will be the third element
			String cname = "unknown";
			String method = "unknown";
			String fname = "unknown";
			int lnum = -1;
			if (location != null) {
				StackTraceElement caller = location;
				cname = caller.getClassName();
				method = caller.getMethodName();
				fname = caller.getFileName();
				lnum = caller.getLineNumber();

				System.out.println("File : " + fname);
				System.out.println("Line : " + lnum);
				System.out.println("Caller : " + cname);
				System.out.println("Method : " + method);
			}

			System.out.println();
		}
	}

}

 转至:http://sllereak.blog.163.com/blog

--String a="zhangsan";
   String b="zhangsan";
   内存分析:
   第一句:String a="zhangsan"; -----"zhangsan"是常量,所以会在data segment中的字符串缓冲池中开辟内存空间并将其放入,放入后直接将这块内存的地址给a
   第二句:String b="zhangsan";------"zhangsan"是常量,所以首先回去data segment中的字符串缓冲池中找这个字符串,由于找到了,直接将这块内存地址给b
   于是a==b//true,    a.equals(b)//true
--String a=new String("zhangsan");
   String a=new String("zhangsan");
   内存分析
   第一句:String a=new String("zhangsan"); -----"zhangsan"是常量,所以会在data segment中的字符串缓冲池中开辟内存空间并将其放入,但是使用了new关键字,在堆中开辟空间并将将该data segment的值拷贝到该堆内存中,并返回引用地址给a
   第二句:String b=new String("zhangsan"); -----"zhangsan"是常量,所以首先回去data segment中的字符串缓冲池中找这个字符串,由于找到了,而且使用了new关键字,在堆中开辟空间并将将该data segment的值拷贝到该堆内存中,并返回引用地址给b
   于是a==b//false,    a.equals(b)//true
--String a = "ja"+"va";--不会在堆中创建内存空间,强调"ja"+"va"在编译的后就成为"java"了,所以不会在data segment中创建"ja" 和 "va"
   String b="java"
   String c=a+"good";--创建堆上空间将a的值拷贝到其中,在创建"good"内存空间将"good"的值拷贝到其中,在堆上创建第三个内存空间合并a和"good"返回内存地址
   内存分析:a和b指向相同的data segment区域,指针一样,都不会在堆上创建内存空间,但是这种直接指向data segment的类型如果需要运算的话会在堆上创建临时空间,但是指针不会改变
   
         
--String a="a,b,c,";a.split(",")和String a="a,b,c, ";a.split(",")的区别
 *非常智能第一个返回三个元素的数组,第二个返回四个元素的数组

--String和StringBuffer的区别
 *String代表的是不可变的字符序列
  为不可变对象,一旦被创建,就不能修改它的值.
  对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去.
 *StringBuffer代表的是可变的字符序列
  是一个可变对象,当对他进行修改的时候不会像String那样重新建立对象
  为什么能变呢?因为里面用char数组动态增加内存容量,所以可以用append方法动态改变字符串,且内存地址不变
  
 String a="zhangsan";
 s+="a";
 可以分析出这种开销是非常大的
 
--File类,并不是代表一个实际存在的文件
 *它只是在内存中保存该文件的文件名字而已,不是一个实际的文件奥
--public String final File.Separator静态属性存放间隔修饰符号。不区分任何的操作系统
 *路径中/在使用的时候需要转义奥
--java中的枚举
 记住固定用法就行了,我觉得一般也不需要过多的使用enum的一些高级特性,否则就和简单易懂的初衷想违背了。
 public enum Color{
  Red,
  Blue
 }
 void main(String[] args){
  Color color=Color.Red;
  //枚举可以用在switch中
 }




相关文章推荐

java string类的实现

  • 2016年01月08日 19:49
  • 4KB
  • 下载

【java】String类和StringBuffer类常用操作

【java】String类和StringBuffer类常用操作 String类是字符串常量,是不可更改的常量。而StringBuffer是字符串变量,它的对象是可以扩充和修改的。St...

Java中的String池

  • 2012年10月18日 16:57
  • 2KB
  • 下载

JAVA数据结构之String、StringBuffer和StringBuilder之间的区别

最近在学习关于数据结构的基础知识,其中String类型的对象是较为常见的对象之一,在此总结关于String、StringBuffer、StringBuilder相关的知识。 ①三者在执行速度方面的比较...

java里的string

  • 2015年10月14日 10:41
  • 419KB
  • 下载

java字符串转String数组简单实例

  • 2016年01月06日 14:21
  • 432B
  • 下载

从Java源码角度彻底理解String,StringBuilder和StringBuffer的区别

字符串,就是一系列字符的集合。 Java里面提供了String,StringBuffer和StringBuilder三个类来封装字符串,其中StringBuilder类是到jdk 1.5才新增的...
  • hj7jay
  • hj7jay
  • 2016年10月09日 20:31
  • 2553

java io读取文件到String

  • 2012年11月07日 21:42
  • 212KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java_String
举报原因:
原因补充:

(最多只允许输入30个字)