String类是字符串常量类,该类的对象创建后不能修改。要知道:其实String底层就是char数组。而相对而言的StringBuffer/StringBuilder表示的是一个内容可变的字符序列。

一:字符串长度

String类的length()方法可以确定字符串的长度即字符的个数

public class TestString {public static void main(String[] args) {String str = "abcdefgh";int length = str.length();System.out.println("长度为:"+length);}
}

结果:

长度为:8

二:字符串的比较

1:equals(Object object)返回的是boolean类型,它将逐个比较组成字符串的每个字符是否相等,在这个方法中,大小写不一致,也不相等

2:String toLowerCase():将该字符串转换成小写,并返回转换后的字串,这时可以用equals方法比较两个字符串

3:String toUpperCase():将该字符串转换成大写,便返回转换后的字串,这时可以用equals方法比较两个字符串

4:equalsIgnoreCase(Object object)返回的是boolean类型,它也将逐个比较组成字符串的每个字符是否相等,在这个方法中忽略大小写,大小写不一致,也依然相等

5:compareTo(String anotherString)根据组成两个相互比较字符串的字符的Unicode排序,如果比较的过程中没有发现不同则返回0;如果发现了不同的地方,那么若当前字符串的Unicode大于参数中的Unicode值,则返回一个大于0的数,否则返回一个小于0的数。

public class TestString {public static void main(String[] args) {String str1 = "abcdefgh";String str2 = "AbcDEFgh";boolean b1 = str1.equals(str2);System.out.println("equals直接进行比较结果:"+b1);String str3 = str1.toLowerCase();String str4 = str1.toLowerCase();boolean b3 = str3.equals(str4);System.out.println("转换小写之后的equals直接进行比较结果:"+b3);boolean b2 = str1.equalsIgnoreCase(str2);System.out.println("忽略大小写的比较结果:"+b2);int b4 = str1.compareTo(str2);System.out.println("compare比较结果,返回unicode差值:"+b4);}
}

结果:

equals直接进行比较结果:false
转换小写之后的equals直接进行比较结果:true
忽略大小写的比较结果:true
compare比较结果,返回unicode差值:32

三:字符串的连接

1:连接字符串可以使用+号连接任意多的字符串,其他数据类型和String相连,会先转化成String,然后进行字符串的连接

2:concat()将一个字符串连接在另一个字符串之后

public class TestString {public static void main(String[] args) {String str1 = "welcome";String str2 = " to";String str3 = " Haerbin";     String str = str1+str2+str3;System.out.println("+连接后的字符串:"+str);String s = str1.concat(str2).concat(str3);System.out.println("concat连接之后的字符串:"+s);}
}

结果:

+连接后的字符串:welcome to Haerbin
concat连接之后的字符串:welcome to Haerbin

四:字符串查找与截取

1:public int indexOf(String ch):返回字符串中第一次出现参数的位置,字符串的位置从0开始

String str1 = "abchbcyreabccvb";int index = str1.indexOf("bc");System.out.println("位置为:"+index);//结果:1

2:public int indexOf(String ch,int fromIndex):从fromIndex开始,向后查找,返回字符串中第一次出现参数的位置

String str1 = "abchbcyreabccvb";int index = str1.indexOf("bc",5);System.out.println("位置为:"+index);//结果:10

3:public int lastIndexOf(String ch):返回字符串中最后一次出现参数的位置

String str1 = "abchbcyreabccvb";int index = str1.lastIndexOf("bc");System.out.println("位置为:"+index);//结果:10

4:public int lastIndexOf(String ch,int fromIndex):从fromIndex开始,向前查找,返回字符串最后一次出现参数的位置

String str1 = "abchbcyreabccvb";int index = str1.lastIndexOf("bc",5);System.out.println("位置为:"+index);//结果:4

5:public String subString(int beginIndex):从beginIndex开始包括beginindex位置以后的子字符串

String str1 = "abchbcyreabccvb";String str= str1.substring(6);System.out.println("字串为:"+str);//结果:yreabccvb

6:public String subString(int beginindex,int endindex):从beginindex开始到endindex-1为止的字符串(包括beginindex和endindex-1两个位置上的字符)

String str1 = "abchbcyreabccvb";String str= str1.substring(2,8);System.out.println("字串为:"+str);//结果:chbcyr

7:public boolean startsWith(String str):返回boolean类型,判断字符串是不是以str开头

String str1 = "abchbcyreabccvb";boolean bool = str1.startsWith("Abc");System.out.println("以Abc开头吗?"+bool);//结果:false

8:public boolean endsWith(String str):返回boolean类型,判断字符串是不是以str结尾

String str1 = "abchbcyreabccvb";boolean bool = str1.endsWith("cvb");System.out.println("以cvb结尾吗?"+bool);//结果:true

9:public boolean startsWith(String ch,int beginindex):从begin开始的子字符串(包括begin位置的字符)是不是以ch开头

String str1 = "abchbcyreabccvb";boolean bool = str1.startsWith("bc",4);System.out.println("以bc开头吗?"+bool);//结果:true

10:public String trim():去掉字符串的前导后导空格,字符串中间的空格去不掉

String str1 = " welcome to Haerbin  ";String str = str1.trim();System.out.println("trim后的结果:"+str);//结果:welcome to Haerbin

五:StringBuffer/StringBuilder字符串

这两个和String的区别在于:这两个创建的对象的内容,大小可变。

这两个之间的区别在于:StringBuffer是线程安全的,而StringBuilder是非线程安全的,但他的优势在于,由于少了许多同步操作,所以效率更高。

基本方法:

append(String str):实现字符串的大量拼接,效率高

length():返回字符串的长度

toString():返回对应的String类型的数据

public class TestString {public static void main(String[] args) {StringBuffer str1 = new StringBuffer("abc");StringBuffer str2 = new StringBuffer("123");String str = str1.append(str2).toString();//先拼接后转换System.out.println("拼接后的字符串为:"+str);}
}

结果:

拼接后的字符串为:abc123

Java中类似于这样的知识点还有很多,他们很零碎,且规则还略有偏差,我们在应用的时候要注意细小的差别,以防止出错。

转载于:https://blog.51cto.com/cinderella7/1265574

Java中的String字符串相关推荐

  1. Java中的String字符串及其常用方法

    字符串(String) 文章目录 字符串(String) 直接定义字符串 常用方法 字符串长度 toLowerCase() & toUpperCase()方法 trim()方法去除空格 判空 ...

  2. java 字符串是对象吗_解析Java中的String对象的数据类型

    解析Java中的String对象的数据类型 2007-06-06 eNet&Ciweek 1. 首先String不属于8种基本数据类型,String是一个对象. 因为对象的默认值是null,所 ...

  3. 我说我精通字符串,面试官竟然问我Java中的String有没有长度限制!?

    String是Java中很重要的一个数据类型,除了基本数据类型以外,String是被使用的最广泛的了,但是,关于String,其实还是有很多东西容易被忽略的. 就如本文我们要讨论的问题:Java中的S ...

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

    最近在学习Java的时候,遇到了这样一个问题,就是String,StringBuilder以及StringBuffer这三个类之间有什么区别呢,自己从网上搜索了一些资料,有所了解了之后在这里整理一下, ...

  5. Java中的String、StringBuilder、StringBuffer

    Java中的String是个永恒的话题,直说我想说的. 1.String 是永远不会变的,传递的引用是一个Copy,无论刮风下雨,它都在自己的小窝里呆的好好的. 2.重载"+"和S ...

  6. Java中的string定义的两种方法和区别

    java中的String定义的两种方法和区别 第一种:new方式 String s1 = new String("hello world"); String s2 = new St ...

  7. Java 中的 String 真的是不可变的吗

    转载自   Java 中的 String 真的是不可变的吗 我们都知道 Java 中的 String 类的设计是不可变的,来看下 String 类的源码. public final class Str ...

  8. Java中关于String类型的10个问题

    转载自   Java中关于String类型的10个问题 1. 如何比较两个字符串?用"="还是equals 简单来说,"=="是用来检测俩引用是不是指向内存中的 ...

  9. Java中创建String的两道面试题及详解

    转载自 Java中创建String的两道面试题及详解 我们知道创建一个String类型的变量一般有以下两种方法: String str1 = "abcd";String str2 ...

最新文章

  1. android studio 同类,让Android Studio的Project视图和Anroid视图类似
  2. 三种途径助物联网改变业务 省心省时省成本
  3. 一个项目的开发流程是怎样的? 原名:「只差程序员」离优秀的产品还有多远?...
  4. NOIP模拟测试21「折纸·不等式」
  5. ubuntu c++检测usb口事件变化_炼就“火眼金睛”,FETA40i-C核心板“牵手”光时域反射仪...
  6. 漫步数理统计五——条件概率与独立(上)
  7. bash中的grep函数_如何在Bash中编写函数
  8. 【计算机组成原理】课本总览
  9. java 先入先出_一道java的基础题:一个线程安全的后进先出队列
  10. C#中的lock(锁)应用例子
  11. 对帧率、I/P率、I帧间隔的理解2021-11-16
  12. 认识微型计算机 ppt,认识微型计算机(PPT课件).ppt
  13. matlab高斯型隶属函数,图高斯型隶属函数.PPT
  14. 双麦定向拾音束回音消除及远场拾音降噪模块 A-68测试1-(原理篇)
  15. 在线服务器密码爆破,服务器3389被爆破,我想知道他用哪些密码尝试过 - winServer论坛 - 51CTO技术论坛_中国领先的IT技术社区...
  16. vue 大量图片展示_vue动态显示图片
  17. java script 月日年转年月日_如何将这种格式的日期(2010年7月13日星期二00:00:00 CEST)转换为Java日期(字符串来自alfresco属性)...
  18. MATLAB中FFT的使用方法(频谱分析)
  19. 如何恢复电脑里C盘删除的文件?
  20. 索泰新款 ZBox 怎么样

热门文章

  1. arguments.length
  2. MySQL:基础—数据分组
  3. Android activity属性
  4. Hello World on Impala
  5. ubutu14.04无法使用sudo,也无法切换到root用户去解决问题怎么办?
  6. weblogic.jdbc.wrapper.Blob_oracle_sql_BLOB cannot be cast to oracle.sql.BLOB 解决方法
  7. C++~回溯+贪心法解决01背包问题
  8. 未能从程序集“System.ServiceModel, Version=3.0.0.0问题解决
  9. js获取url地址栏参数的方法,解决中文乱码问题,能支持中文参数
  10. VSCODE编译头文件时函数没有定义的解决方案(VSCODE手动链接C文件方法)