String name = "Hello, Java";
//or
String message = new String("Hello");
string.length()
方法来获取字符串的长度;==
,没有用。String s1 = "abc"; // s1指向的内存中只有一个对象abc。
String s2 = new String("abc"); // s2指向的内容中有两个对象abc、new 。
System.out.println(s1==s2);//false
System.out.println(s1.equals(s2));//true 字符串中equals比较的是字符串内容是否相同。
string.charAt(i)
访问,索引从 0 开始;string.split(" ")
方法将一个字符串根据指定的分隔符拆分成字符串数组;String substring(int start,int end);
获得子串System.out.printf("%.2f\n", res/scores.length);
res/scores.length
一定要是浮点型的,不然没法print。import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNextLine()){
String s = sc.nextLine();
String[] scores = s.split(" ");
double res = 0;
boolean b = true;
for(int i=0;i<scores.length;i++){
if(scores[i].equals("A")){
res += 4;
} else if(scores[i].equals("B")){
res += 3;
} else if(scores[i].equals("C")){
res += 2;
} else if(scores[i].equals("D")){
res += 1;
} else if(scores[i].equals("F")){
res += 0;
} else {
System.out.println("Unknown");
b = false;
break;
}
}
if(b){
System.out.printf("%.2f\n", res/scores.length);
}
}
sc.close();
}
}
char是字符类型, String是字符串类型,包含 String字符串是用来包含字符串的, char是用来包含单字符的。
每个字符都有一个唯一的 ASCII 编码值,表示它在 ASCII 字符集中的位置。在比较字符大小时,实际上是比较它们的 ASCII 编码值。
字符串是由一个个字符组合而成的, 比如字符串"hello", 是由字符(char)类型’h’、‘e’、‘l’、‘l’、'0’组成的,我们可以通过charAt(index)方法来访问每一个字符。
char a = 'a';
char uppercaseChar = Character.toUpperCase(a);
char lowercaseChar = Character.toLowerCase('A');
也可以用编码转成字符,(char) (uppercaseChar + 32)
,将大写字符的值加上32,得到对应的小写字母,并使用强制类型转换 来确保结果是字符类型。
char uppercaseChar = 'A';
char lowercaseChar = (char) (uppercaseChar + 32);
如果你使用 String 进行字符串拼接,每次拼接都会创建一个新的字符串对象,这会产生大量的临时对象,会影响性能。而使用 StringBuilder 可以避免这个问题,StringBuilder 是可变的,它允许你在不创建新的字符串对象的情况下进行字符串的连接和修改,不会创建大量的临时对象,因此更高效。
StringBuilder sb = new StringBuilder();
sb.length()
也可以直接写入
StringBuilder sB1 = new StringBuilder("str");
StringBuilder sb1 = new StringBuilder();
sb1.append(4);
sb1.append("123",1,2); //从下标1开始,下标2结束,插入一个,不包括下标2
sb1.reverse();
StringBuilder转String
StringBuilder sb2 = new StringBuilder("str");
String str1 = sB2.toString(); //StringBuilder转string
判断数据类型可用
System.out.println(sb2.getClass()); //判断变量类型
System.out.println(str1.getClass()); //判断变量类型
String转StringBuilder
String s = "hello world";
StringBuilder sb3 = new StringBuilder(s);
用while跳过非首字母以及空格部分。
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNextInt()){
int n = sc.nextInt();
sc.nextLine();
for (int i=0;i<n;i++) {
String s = sc.nextLine().trim();
char[] arr = s.toCharArray();
StringBuilder sb = new StringBuilder();
int j = 0;
while (j<arr.length) {
//判断首字母是大写的还是小写的
//如果是大写的直接进去,小写的转大写
if (arr[j]<='z' && arr[j]>='a') {
arr[j] = Character.toUpperCase(arr[j]);
}
sb.append(arr[j]);
while (j<arr.length && arr[j] != ' ') {
j++;
}
while (j<arr.length && arr[j] == ' ') {
j++;
}
}
System.out.println(sb.toString());
}
}
}
}
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.nextLine();
for (int i=0;i<n;i++) {
String s = sc.nextLine();
char[] arr = s.toCharArray();
for (int j=0;j<arr.length-1;j+=2) {
char a = arr[j];
arr[j] = arr[j+1];
arr[j+1] = a;
}
System.out.println(arr);
}
}
}
还可以写一个函数在里面。
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.nextLine();
for (int i=0;i<n;i++) {
String s = sc.nextLine();
char[] arr = s.toCharArray();
for (int j=0;j<arr.length-1;j+=2) {
swap(arr,j,j+1);
}
System.out.println(arr);
}
}
private static void swap(char[] arr,int j,int i) {
char a = arr[j];
arr[j] = arr[i];
arr[i] = a;
}
}