Linux安全网 - Linux操作系统_Linux 命令_Linux教程_Linux黑客

会员投稿 投稿指南 本期推荐:
搜索:
您的位置: Linux安全网 > Linux编程 > » 正文

String源代码

来源: 未知 分享至:

1,数字可以转换成其他的进制的字符串时,能够使用Integer.toString的静态方法。

例子:

int value = 3;
		
//2进制

String binaryValue = Integer.toString(value, 2);
		

System.out.println("二进制的 3:" + binaryValue);
		

int value16 = 31;


System.out.println("十六进制的23:" + Integer.toString(value16, 16));

2 ,subString方法可能会造成内存泄露。比方说一个字符串,长度为100个char的字段A。然后subString,截出一个2个char的字段B。那么B的字段中的属性value还是会使一个100个char的数字。

当然,这还会影响split方法

/**
	 * 演示SubString泄漏内存
	 */
	@Test
	public void testSubStringLeak(){
		
		String subString = this.subString();
		
		/**
		 * 在这里设断点。可以看到subString中的Value还是10个Char的数组
		 * value的值
		 * [a, b, c, d, e, f, g, h, i, g, h, m, n]
		 */
		System.out.println(subString);
	}
	
	
	private String subString(){
		
		String origin = "abcdefghighmn";
		
		return origin.substring(0, 2);
		
	}

 

3, 从代码实现上来说,String的实现是一个char的属性Value,offset是数组中的起始位置,然后count是数组中的截取。

4,  replace,subString等的方法,我们希望的结果是返回值,其调用方法的对象,本身并不改变。

/**
	 * replace,或者其他String的方法,并不改变原来的值,
	 * 因为String是不可变的。处理的往往是返回值。
	 */
	@Test
	public void testReplace(){
		
		String s = "java";
		
		String result = s.replace("j", "l");
		System.out.println("origin s:"+s);
		System.out.println("replaced result:"+result);
	}

 

 

 

5,matches(String regex)

replaceFirst(String regex, String replacement)

replaceAll(String regex, String replacement)

replace(CharSequence target, CharSequence replacement)

split(String regex, int limit)

split(String regex)

都是借用java.util.regex 包下面的类来完成的。 Technorati 标签: JDK Source code





Tags:
分享至:
最新图文资讯
1 2 3 4 5 6
验证码:点击我更换图片 理智评论文明上网,拒绝恶意谩骂 用户名:
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 发展历史