Java String 类

字符串广泛应用 在Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。
创建字符串
  1. // ==比较的是字符串在栈中存放的首地址,而equals()比较的是两个字符串的内容是否相同
        //普通的声明字符串的方法,只会在字符串常量池里开辟空间,并且开辟空间之前,会检查字符串常量池里是否已存在
  2. //相同的数据,如果有,直接指向已存在的数据,如果没有会在字符串常量池里开辟一个新的空间
  3. String s = "ccy";
  4. String s2 ="ccy";
  5. System.out.println(s == s2);
  6. System.out.println(s.equals(s2));
  7.  
  8. //实例化声明字符串的方法,会先在堆中存放数据,将数据的首地址保存在栈内,然后检查字符串常量池是否存在
  9. //相同的数据,如果没有则会在字符串常量池中开辟一个新的空间来存放字符串数据,如果有则声明完毕。
  10. String s3 = new String("jredu");
  11. String s4 = new String("jredu");
  12. System.out.println(s3 == s4);
  13. System.out.println(s3.equals(s4));
  14.  
  15. String s5 = "jereh";
  16. String s6 = new String("jereh");
  17. System.out.println(s5 == s6);
  18. System.out.println(s5.equals(s6));

运行图:

关于字符串在内存空间中存放的示例图:

String 方法:

1、字符串长度

用于获取有关对象的信息的方法称为访问器方法。
String 类的一个访问器方法是 length() 方法,它返回字符串对象包含的字符数。
  1. String string = new String("字符串长度");
  2. int length = string.length();
  3. System.out.println(length);

运行图:

2、连接字符串

String 类提供了连接两个字符串的方法:
1、string1.concat(string2);返回 string2 连接 string1 的新字符串。也可以对字符串常量使用 concat() 方法
2、更常用的是使用'+'操作符来连接字符串

下面是一个例子:

  1. public class Demo06 {
  2. public static void main(String[] args) {
  3. String s = new String("张三,");
  4. String hello = new String("你好!");
  5. String sentence = s.concat(hello);
  6. System.out.println(sentence);
  7. }
  8. }

运行图:

3、分割字符串成数组

string.split(参数);参数指从哪个字符分割
例子:
  1. package day6;
  2. import java.util.Arrays;
  3. public class Demo09 {
  4. public static void main(String[] args) {
  5. String sing = "长亭外 古道边 芳草碧连天 晚风拂柳笛声残 夕阳山外山 ";
  6. String[] printsing;
  7. printsing = sing.split(" ");
  8. System.out.println(Arrays.toString(printsing));
  9. }
  10. }

运行图:

4、 toUpperCase()让小写的字符串变为大写的字符串

toLowerCase()让大写的字符串变为小写的字符串

equalsIgnoreCase()字符串忽略大小写进行比较

例子:

  1. public class test {
  2. public static void main(String[] args) {
  3. String s1 = "abc";
  4. String s2 = "ABC";
  5. String s3 = s1.toUpperCase();
  6. String s4 = s2.toLowerCase();
  7. System.out.println(s3);
  8. System.out.println(s4);
  9. System.out.println(s1.equals(s4));
  10. System.out.println(s2.equals(s3));
  11. System.out.println(s1.equalsIgnoreCase(s2));
  12. }
  13. }

运行图:

5、其他常用的方法

a、indexOf()获取字符串中某个字符或字符串首次出现的位置,若没有出现则返回-1
b、lastIndexOf()获取字符串中某个字符或字符串最后一次出现的位置,若没有出现则返回-1
c、substring()从字符串的那个索引开始截取,获得一个新的字符串;两个参数的第一个参数是截取开 始的位置(包含),第二个参数是结束的位置(不包含)
d、trim()去掉字符串或者字符前后的空格
例子:
  1. public class Demo08 {
  2. public static void main(String[] args) {
  3. String s = "我爱北京天安门!天安门上太阳升!";
  4. //indexOf()获取字符串中某个字符或字符串首次出现的位置,若没有出现则返回-1
  5. System.out.println(s.indexOf("天"));
  6. //lastIndexOf()获取字符串中某个字符或字符串最后一次出现的位置,若没有出现则返回-1
  7. System.out.println(s.lastIndexOf("天"));
  8. //substring()从字符串的那个索引开始截取,获得一个新的字符串
  9. String newS = s.substring(8);
  10. System.out.println(newS);
  11. //两个参数的第一个参数是截取开始的位置(包含),第二个参数是结束的位置(不包含)
  12. String newS3 = s.substring(2, 4);
  13. System.out.println(newS3);
  14. //trim()去掉字符串或者字符前后的空格
  15. String s2 = " 杰 瑞 教 育 ";
  16. String newS4 = s2.trim();
  17. System.out.println(s2);
  18. System.out.println(newS4);
  19. }
  20. }

运行图:

StringBuffer 类

当对字符串进行修改的时候,需要使用 StringBuffer
和 String 类不同的是,StringBuffer类的对象能够被多次的修改,并且不产生新的未使用对象。

StringBuffer的创建

例子:
  1. StringBuffer sBuffer = new StringBuffer("青春无悔");
  2. System.out.println(sBuffer);

运行图:

StringBuffer和String的区别:

Java 中 StringBuffer 和 String 是有一定的区别的,首先,String 是被 final 修饰的,他的长度是不可变的,就算调用 String 的
concat 方法,那也是把字符串拼接起来并重新创建一个对象,把拼接后的 String 的值赋给新创建的对象,而 StringBuffer 的长度是可变的,调用StringBuffer 的 append 方法,来改变 StringBuffer 的长度,并且,相比较于 StringBuffer,String 一旦发生长度变化,是非常耗费内存的!
StringBuffer和String之间的转换:
例子:
  1. public static void main(String[] args) {
  2. String s = "conversion"
  3. //String ---> StringBuffer
  4. StringBuffer sb = new StringBuffer(s);
  5. //StringBuffer ---> String
  6. String s2 = sb.toString();
  7. System.out.println(sb);
  8. System.out.println(s2);
  9. scanner.close();
  10. }

运行图:

StringBuffer的常用方法:

a、append(string s)将指定的字符串追加到此字符序列。

  1. public static void main(String[] args) {
  2. StringBuffer buffer = new StringBuffer("abcde");
  3. buffer.append("f");
  4. System.out.println(buffer);
  5. }

运行图:

b、 reverse() 将此字符序列用其反转形式取代。

  1. public static void main(String[] args) {
  2. StringBuffer sBuffer = new StringBuffer("abcde");
  3. sBuffer.reverse();
  4. System.out.println(sBuffer);
  5. }

运行图:

c、 delete(int start, int end) 移除此序列的子字符串中的字符。

  1. public class Demo04 {
  2. public static void main(String[] args) {
  3. StringBuffer sBuffer = new StringBuffer("abcde");
  4. sBuffer.delete(1, 3);
  5. System.out.println(sBuffer);
  6. }
运行图:

d、 insert(int offset, int i) 将 int 参数的字符串表示形式插入此序列中。

  1. public static void main(String[] args) {
  2. StringBuffer sBuffer = new StringBuffer("abcde");
  3. sBuffer.insert(2,"!");
  4. System.out.println(sBuffer);
  5. }

运行图:

e、replace(int start, int end, String str)使用给定 String 中的字符替换此序列的子字符串中的字符。

  1. public static void main(String[] args) {
  2. StringBuffer sBuffer = new StringBuffer("abcde");
  3. sBuffer.replace(1, 4,"*");
  4. System.out.println(sBuffer);
  5. }

运行图:

Java (六、String类和StringBuffer)的更多相关文章

  1. 【java】String类和StringBuffer类常用操作

    String类是字符串常量,是不可更改的常量.而StringBuffer是字符串变量,它的对象是可以扩充和修改的.StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于Stri ...

  2. 1.2 JAVA的String类和StringBuffer类

    一.String 1.String概念 String不属于基本类型,String是final修饰的是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了如果要对String修改使用 ...

  3. Java 常用类String类、StringBuffer类

    常用类 String类.StringBuffer类 String代表不可变的字符序列 "xxxxxxx"为该类的对象 举例(1) public class Test { publi ...

  4. java.lang.String 类的所有方法

    java.lang.String 类的所有方法 方法摘要 char charAt(int index) 返回指定索引处的 char 值. int codePointAt(int index) 返回指定 ...

  5. 深入分析Java的String类的方法与特点

    字符串是任何编程语言都必须支持的变量类型,有些编程语言是直接提供了原生的变量类型,有些编程语言则使用语法特性以 SDK 的形式提供支持.在Java编程平台中,对字符串的支持使用了后者的形式,就是通过在 ...

  6. java 中String类的常用方法总结,带你玩转String类。

    String类: String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象.String类对象创建后不能修改,StringBuffer & St ...

  7. String类,StringBuffer类转字符数组

    String不可变类型和StringBuffer可变类型 String类和StringBuffer类都是字符串表示类,区别在于String对象引用变量是不可变的,而StringBuffer类对象引用变 ...

  8. java中String类为什么不可变?

    在面试中经常遇到这样的问题:1.什么是不可变对象.不可变对象有什么好处.在什么情景下使用它,或者更具体一点,java的String类为什么要设置成不可变类型? 1.不可变对象,顾名思义就是创建后的对象 ...

  9. 在java中String类为什么要设计成final?

    大神链接:在java中String类为什么要设计成final? - 程序员 - 知乎 我进行了重新排版,并且更换了其中的一个例子,让我们更好理解. String很多实用的特性,比如说“不可变性”,是工 ...

  10. java 中String类的常用方法总结,玩转String类

    String类: String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象.String类对象创建后不能修改,StringBuffer & St ...

随机推荐

  1. 证书,CSP与Openssl

    证书,CSP与Openssl 起因 最近在研究更安全的交互体系,自然想到的就是提供证书的交互方式.给用户分配一对公私钥,然后将私钥交给用户保管,用户在登录或者一些关键操作的时候通过私钥签名,从而保证其 ...

  2. Gradle 1.12用户指南翻译——第二十五章. Scala 插件

    其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...

  3. TCP的核心系列 — 重传队列的更新和时延的采样(二)

    在tcp_clean_rtx_queue()中,并非对每个ACK都进行时延采样.是否进行时延采样,跟这个ACK是否为 重复的ACK.这个ACK是否确认了重传包,以及是否使用时间戳选项都有关系. 本文主 ...

  4. 避免"Physics Space Locked"错误

    在一些cocos2d中使用物理引擎的代码中,往往会出现如下错误: Aborting due to Chipmunk error: You cannot manually reindex objects ...

  5. CMake命令行添加编译参数

    CMake命令行添加编译参数 学习自 coroserver 例程: https://github.com/windoze/coroserver coroserver 是一个应用 Boost.Asio ...

  6. 基于SVMLight的文本分类

    支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本 .非线性及高维模式识别 中表现出许多特有的优势,并能够推广应用到函数拟合等 ...

  7. SharePoint 2007 列表页定制--4个默认页定制

    以"简单的领导简介"为例,欢迎大家指正 背景:项目中需要有领导简介的模块,就开始制作领导简介,本来很简单,有一个列表就可以,然后在前台展示出来,但是客户看到我们的效果,尤其输入领导 ...

  8. Spring 学习笔记 ----依赖注入

    依赖注入 有三种方式,本文只学习下属性注入. 属性注入       属性注入即通过 setXxx方法()注入Bean的属性值或依赖对象,由于属性注入方式具有可选择性和灵活性高的优点,因此属性注入方式是 ...

  9. Redis的集群配置

    如果我们redis的压力很大,如果我们的并发高到我们读数据和写数据都有了很大压力. 那么我们可能就需要把redis分开部署,并且配置为一个『主从』的状态. 在服务器上构筑Redis的集群配置: 1.切 ...

  10. redis简单主从复制

    两台ubuntu 云服务器,分别redis主从服务器,ip地址是:123.207.96.138(主)139.199.167.251(从) 安装redis,在这里我建议给redis设置密码,之前看过一篇 ...