JAVA 字符串基础

JAVA 字符串

Acwing Java语法基础笔记

ASCII码

每个常用字符都对应一个-128 ~ 127的数字,二者之间可以相互转化。注意:目前负数没有与之对应的字符。

常用ASCII值:'A'- 'Z'65 ~ 90'a' - 'z'97 - 122,0 - 9 48 - 57

字符可以参与运算,运算时会将其当做整数:

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int a = 'B' - 'A';
        int b = 'A' * 'B';
        char c = 'A' + 2;

        System.out.println(a); //1
        System.out.println(b); //65*66=4290
        System.out.println(c); //C
    }
}

String类

初始化:(常见的)

String a = "Hello World";
String b = "My name is ";
String x = b;  // 存储到了相同地址(x和b都指向了相同的String对象)
String c = b + "yxc";  // String可以通过加号拼接
String d = "My age is " + 18;  // int会被隐式转化成字符串"18"
System.out.println(d.concat("18"));  // 字符串连接

(不常见的)

String str = String.format("My age is %d", 18);  // 格式化字符串,类似于C++中的sprintf
String money_str = "123.45";
double money = Double.parseDouble(money_str);  // String转double
String m_s = "123";
int m = Integer.parseInt(m_s)  //String转int,Double,Integer分别为双精度浮点数和整数对象   

String 为只读变量不能修改,(C++可修改)例如:

String a = "Hello ";
a += "World";  // 会构造一个新的字符串,和原来的不在同一地址

访问String中的字符:(不能像C++一样直接访问下标)

charAt (int index) 方法用于返回指定索引处(index)的字符。索引范围为从 0 到 length() - 1。

String str = "Hello World";
for (int i = 0; i < str.length(); i ++ ) {
    System.out.print(str.charAt(i));  // 只能读取,不能写入
}

常用API:(所有改变字符串的API都不会改变原串的值,而是返回一个新串)

  • length():返回长度,注意此处要加小括号,区分于数组求长度,数组求长度的length不加小括号

  • trim():去掉首尾的空白字符(空格,回车,制表符等)

  • split(String regex):分割字符串

  • indexOf(char c,int fromIndex)indexOf(String str,int fromIndex)lastIndexOf(char c,int fromIndex)lastIndexOf(String str,int fromIndex):以fromIndex为始查找字符或字符串出现的位置,找不到返回-1

    indexOf返回从fromIndex往后找字符或字符串第一次出现的位置,lastIndexOf返回从0往后以fromIndex为止字符或字符串最后一次出现的位置)

  • equals():判断两个字符串是否相等,注意不能直接用==(等号比较的是两String对象的地址是否相同)

  • compareTo():按字典顺序比较两个字符串,判断两个字符串的字典序大小,负数表示小于,0表示相等,正数表示大于,输出的正负数代表两字符串按照字典序出现第一个可比较的字符的差值

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

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

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

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

  • replace(char oldChar, char newChar):替换字符,返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。

  • replace(String oldRegex, String newRegex):替换字符串(可用replace 函数进行删除,将待删除的替换为空)

  • substring(int beginIndex, int endIndex):返回[beginIndex, endIndex)中的子串,省略第二参数时返回到末尾的结果(C++第一个参数为beginIndex,第二个下标为length)

  • toCharArray():将字符串转化成字符数组(遍历字符串比较麻烦,转换成字符数组容易遍历)

StringBuilder、StringBuffer(可修改字符)

String不能被修改,如果打算修改字符串,可以使用StringBuilderStringBuffer

StringBuffer线程安全(一般多线程编程时使用),速度较慢;StringBuilder线程不安全(算法题常用),速度较快。

StringBuilder sb = new StringBuilder("Hello ");  // 初始化
sb.append("World");  // 拼接字符串
System.out.println(sb);

for (int i = 0; i < sb.length(); i ++ ) {
    sb.setCharAt(i, (char)(sb.charAt(i) + 1));  // 读取和写入字符
}
System.out.println(sb);

常用API:

  • append():将指定字符串追加到此字符序列(类似python数组追加)
  • reverse():翻转字符串
  • delete(int start,int end): 移除此序列的子字符串中的字符。
  • insert(int offset,obj x):将整数或字符或字符串x插入到offset处。
  • replace(int start,int end,String str):使用给定 String 中的字符替换此序列的子字符串中的字符。(注意这个replaceStringreplace用法不同)
  • setCharAt(int index, char ch):将给定索引处的字符设置为 ch
  • StringBuilderStringBuffer的比较(==)需要先转换为String类(toString())以后才能比较
  • toString()可将StringBuilderStringBuffer转为String
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值