您的位置:首页 > 游戏 > 手游 > 【Java语法基础】4.字符串

【Java语法基础】4.字符串

2024/12/23 15:05:56 来源:https://blog.csdn.net/weixin_57133810/article/details/140642874  浏览:    关键词:【Java语法基础】4.字符串

4.字符串

字符char无需多言,单引号。

String类

基本操作

String类的访问不能通过数组访问,只能通过API,并且只能访问不能修改,如:

String a = "hello";
for(int i = 0; i < a.length(); i ++)
{//注意:只能访问不能修改System.out.println(a.charAt(i));//这是错的:a.charAt(i) = 'a';
}

一些基本操作如下代码所示:

package org.example;public class Main{public static void main(String[] args) throws Exception{String a = "hello world";String b = "my name is ";String x = b; //String是对象,字符串其实是指向了同一个地址String c = b + 18;  //(基本类型)18被隐式转化为字符串String d = b + "xjf";System.out.printf("%s\n", c);System.out.println(d);//格式化字符串String name = String.format("My name is %d", 18);System.out.println(name);//字符串转化为基本类型String money = "123.45";String money_int = "123";double dm = Double.parseDouble(money);System.out.println(dm);int im = Integer.parseInt(money_int);System.out.println(im);//基本类型转化为字符串:空字符串+基本类型即可int test = 123;String test_str = "" + 123;System.out.println(test_str);}
}

注意:java里面的String类与C++不一样,如果修改其值,会构造全新的字符串,不在原来的地址了

常用API

还有一些常用的API,如下所示:

涉及到串的变化不会修改原字符串的值,会重新建立一个新的字符串。

  • length():返回长度,注意这是一个函数,不是数组里面的属性。
  • split(String regex):分割字符串
  • indexOf(char c)indexOf(String str)lastIndexOf(char c)lastIndexOf(String str):字符或字符串第一次、最后一次出现的下标
  • equals():比较两个字符串是否相等,如下:
String a = "hello world";
String b = "hello world";
System.out.println(a.equals(b));
  • compareTo():判断两个字符串的字典序大小,负数表示小于,0表示相等,正数表示大于

  • startsWith():判断是否以某个前缀开头

  • endsWith():判断是否以某个后缀结尾

  • trim():去掉首尾的空白字符

  • toLowerCase():全部用小写字符

  • toUpperCase():全部用大写字符

  • replace(char oldchar, char newchar):替换字符

  • replace(String oldstr, String newstr):替换字符串,例如:

String a = "hello world ";
System.out.println(a.replace("h", "p"));
  • substring(int beginIndex, int endIndex):返回[beginIndex, endIndex)中的子串
String str = "hello";
String strs = str.substring(0, 2);
System.out.println(strs);  //返回:he
  • toCharArray():字符串转化为字符数组

注意:比较字符串不能使用==进行比较,只能使用equals()。这是因为,==比较的是两个字符串的地址而非其实际的内容

StringBuilder等

注:String不支持修改,那么:

String a = "a";
a += "b";  //先复制"a",再添加"b"

如果大量使用插入,则插入 N N N个元素的时间复杂度为 O ( N 2 ) O(N^2) O(N2),太慢了。

若打算修改字符串,可以采用:StringBuilderStringBuffer

  • StringBuilder:线程安全,但速度较慢;
  • StringBuffer:线程不安全,但速度较快。不支持多线程
public class Main{public static void main(String[] args) throws Exception{StringBuilder sb = new StringBuilder("hello");//拼接,与python一样sb.append(" world");System.out.println(sb);//翻转字符串sb.reverse();System.out.println(sb);//修改for(int i = 0; i < sb.length(); i ++){sb.setCharAt(i, (char)(sb.charAt(i) + 1));}System.out.println(sb);}
}

如果想将StringBuilderStringBuffer转化为String,调用toString()函数即可。

输入与输出

package org.example;
import java.util.Scanner;public class Main{public static void main(String[] args) throws Exception{Scanner sc = new Scanner(System.in);String a = sc.next(); //遇到空格、回车、制表符等就停止String b = sc.nextLine(); //读取一整行字符串,遇到回车才停止System.out.println(a);System.out.printf("%s", b); //%s输出也可}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com