创建字符串:

1. String(char a[])

char a[] = {'g','o','o','d'};
String str = new String(a);

2. String(char a[],int offset,int length)

char a[] = {'s','t','u','d','e','n','t'};
String str = new String(a,2,4);

3. 通过字符串常量的引用赋值给一个字符串变量:

String str1,str2;
str1 = "good";
str2 = "good";

str1和str2共用一个"good"内存空间。

连接多个字符串

String s1 = new String("hello");
String s2 = new String("world");
String string = s1 + " " + s2;
System.out.println(string);

换行输出:

System.out.println("hello "
+ "world");

  

获取字符串信息

获取字符串长度

str.length();  

字符串查找

String类提供了两种查找字符串的方法,即indexOf()与lastIndexOf()方法。这两种方法都允许在字符串中搜索指定条件的字符或字符串。indexOf()方法返回的是搜索的字符或字符串首先出现的位置,lastIndexOf()方法返回的是搜索的字符或字符串最后一次出现的位置。

str.indexOf(substr);
//str:任意字符串对象
//substr:要搜索的字符串

获取指定索引位置的字符

str.charAt(int index);

字符串操作

获取子字符串

str.substring(int beginIndex); // 从某一索引处开始截取字符串
str.substring(int beginIndex,int endIndex); // 从beginIndex开始到endIndex结束截取字符串

去除空格

str.trim();

字符串替换

str.replace(char oldChar,char newChar);

判断字符串的开始与结尾

startsWith()方法与endsWith()方法分别用于判断字符串是否以指定的内容开始或结束。返回值都为Boolean类型。

str.startsWith(String prefix);
Str.endsWith(String suffix);

判断字符串是否相等

str.equal(String otherstr); // 区分大小写
str.equalsIgnoreCase(String otherstr); // 不区分大小写

按字典序比较两个字符串

str.compareTo(String otherstr);

大小写转换

str.toLowerCase();
str.toUpperCase();

字符串分割

str.split(String sign);
str.split(String sign,int limit); // limit限制分割次数

String,StringBuilder,StringBuffer

Java中的String,StringBuilder,StringBuffer三者的区别

1. 在运行速度上:StringBuilder > StringBuffer > String
原因:String 为字符串常量,而StringBuilder和StringBuffer是字符串变量,即String对象创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。例如:

String str = "abc";
System.out.println(str);
Str = str + "de";
System.out.println(str);

在第三行中,str好像是被修改了,其实不然,JVM在第三行又创建了一个新的对象也命名为str,然后把原来对象的str的值和"de"加起来赋给新的str,而原来的str就会被JVM垃圾回收机制给回收掉,所以这里的str实际上并没有被更改。

2. 在线程安全上,StringBuilder是线程不安全的,而StringBuffer是线程安全的
如果一个StringBuffer对象在字符串缓冲区被多个线程使用时,StringBuffer中很多方法可以带有synchronized关键词,所以可以保证线程的安全,但是StringBuilder的方法则没有该关键词,所以不能保证线程安全。所以如果使用多线程则使用StringBuffer,但在单线程中建议使用StringBuilder速度更快些。

StringBuilder的常用方法:
1. 创建一个StringBuilder对象:

StringBuilder str = new StringBuilder();
StringBuilder str = new StringBuilder(string);

2. append:字符串的连接

str.append("aaa");

3. toString:

str.toString();

4. setCharAt(int I, char c):第i位置替换成c

str.setCharAt(int i,char c);

5. Insert(int I, string str):在指定位置插入字符或字符串

str.insert(int I, string str);

6. delete(int start, int end):删除起始位置(含)到结束位置(不含)之间的字符串

str.delete(int start, int end);

7. Replace(int start, int end, string str):从start到end用str代替

str.replace(int start, int end, string str);

StringBuffer的常用方法:
• 添加功能 
  public StringBuffer append(String str):可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身
  public StringBuffer insert(int offset,String str):在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身
• 删除功能 
  public StringBuffer deleteCharAt(int index):删除指定位置的字符,并返回本身
  public StringBuffer delete(int start,int end):删除从指定位置开始指定位置结束的内容,并返回本身
• 替换功能 
  public StringBuffer replace(int start,int end,String str):从start开始到end用str替换
• 反转功能 
  public StringBuffer reverse()
• 截取功能 
  public String substring(int start)
  public String substring(int start,int end)

java String详解的更多相关文章

  1. java String 详解

    1.java语言的字符串序列是通过字符串类实现的.java提供了3个字符串类:String类.StringBuilder类和StringBuffer类.String类是不变字符串,StringBuff ...

  2. Java的String详解

    Java的String详解 博客分类: Java javaStringString详解常用方法  Java的String类在开发时经常都会被使用到,由此可见String的重要性.经过这次认真仔细的学习 ...

  3. Java内部类详解

    Java内部类详解 说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉.原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法.今天我们就 ...

  4. C++调用JAVA方法详解

    C++调用JAVA方法详解          博客分类: 本文主要参考http://tech.ccidnet.com/art/1081/20050413/237901_1.html 上的文章. C++ ...

  5. Java虚拟机详解----JVM常见问题总结

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  6. [转] Java内部类详解

    作者:海子 出处:http://www.cnblogs.com/dolphin0520/ 本博客中未标明转载的文章归作者海子和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置 ...

  7. java 泛型详解(普通泛型、 通配符、 泛型接口)

    java 泛型详解(普通泛型. 通配符. 泛型接口) JDK1.5 令我们期待很久,可是当他发布的时候却更换版本号为5.0.这说明Java已经有大幅度的变化.本文将讲解JDK5.0支持的新功能---- ...

  8. Java synchronized 详解

    Java synchronized 详解 Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码. 1.当两个并发线程访问同一个对象object ...

  9. Java 多线程详解(四)------生产者和消费者

    Java 多线程详解(一)------概念的引入:http://www.cnblogs.com/ysocean/p/6882988.html Java 多线程详解(二)------如何创建进程和线程: ...

随机推荐

  1. Vuex2.0边学边记+两个小例子

    最近在研究Vuex2.0,搞了好几天终于有点头绪了. 首先vuex概念比较多,一定要搞懂里面的概念,可以参考官网Vuex2.0概念,我写此文的目的是希望能对前端爱好者提供个参考,加深对vuex2.0各 ...

  2. Spring的大框架

    初识Spring: Spring作者:Rod Johnson Spring框架由20个模块组成,这些模块分成六个部分,分别是Core Container,Data Access/Integration ...

  3. SpringBoot整合mybatis踩坑

    springboot整合mybaits过程中,调用接口时报错:org.apache.ibatis.binding.BindingException: Invalid bound statement ( ...

  4. Ubuntu 17.04 upgrade to 17.10

    Just try  sudo do-release-upgrade if you get this An upgrade from 'zesty' to 'bionic' is not support ...

  5. qss 对子控件的设置样式 使用setProperty --Qt 之 QSS(动态属性)

    https://blog.csdn.net/liang19890820/article/details/51693956 学习了 代码: 当鼠标划过控件时,设置样式 void CustomLabelW ...

  6. Python交互式编辑器ipthon notebook jupyter

    简介 IPython NoteBook(jupyter)是一个综合的交互式编程环境,比原本python命令进入的交互式环境要强大很多,总之就是炫酷加实用,浏览器中写Python代码,访问源端linux ...

  7. SSM框架——实现分页和搜索分页

    登录|注册     在路上 在路上,要懂得积累:在路上,要学会放下:我在路上!Stay hungry,Stay foolish.       目录视图 摘要视图 订阅 [公告]博客系统优化升级     ...

  8. JAXB实现java对象与xml之间转换

    JAXB简介: 1.JAXB能够使用Jackson对JAXB注解的支持实现(jackson-module-jaxb-annotations),既方便生成XML,也方便生成JSON,这样一来可以更好的标 ...

  9. 多变量线性回归 matlab

    %multivariate_linear_regression data=load('data.txt'); x=data(:,1:2); y=data(:,3); m=length(x(:,1)); ...

  10. codeforces 963A Alternating Sum

    codeforces 963A Alternating Sum 题解 计算前 \(k\) 项的和,每 \(k\) 项的和是一个长度为 \((n+1)/k\) ,公比为 \((a^{-1}b)^k\) ...