脚本宝典收集整理的这篇文章主要介绍了Java中的字符串,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
1、JAVA中的字符串API详解
String对象存储字符串,String类位于java.lang包中.
String s="Hello world"; String s=new String(); String s=new String("Hello world");
- String类length()方法,确定字符串长度;数组length是属性;
- String类equals()方法,比较两个字符串内容是否一致(堆中数据);而不是用“==”比较(栈地址比较),Java中特有...
equalsIgnoreCase()方法:判读两者是否相等,忽略大小写;
toLowerCase():全部转为小写;
toUpCase():全部转为大写; - 数字转为字符串:
String number=1+"";
- 字符串相加:使用“+”
使用String类concat()方法
String s=new String("你好,"); String name=new String("张三!"); String sentence=s.concat(name);
注意:s.concat(name)返回值为连接后的字符串,而s并未变化!
- trim()方法:去掉字符串中空格【前后空格去除,中间不去除】
字符串提取:public int indexOf(int ch)、public int indexOf(String value) 搜索第一个出现的字符ch(或字符串value);
public int lastIndexOf(int ch)、public int lastIndexOf(String value) 搜索最后一个出现的字符(或字符串value)【字符串中可能存在相同字符】;
- public String substring(int beginindex,int endindex):提取从beginindex开始,endindex结束字符串部分【含beginindex,不含endindex】
- splIT(String value)方法:拆分字符串,分隔符是value,部分分隔符与正则表达式冲突:比如“|”,需要转义“\|”;
String caseString="ab,cde,fg"; String[] array=caseString.split(","); for (String item:array) { System.out.PRintln(item); }
注意:空串与null区别,对未初始化的对象操作会被编译器挡在门外;null是一个特殊的初始化值,是一个不指向任何对象的引用。对引用null的对象在运行时抛出异常,空串是长度为0的字符串,和别的字符串的区别就是长度为0。
2、JAVA字符串不变性与常量池
字符串不变性:字符串内存地址一旦分配之后,字符串是只读的,不允许更改;字符串更改实际是开辟新内存空间,栈指针断开指向新空间;旧控件编程垃圾!
常量池:String的不变性机制显然会在String常量内有大量的冗余。因此,Java为了更有效地使用内存,JVM留出一块特殊的内存区域,被称为“String常量池”。
譬如String a="abc",当你定义这样的变量时,java会先去常量池寻找有没有""abc"这样的字符串,如果有,直接把内存地址交给a,否则生成一个"abc"的字符串。当下一个String b="abc"时,JVM不会再次生成"abc",而是直接将"abc"引用给b,所以你会发现a==b。
Demo:
//一块内存空间,堆中地址相同不同 String str1="java"; String str2="java"; System.out.println(str1==str2); 输出:true. //分配两块内存空间,栈中地址不同 String str1=new String("java"); String str2=new String("java"); System.out.println(str1==str2); 输出:false. String str1="java"; String str2="blog"; String s=str1+str2; System.out.println(s=="javabLOG"); 输出:false. String s="java"+"blog"; System.out.println(s=="javablog"); 输出:true. String str2="blog"; String s="java"+str2; System.out.println(s=="javablog"); 输出:false.
解决方案:
- StringBuffer类是可变的,不会再字符串常量池中,而在堆中。如果缓冲区溢出,容量自动增大,固定容量为16。
- StringBuilder
以上是脚本宝典为你收集整理的Java中的字符串全部内容,希望文章能够帮你解决Java中的字符串所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。