String StringBuilder StringBuffer
String的常用函数
length() : 获取长度
charAt(int index) : 获取字符
contains(String str) : 字符串中是否包含某一个字串
isEmpty():判断是否是空字符串
trim():返回字符串的副本,忽略前导空白和尾部空白
boolean equals(Object obj):比较字符串的内容是否相同
String substring(int beginIndex, int endIndex) :返回一个新字符串,它是此字符串从beginIndex开始截取到endIndex(不包含)的一个子字符串
String.valueOf()将其他类型转换成String类型,包括char[], char, long, int等
char[] toCharArray()将String转换成char型数组
StringBuffer的常用函数(与StringBuilder一样)
StringBuffer append(xxx):提供了很多的append()方法,用于进行字符串拼接
StringBuffer delete(int start,int end):删除指定位置的内容
StringBuffer replace(int start, int end, String str):把[start,end)位置替换为str
StringBuffer insert(int offset, xxx):在指定位置插入xxx
StringBuffer reverse() :把当前字符序列逆转
public int indexOf(String str)
public String substring(int start,int end):返回一个从start开始到end索引结束的左闭右开区间的子字符串
public int length()
public char charAt(int n )
public void setCharAt(int n ,char ch)
异同
String:不可变的字符序列;底层使用char[]存储
StringBuffer:可变的字符序列;线程安全的,效率低;底层使用char[]存储
StringBuilder:可变的字符序列;jdk5.0新增的,线程不安全的,效率高;底层使用char[]存储
一般用法
考虑效率的问题
public class Solution {
public String PrintMinNumber(int [] numbers) {
String[] temp = new String[numbers.length];
for(int i = 0; i < numbers.length; i++) {
temp[i] = String.valueOf(numbers[i]);
}
Arrays.sort(temp, (o1, o2) -> (o1 + o2).compareTo(o2 + o1));
StringBuilder ans_tp = new StringBuilder();
for(int i = 0; i < numbers.length; i++) {
ans_tp.append(temp[i]);
}
return ans_tp.toString();
}
}
输入输出
package com.bupt.java;
import java.util.Scanner;
public class Output {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// String name = scanner.next();//以空格作为分界
// System.out.println(name);
String name = scanner.nextLine();//以行作为分界
System.out.println(name);
int age = scanner.nextInt();
System.out.println(age);
}
}
List转换成数组
数组的长度指定为0或者指定为list.size()都可以
class Solution {
public int[][] merge(int[][] intervals) {
if(intervals.length == 0)
return new int[0][2];
Arrays.sort(intervals, new Comparator<int[]>(){
public int compare(int[] o1, int[] o2) {
return o1[0] - o2[0];
}
});
List<int[]> ans = new ArrayList<>();
for(int i = 0; i < intervals.length; i++) {
int min = intervals[i][0], max = intervals[i][1];
if(ans.size() == 0 || ans.get(ans.size() - 1)[1] < min)
ans.add(new int[]{min, max});
else
ans.get(ans.size() - 1)[1] = Math.max(max, ans.get(ans.size() - 1)[1]);
}
return ans.toArray(new int[ans.size()][2]);
}
}