java之字符串

字符与整数的联系——ASCII码

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

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        char c = 'a';
        System.out.println((int)c);

        int a = 66;
        System.out.println((char)a);
    }
}

常用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);
        System.out.println(b);
        System.out.println(c);
    }
}

String类

java中的字符串是单独有一个类型的,String类,String是一个对象

初始化:

①因为java中String是一个对象,它的变量之间赋值会指向同一段内存,同一个变量
②字符串中的+表示拼接的意思
③字符串也可以用对应printf来格式化输出,对应的是%s
④java特性:字符串也可跟基本数据类型做运算,会把基本数据类型隐式转化成对应字符串,再拼接
⑤将一段内容格式化输入到字符串中:利用API String.format

String str = String.format(My age is %d”, 18); // 格式化字符串,类似于C++中的sprintf

⑥将字符串转化为对应基本数据类型:

String money_str =123.45;
double money = Double.parseDouble(money_str); // String转double

int的话就是Integer.parseInt()
⑦将基本数据类型转化为对应字符串:
方式一:利用拼接空字符串

int money=123;
String money_str=”“+money;

方式二:用对象定义基本数据类型,这样就可以利用API toString()

Integer money=123;
String money_str=money.toString();
String a = "Hello World";
String b = "My name is ";
String x = b;  // 存储到了相同地址
String c = b + "yxc";  // String可以通过加号拼接
String d = "My age is " + 18;  // int会被隐式转化成字符串"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

只读变量,不能修改,例如:

只读变量,不能修改:c + + 中的string类是可以修改的,而java中的String类是不能修改的,每次修改完之后就会变成一个全新的变量

String a = "Hello ";
a += "World";  // 会构造一个新的字符串

访问String中的字符:

c + + 中访问字符串跟访问数组是一样的,而java中只能通过API来访问

String str =Hello World;
for (int i = 0; i < str.length(); i ++ ) { //数组的length是不加括号的,而字符串的length是需要加括号的
System.out.print(str.charAt(i)); // 只能读取,不能写入
}

常用API:

  • length():返回长度
  • split(String regex):分割字符串
  • indexOf(char c)、indexOf(String str)、lastIndexOf(char c)、lastIndexOf(String str):查找最左边和最右边,找不到返回-1
  • equals():判断两个字符串是否相等,注意不能直接用==(写等号是判断地址是否相等)
  • compareTo():判断两个字符串的字典序大小,负数表示小于,0表示相等,正数表示大于
  • startsWith():判断是否以某个前缀开头
  • endsWith():判断是否以某个后缀结尾
  • trim():去掉首尾的空白字符
  • toLowerCase():全部用小写字符
  • toUpperCase():全部用大写字符
  • replace(char oldChar, char newChar):替换字符
  • replace(String oldRegex, String newRegex):替换字符串
  • substring(int beginIndex, int endIndex):返回[beginIndex, endIndex)中的子串
  • toCharArray():将字符串转化成字符数组

输入与输出

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str1 = sc.next();  // 输入字符串,遇到空格、回车等空白字符时停止输入
        String str2 = sc.nextLine();  // 输入一整行字符串,遇到空格不会停止输入,遇到回车才会停止

        System.out.println(str1);  // 可以直接输出
        System.out.printf("%s\n", str2);  // 也可以格式化输出,用 %s 表示字符串
    }
}

StringBuilderStringBuffer

String不能被修改,如果打算修改字符串,可以使用StringBuilderStringBuffer
(写算法常用StringBuffer,因为不支持多线程速度快。写多线程代码时一定要用StringBuilder)
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:
reverse():翻转字符串

sb.reverse()//翻转字符串

next():读入到空格停止
nextLine():读入到换行停止

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想进步的22级本科生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值