一、字符串常用API
1、数据类型的转换
(1)字符串 --> 字符数组:char[] ch = 字符串. toCharArray();
(2)字符串 --> 字节数组:byte[] b = 字符串. getBytes();
(3)字符串 --> 可变字符序列:StringBuilder sb = new StringBuilder( “字符串” );
(4)可变字符序列 --> 字符串:String str = 可变字符序列.toString();
(5)基本数据类型 --> 字符串:String str = 基本数据类型的值 + “ ”;
(6)字符串 --> 基本数据类型:基本数据类型 a = 基本数据类型包装类.parseXxx( “字符串” );
说明:除Character类之外,其它所有包装类,都有对应的 parseXxx() 静态方法,可以将字符串转换为基本数据类型。
(7)字符串 --> 整型:int num = Integer.valueOf(“字符串”);
(8)字符 --> 整型:int num = 字符 - ‘0’; // 字符‘0’的ASCII码值是48,char型减去48位正好是其对应的int值
2、字符串的常见操作
(1)判断
public boolean equals(Object obj)
public boolean equalsIgnoreCase(String str):忽略大小写的字母字符串比较
public boolean startsWith(String prefix):判断此字符串是否以指定的前缀开始
public boolean endsWith(String suffix):判断此字符串是否以指定的后缀结尾
(2)获取
public int length():返回字符串的长度
public String concat(String str):将指定字符串拼接到此字符串后面
public char charAt(int index):返回指定索引处的单个字符
public int indexOf(String str):返回子字符串第一次出现的索引
public String substring(int beginIndex):从指定索引开始位置,截取到此字符串末尾
public String substring(int beginIndex, int endIndex):从指定索引开始位置,截取到指定索引结束位置(不包含endIndex)
(3)转换
public char[] toCharArray():将字符串转换为字符数组
public byte[] getBytes():将字符串转换为字节数组
public String replace(String target, String replacement):用新字符串替换指定字符串
(4)分割
public String[] split(String regex):将字符串按指定的正则表达式规则,拆分为字符串数组
二、长整数的和
1、实现求两个超长非负数之和
要求:
(1)不损失精度
(2)首位均不出现无意义得0
(3)不出现无意义的小数点(如:1.00应该为1)
(4)不得使用除字符操作外的函数
import java.util.Scanner;
public class LongIntegerSum{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String num1 = sc.nextLine();
String num2 = sc.nextLine();
String sum = add(num1, num2);
System.out.println(sum);
}
private static String add(String num1, String num2) {
StringBuilder sb = new StringBuilder();
// 表示是否向前进位
int prev = 0;
// 使两个字符串的长度相同
while(num1.length() != num2.length()) {
if(num1.length() > num2.length()) {
num2 = "0" + num2;
}else{
num1 = "0" + num1;
}
}
// 将两个字符串转换为字符数组
char[] ch1 = num1.toCharArray();
char[] ch2 = num2.toCharArray();
for(int i = num1.length()-1; i >= 0; i--) {
// 字符‘0’的ASCII值是48,char型减去48位正好是其对应的int值
int m = ch1[i] - '0';
int n = ch2[i] - '0';
// 对应位上两数字相加的和,加上进位的值
int temp = m + n + prev;
if(temp >= 10) {
// 当两数字之和满10时,进位!
sb.append(temp - 10);
prev = 1;
} else {
// 当两数字之和不满10时,不进位!
sb.append(temp);
prev = 0;
}
}
// 当两个数字最高为相加满10时,向前进一位
if(prev == 1) {
sb.append('1');
}
// 整个字符数组反转后,转为字符串输出
return sb.reverse().toString();
}
}
三、求字符串最后一个单词长度
1、计算字符串最后一个单词的长度,单词以空格隔开。
(1)输入:输入一行,代表要计算的字符串,非空,长度小于5000。
(2)输出:输出一个整数,表示输入字符串最后一个单词的长度。
public class LastWordlength {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
String str = in.nextLine();
int i = str.length() - 1;
int t = 0;
while(i >= 0 && str.charAt(i) != ' '){
t++;
i--;
}
System.out.println(t);
}
}