首页 > 编程语言 >Java学习— String 类

Java学习— String 类

时间:2023-11-03 22:35:32浏览次数:37  
标签:返回 字符 Java String int 学习 indexOf 字符串

String 创建的字符串存储在公共池中,而 new 创建的字符串对象在堆上:

String s1 = "Runoob";              // String 直接创建
String s2 = "Runoob";              // String 直接创建
String s3 = s1;                    // 相同引用
String s4 = new String("Runoob");   // String 对象创建
String s5 = new String("Runoob");   // String 对象创建

注 - String类是不可变的,因此一旦创建,就无法更改String对象。 如果想要对字符串进行大量修改,则应使用StringBuffer和StringBuilder

public class StringDemo {

   public static void main(String args[]) {
      String greeting = "Hi,Welcome to ZhongGuo";
      //  length() 方法,它返回字符串对象包含的字符数,表示字符串长度
      int len = greeting.length();
      // 字符串通常使用+运算符连接
      System.out.println( greeting+" 字符串的长度是: " + len );
   }
}

执行上面示例代码,得到下结果:

Hi,Welcome to ZhongGuo 字符串的长度是: 22


格式化字符串

Java中使用printf()format()方法来打印带有格式化数字的输出。 String类有一个等效的类方法format(),它返回一个String对象而不是一个PrintStream对象。

使用Stringstatic format()方法可以创建重用的格式化字符串,而不是一次性打印语句。 例如 -

System.out.printf("The value of the float variable is " +
                  "%f, while the value of the integer " +
                  "variable is %d, and the string " +
                  "is %s", floatVar, intVar, stringVar);

上面打印语句可使用格式化写为:

String fs;
fs = String.format("The value of the float variable is " +
                   "%f, while the value of the integer " +
                   "variable is %d, and the string " +
                   "is %s", floatVar, intVar, stringVar);
System.out.println(fs);


String 方法

  • String.charAt(int index) ---方法用于返回指定索引处的字符。索引范围为从 0 到 length() - 1。
  • String.toString() ---方法返回此对象本身(它已经是一个字符串)
  • String.toCharArray() ---方法将字符串转换为字符数组
  • String.toLowerCase() ---方法将字符串转换为小写
  • String. toUpperCase() ---方法将字符串小写字符转换为大写
  • String.isEmpty() ---方法用于判断字符串是否为空,如果字符串为空返回 true,否则返回 false
String myStr2 = "";        // 空字符串          
String myStr3 = "    ";    // 多个空格,length() 不为 0
  • String.equals() ---方法用于比较两个字符串的内容是否相等。如果相等则返回 true;否则返回 false
  • String.equalsIgnoreCase() ---方法用于将字符串与指定的对象比较,不考虑大小写
  • String.compareTo(Object o)   o -- 要比较的对象  ---方法用于字符串与对象进行比较
  • String.compareTo(String anotherString)   anotherString -- 要比较的字符串   ---方法用于按字典顺序比较两个字符串

返回值是整型,它是先比较对应字符的大小(ASCII码顺序),如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的长度差值,如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第二个字符做比较,以此类推,直至比较的字符或被比较的字符有一方结束。

• 如果参数字符串等于此字符串,则返回值 0;
• 如果参数字符串大于此字符串,则返回大于 0 的值;
• 如果参数字符串小于此字符串,则返回小于 0 的值;
  • String.startsWith(String prefix, int toffset)  ---用于检测字符串是否以指定的前缀开始。如果是则返回 true;否则返回 false。
  • String.endsWith(String suffix)   ---用于测试字符串是否以指定的后缀结束    如何匹配则返回 true;否则返回 false
  • String.replace(char searchChar, char newChar)  ---通过用 newChar 字符替换字符串中出现的所有searchChar字符,并返回替换后的新字符串
  • String.replaceAll(String regex, String replacement) ---方法使用给定的参数 replacement 替换字符串所有匹配给定的正则表达式的子字符串
  • String.replaceFirst(String regex, String replacement) --- 方法使用给定的参数 replacement 替换字符串第一个匹配给定的正则表达式的子字符串。  成功则返回替换的字符串,失败则返回原始字符串。
  • public int indexOf(int ch): 返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。
  • int indexOf(int ch, int fromIndex): 返回从 fromIndex 位置开始查找指定字符在字符串中第一次出现处的索引
  • int indexOf(String str): 返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。
  • int indexOf(String str, int fromIndex): 返回从 fromIndex 位置开始查找指定字符在字符串中第一次出现处的索引
public class Main {
    public static void main(String args[]) {
        String string = "aaa456ac";  
        //查找指定字符是在字符串中的下标。在则返回所在字符串下标;不在则返回-1.  
        System.out.println(string.indexOf("b")); // indexOf(String str); 返回结果:-1,"b"不存在  
  
        // 从第四个字符位置开始往后继续查找,包含当前位置  
        System.out.println(string.indexOf("a",3));//indexOf(String str, int fromIndex); 返回结果:6  

  
        //(与之前的差别:上面的参数是 String 类型,下面的参数是 int 类型)参考数据:a-97,b-98,c-99  
        // 从头开始查找是否存在指定的字符  
        System.out.println(string.indexOf(99));//indexOf(int ch);返回结果:7  
        System.out.println(string.indexOf('c'));//indexOf(int ch);返回结果:7  

        //从fromIndex查找ch,这个是字符型变量,不是字符串。字符a对应的数字就是97。  
        System.out.println(string.indexOf(97,3));//indexOf(int ch, int fromIndex); 返回结果:6  
        System.out.println(string.indexOf('a',3));//indexOf(int ch, int fromIndex); 返回结果:6  
    }
}
  • str.matches(regex) 用于检测字符串是否匹配给定的正则表达式。匹配则返回 true
  • str.split(String regex, int limit)  方法根据匹配给定的正则表达式来拆分字符串。

regex -- 正则表达式分隔符  limit -- 分割的份数。  https://www.runoob.com/java/java-string-split.html

  • str.substring(int beginIndex, int endIndex) 返回字符串的子字符串

beginIndex -- 起始索引(包括), 索引从 0 开始      endIndex -- 结束索引(不包括)

  • str.valueOf(char c):  返回 char 参数的字符串表示形式


Character 类

Character 类用于对单个字符进行操作。Character 类在对象中包装一个基本类型 char 的值

Character类提供了一系列方法来操纵字符。你可以使用Character的构造方法创建一个Character类对象,例如:

Character ch = new Character('a');

Character.isDigit('5')    用于判断指定字符是否为数字。如果字符为数字则返回 true;否则返回 false。

Character.isLetter() 方法用于判断指定字符是否为字母。如果字符为字母,则返回 true;否则返回 false

Character.isWhitespace() 方法用于判断指定字符是否为空白字符,空白符包含:空格、tab 键、换行符。

Character.toString()  方法用于返回一个表示指定char值的String对象。结果是长度为 1 的字符串,仅由指定的 char 组成


StringBuffer 和 StringBuilder 类

和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。

在使用 StringBuffer 类时,每次都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,所以如果需要对字符串进行修改推荐使用 StringBuffer。

StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。

由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类

public class RunoobTest{
    public static void main(String args[]){
        StringBuilder sb = new StringBuilder(10);
        sb.append("Runoob..");
        System.out.println(sb);  
        sb.append("!");
        System.out.println(sb); 
        sb.insert(8, "Java");
        System.out.println(sb); 
        sb.delete(5,8);
        System.out.println(sb);  
    }
}


StringBuffer 方法

以下是 StringBuffer 类支持的主要方法:

序号

方法描述

1

public StringBuffer append(String s)        将指定的字符串追加到此字符序列。

2

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

3

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

4

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

5

insert(int offset, String str)           将 str 参数的字符串插入此序列中。

6

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







标签:返回,字符,Java,String,int,学习,indexOf,字符串
From: https://blog.51cto.com/u_15520037/8174782

相关文章

  • linux使用top命令java进程占用65%内存和160%CPU,是因为什么咋解决?
    Java进程占用大量内存和CPU的原因可能有多种,以下是一些可能的原因和解决方法:内存泄漏:Java应用程序可能存在内存泄漏,即未正确释放不再使用的内存。您可以使用Java内存分析工具(如VisualVM、MAT等)来检测和分析应用程序的内存使用情况,并查找潜在的内存泄漏问题。一旦发现内存泄漏,您可以......
  • java中的异常
    参考:牛客https://m.nowcoder.com/questions?uuid=bcb966db4d2c43768bc077296a8a1017......
  • java
    1.在src新建一个Java类  (代码在src里面写) 2.快捷键3.新建项目 ......
  • Redis的Java客户端
     Redis的Java客户端很多,常用的几种:JedisLettuceSpringDataRedisSpring对Redis客户端进行了整合,提供了SpringDataRedis,在SpringBoot项目中还提供了对应的Starter,即spring-boot-starter-data-redis。......
  • Java多线程
    构造方法//参数最全的构造方法publicThreadPoolExecutor(intcorePoolSize,//核心线程数intmaximumPoolSize,//最大线程数longkeepAliveTime,//非核心线程最长等待新任务的时间TimeUnituni......
  • 一道入门的java安全题
    【XCTF】Zhuanxv收获java题的一般流程HQL注入SQL注入看题目录扫描dirsearch扫目录,发现list目录:一个登录界面,本着尽量不写sql注入题目的原则(因为太菜了这方面,抓包查看代码:js代码中为了加载图片直接写出了后台存储图像路径,那试试能不能通过这个url和参数直接读......
  • 2D物理引擎 Box2D for javascript Games 第七章 子弹和感应器
    2D物理引擎Box2DforjavascriptGames第七章子弹和感应器你知道Box2D可以在每一个时间步中管理刚体间的碰撞并决算它们。总之,在愤怒的小鸟中制作攻城机器期间,发生了一些错误你可能需要注意一下,有时抛射物会穿过城堡,忽略了碰撞。这里发生了什么?通常,Javascript游戏运行......
  • Java拾贝第十五天——集合之Map
    从上图中可以发现,Map接口与Collection接口是不同的。Map接口中的每个元素都使用"键值对"的形式存储在集合中。(key→value)其接口定义如下:publicinterfaceMap<K,V>K泛型代表的是key,V泛型代表的是value。在使用Map时必须指定两个具体的类型。Map常见的实现子类:HashMap,TreeM......
  • 【转载】指数平滑 —— 学习笔记
    原文地址:https://zhuanlan.zhihu.com/p/34532274  注意:本文只转载了原文部分内容,余下的具体例子并没有转载,有需要继续阅读者请转自原文地址继续阅读:https://zhuanlan.zhihu.com/p/34532274  =========================================       余......
  • 基本的Dos命令学习
    打开CMD的方式(Dos)1.win键+R输入“cmd”打开控制台常用的Dos命令1.#盘符切换输入"d:"2.#查看目录下的所有文件输入"dir"3.#切换目录"cd"(changedirectory)4.#切换上一级"cd.."5.#清除屏幕"cls"(clearscreen)6.#退出终端"exit"7.#查看电脑ip"ipconfig&q......