开发者社区> 龙神之怒> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

字符串的基本操作

简介: String类的概述 String类的构造方法 String类的判断功能 String类的获取功能 String类的转换功能 String其他类型互转汇总 其它类型转成String类型 String类型转成其它类型 StringStringBuffer与Stri...
+关注继续查看

String类的概述

  JDK提供的API,查看String类的说明可以看到下面两句话

  字符串字面值”abc”也可以看成是一个字符串对象。
  字符串是常量,一旦被赋值,就不能被改变。

String类的构造方法

方法 说明
public String() 空构造
public String(byte[] bytes) 把字节数组转成字符串
public String(byte[] bytes,int index,int length) 把字节数组的一部分转成字符串
public String(char[] value) 把字符数组转成字符串
public String(char[] value,int index,int count) 把字符数组的一部分转成字符串
public String(String original) 把字符串常量值转成字符串

String类的判断功能

方法 说明
boolean equals(Object obj) 比较字符串的内容是否相同,区分大小写
boolean equalsIgnoreCase(String str) 比较字符串的内容是否相同,忽略大小写
boolean contains(String str) 判断大字符串中是否包含小字符串
boolean startsWith(String str) 判断字符串是否以某个指定的字符串开头
boolean endsWith(String str) 判断字符串是否以某个指定的字符串结尾
boolean isEmpty() 判断字符串是否为空。

String类的获取功能

方法 说明
int length() 获取字符串的长度。
char charAt(int index) 获取指定索引位置的字符
int indexOf(int ch) 返回指定字符在此字符串中第一次出现处的索引。
int indexOf(String str) 返回指定字符串在此字符串中第一次出现处的索引。
int indexOf(int ch,int fromIndex) 返回指定字符在此字符串中从指定位置后第一次出现处的索引。
int indexOf(String str,int fromIndex) 返回指定字符串在此字符串中从指定位置后第一次出现处的索引。
String substring(int start) 从指定位置开始截取字符串,默认到末尾。
String substring(int start,int end) 从指定位置开始到指定位置结束截取字符串。

String类的转换功能

方法 说明
byte[] getBytes() 把字符串转换为字节数组。
char[] toCharArray() 把字符串转换为字符数组。
static String valueOf(char[] chs) 把字符数组转成字符串。
static String valueOf(int i) 把int类型的数据转成字符串。
注意:String类的valueOf方法可以把任意类型的数据转成字符串
String toLowerCase() 把字符串转成小写。(了解)
String toUpperCase() 把字符串转成大写。
String concat(String str) 把字符串拼接。

String其他类型互转汇总

其它类型转成String类型

  • toString()

    • Object类中有public方法toString(),java对象都可以调用。注意:必须保证类对象不能为null值,否则抛出NullPointerException异常,派生类中一般覆盖此方法。
  • (String)

    • 强制类型转换,需要保证能够转成String,前面使用instanceof进行检查,否则抛出CalssCastException异常。注意:语法检查时不会报错,用时一定要小心。
  • valueOf(基本类型 i)

    • 与第一种类似,只是前者不能为null,后者可以为null。
  • “”+

    • 效率上toString()>String.valueOf>i+””

String类型转成其它类型

  • valueOf(String str)

    • 可以把任意类型的数据转成字符串
  • parseLong(String str)和parseInt(String str)

    • 注:基本类型数据级别(byte/short/char)->int->long->float->double
      低级别向高级别自动转换;高级别向低级别强制转换会导致溢出或丢失精度

附:基本类型与包装类类型转换
正向:Integeri=new Integer(100);

反向:int b=i.intValue();

特殊:int i=Integer.parseInt(“1234”);//可以通过

   floatf=Float.valueOf(“1234”).floatValue();

   charc=Character.valueOf(“1233”).charValue();

String、StringBuffer与StringBuilder之间区别

StringBuffer常用方法(StringBuilder的省略)

(由于StringBuffer和StringBuilder在使用上几乎一样,所以只写一个)

构造方法

方法 说明
publicStringBuffer() 初始化出的StringBuffer对象是一个空的对象
publicStringBuffer(int capacity) 分配了长度为capacity字节的字符缓冲区
publicStringBuffer(String str) 创建带有内容的StringBuffer对象

例子
 StringBuffer s = new StringBuffer();
   这样初始化出的StringBuffer对象是一个空的对象

 StringBuffer sb1=new StringBuffer(512);
   分配了长度512字节的字符缓冲区。

 StringBuffer sb2=new StringBuffer(“how are you?”)
  创建带有内容的StringBuffer对象,在字符缓冲区中存放字符串“how are you?”

常用方法

方法 说明
StringBuffer append(boolean b) 表示将括号里的某种数据类型的变量插入某一序列中
charAt( ) 返回此序列中指定索引处的 char 值
getChars(int start,int end,char chars[],int charStart) 将字符串的子字符串复制给数组
int length() 返回长度(字符数)。
toString( ) 返回此序列中数据的字符串表示形式。
subString( ) 返回一个新的 String,它包含此序列当前所包含的字符子序列。
StringBuffer delete(int start,int end) 删除指定区间以内的所有字符,包含start,不包含end索引值的区间。
StringBuffer deleteCharAt(int index) 删除指定位置的字符,然后将剩余的内容形成新的字符串
StringBuffer insert(int offset, Object obj) 该方法的作用是在StringBuffer对象中插入内容,然后形成新的字符串。
StringBuffer reverse() 将StringBuffer对象中的内容反转,然后形成新的字符串
void setCharAt(int index, char ch) 修改对象中索引值为index位置的字符为新的字符ch
void trimToSize() 将StringBuffer对象的中存储空间缩小到和字符串长度一样的长度,减少空间的浪费,和String的trim()是一样的作用。

执行速度比较

对字符串操作三者在执行速度方面的比较

  StringBuilder > StringBuffer > String

  String <(StringBuffer,StringBuilder)的原因

    String:字符串常量

    StringBuffer:字符创变量

    StringBuilder:字符创变量

    从上面的名字可以看到,String是“字符创常量”,也就是不可改变的对象。

String s = "abcd";
s = s+1;
System.out.print(s);// result : abcd1

 JVM是这样解析这段代码的:首先创建对象s,赋予一个abcd,然后再创建一个新的对象s用来;执行第二行代码,也就是说我们之前对象s并没有变化,所以我们说String类型是不可改变的对象了,由于这种机制,每当用String操作字符串时,实际上是在不断的创建新的对象,而原来的对象就会变为垃圾被GC回收掉,可想而知这样执行效率会有多底。

 而StringBuffer与StringBuilder就不一样了,他们是字符串变量,是可改变的对象,每当我们用它们对字符串做操作时,实际上是在一个对象上操作的,这样就不会像String一样创建一些而外的对象进行操作了,当然速度就快了。

StringBuilder与 StringBuffer

  StringBuilder:线程非安全的

  StringBuffer:线程安全的

  当我们在字符串缓冲去被多个线程使用是,JVM不能保证StringBuilder的操作是安全的,虽然他的速度最快,但是可以保证StringBuffer是可以正确操作的。当然大多数情况下就是我们是在单线程下进行的操作,所以大多数情况下是建议用StringBuilder而不用StringBuffer的,就是速度的原因。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
字符串
你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行: ```python #!/usr/bin/env python # -*- coding: utf-8 -*- 第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释; 第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。
703 0
字符串
开头我们再说下,数组名即是数组的首元素的地址; char a[10]; scanf("%s",a);//a => &a[0]; scanf函数会从数组的首位置开始存储用户输入的字,存放完毕,系统会自动在字符串的后面加上一个字符串的结束标志,'\0',空字符,空出字符; 头文件stdio.
502 0
+关注
龙神之怒
让我们一起努力奋斗吧
95
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载