Java之字符串

Java之字符串

String

  • String对象时不可变的。
  • 不论使用任何String的修改方法,它都会创建一个全新的String对象。
  • String的+和+=是Java中仅有的两个重载过的操作符。而且这种操作通过反编译后查看,它是通过StringBuilder完成的。
  • 常用方法:
    • length():获取字符串长度。
    • charAt():获取指定下标对应的字符,如果下标超出,则会报字符串越界异常。
    • toCharArray():根据字符串生成一个char数组。
    • equals():比较两个字符串的内容是否相同。
    • equalsIgnoreCase():忽略大小写,比较两个字符串的内容是否相同。
    • compareTo():用于比较两个字符串对象的大小关系。它返回一个整数,表示字符串的大小关系。
      • 如果s1等于s2,则compareTo方法返回0;
      • 如果s1小于s2,则返回一个负整数,其绝对值为s1和s2第一个不同字符的差值;
      • 如果s1大于s2,则返回一个正整数,其绝对值为s1和s2第一个不同字符的差值。
    • contains():检查字符串是否包含指定字符串。
    • contentEquals():必将字符串内容是否相同。
    • startsWith():检查是否以指定的字符串开头。
    • endsWith():检查是否以指定的字符串结尾。
    • indexOf():如果字符串不包含该字符串,返回-1;否则返回该字符串在字符串中的起始索引。
    • lastIndexOf():与indexOf()相反,从后向前搜索。
    • substring():取子字符串。区间左闭右开。
    • concat():返回一个新的字符串对象,内容为原来的和指定的拼接在一起的。
    • replace():使用新字符串替换字符串中指定的字符串。
    • toUpperCase():将字符串中所有的字母转换成大写。
    • toLowerCase():将字符串中所有的字母转换成小写。
    • trim():去掉字符串两端的空白,如果两端没有空白,则返回原来的对象,否则创建新的对象。
    • String.valueOf():将指定参数转换成字符串。
    • String.format():生成格式化字符串。
    •  String a = "a b c ";
       String b = "A B C ";
       System.out.println("length:" + a.length());
       System.out.println("charAt 0:" + a.charAt(0));
       System.out.println("toCharArray:" + Arrays.toString(a.toCharArray()));
       System.out.println("equals:" + a.equals(b));
       System.out.println("equalsIgnoreCase:" + a.equalsIgnoreCase(b));
       System.out.println("compareTo:" + a.compareTo(b));
       System.out.println("contains b:" + a.contains("b"));
       System.out.println("contentEquals:" + a.contentEquals("a b c"));
       System.out.println("startsWith a:" + a.startsWith("a"));
       System.out.println("endsWith b:" + a.endsWith("b"));
       System.out.println("indexOf b:" + a.indexOf("a b"));
       System.out.println("lastIndexOf b:" + a.lastIndexOf("b"));
       System.out.println("substring 0:" + a.substring(0));
       System.out.println("substring 0~2:" + a.substring(0, 3));
       System.out.println("concat bbb:" + a.concat("bbb"));
       System.out.println("replace b e:" + a.replace("b", "e"));
       System.out.println("toUpperCase:" + a.toUpperCase());
       System.out.println("toLowerCase:" + a.toLowerCase());
       System.out.println("trim:" + a.trim());
       System.out.println("String.valueOf 100:" + String.valueOf(100));
       String s = String.format("你好:%s, 这是你来到这的第%d天,截止到目前,你的累计收入为:%.2f元", "lala", 30, 7850.90);
       System.out.println(s);
       
       输出:
       length:6
       charAt 0:a
       toCharArray:[a,  , b,  , c,  ]
       equals:false
       equalsIgnoreCase:true
       compareTo:32
       contains b:true
       contentEquals:false
       startsWith a:true
       endsWith b:false
       indexOf b:0
       lastIndexOf b:2
       substring 0:a b c 
       substring 0~2:a b
       concat bbb:a b c bbb
       replace b e:a e c 
       toUpperCase:A B C 
       toLowerCase:a b c 
       trim:a b c
       String.valueOf 100100
       你好:lala, 这是你来到这的第30天,截止到目前,你的累计收入为:7850.90元。
      

常用的类型转换字符

字符类型
d十进制整数
cUnicode字符
bBoolean值
sString
f十进制浮点数
e科学计数法表示的浮点数
x十六进制整数
h十六进制散列码
%字符“%”

Scanner

Scanner scanner = new Scanner("wangwang\n10\nrun");
String name = scanner.nextLine();
System.out.println("name = " + name);
int age = scanner.nextInt();
System.out.println("age = " + age);
String hobby = scanner.next();
System.out.println("hobby = " + hobby);

输出:
name = wangwang
age = 10
hobby = run

StringBuilder

  • Java 5引入。
  • 鉴于String的缺点,当我们需要平凡操作一个字符串时,尽量使用StringBuilder来完成。
  • 常用方法:
    • insert()、replace()、substring()、reverse()、append()、toString()、delete()。

StringBuffer

  • 相较于StringBuilder,它是线程安全的。

toString()的递归问题

class Cat {

    @Override
    public String toString() {
        //注意:此处使用this会调用toString()方法导致递归
        //return "对象地址为:" + this;
        return super.toString();
    }

    public static void main(String[] args) {
        Cat cat = new Cat();
        System.out.println(cat);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值