Java中的字符串

发布时间:2019-11-18 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了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 index):提取从位置索引开始的字符串部分【包括index】

  • 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,请注明来意。