ASCII码
ASCII码连接字符和数字,每个常用字符都对应一个-128 ~ 127的数字,二者之间可以相互转化。
注意:目前负数没有与之对应的字符。
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
//将字符传换为对应的ASCII码值
char c = 'a';
System.out.println((int)c);
//将ASCII码转换为对应的字符
int a = 66;
System.out.println((char)a);
}
}
以上代码打印出来的结果如下
97
B
常用的ASCII码值
1.AZ是从6590;
2.az是从97122;
3.09对应的是4857;
字符串是可以参加运算的,参加运算的字符串会直接被当作ASCII码值带入运算;
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);
}
}
得到的结果为
1
4290
C
String
和C++/C里直接将字符串作为数组来使用不同;
Java的字符串是不能修改的,甚至连拼接都是在重新开一个字符串;
各种初始化
String a = "Hello World";
String b = "My name is ";
String x = b; // 存储到了相同地址
String c = b + "xqc"; // String可以通过加号拼接
String d = "My age is " + 18; // int会被隐式转化成字符串"18"
String str = String.format("My age is %d", 18); // 格式化字符串,类似于C++中的sprintf,容许将18作为整数打印
String money_str = "123.45";
double money = Double.parseDouble(money_str); // String转double
String是真的麻烦,第一是稍微修改就会重新开地址,开空间;
String a = "Hello ";
a += "World"; // 哪怕是直接拼接,也会构造一个新的字符串,重新开空间,开地址;
第二是,遍历String的时候,不能将它当数组处理,导致只能查看,不能修改更新;
String str = "Hello World";
for (int i = 0; i < str.length(); i ++ )
{
System.out.print(str.charAt(i)); // 只能读取,不能写入
}
String常用API
1.str.length()
返回字符串的长度;
int sz = str.length();
2.String[] sp = str.spilt(用来分割的物)
以什么为分割线,分割字符串;
String a1="麦克雷|卡西迪|天王老子";
String[] sp = a1.split("\\|");
System.out.println(Arrays.toString(sp));
//结果是:[麦克雷, 卡西迪, 天王老子]
3.str.indexOf(char c)、str.indexOf(String str)、str.lastIndexOf(char c)、str.lastIndexOf(String str)
上面都是查找,找到了就返回下标;
找不到就返回-1;
4.str1.equals(str2)
将两个字符串进行匹配,不能用"==";
相同返回true , 不相同返回false;
if(str1.equals(str2))
{
}
5.str.compareTo()
判断两个字符串的字典序大小,负数表示小于,0表示相等,正数表示大于;
参照物是发起compareTo的字符串;
String s1 = "a";
int a = s1.compareTo("A");//正数;
int b = s1.compareTo("a");//0;
int c = s1.compareTo("b");//负数;
6.str.startsWith("前缀" (, 开始的下标))
判断字符串是否由某个前缀开头;
7.str.endsWith("后缀" (, 开始的下标))
判断是否以某个后缀结尾;
8.str.trim()
去掉首尾的空白字符
9.str.toLowerCase() / str.toUpperCase()
前者将字符串里的所有字母替换为小写,后者是全部替换为大写;
10.str.replace(char oldChar, char newChar) / str.replace(String oldRegex, String newRegex)
前者是将字符串里所有oldChar全部替换为newChar;
后者则是针对字符串的;
11.str.substring(int beginIndex, int endIndex)
返回从[beginIndex, endIndex)下标范围中的子串;
12.str.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 表示字符串
}
}
StringBuilder和StringBuffer
String不能被修改,如果打算修改字符串,可以使用StringBuilder和StringBuffer。
StringBuffer线程安全,速度较慢;
StringBuilder线程不安全,速度较快。
StringBuilder sb = new StringBuilder("Hello "); // 初始化
sb.append("World"); // append,拼接字符串
System.out.println(sb);
for (int i = 0; i < sb.length(); i ++ )
{
sb.setCharAt(i, (char)(sb.charAt(i) + 1)); // setCharAt读取和写入字符,这一行是将下标i的字符变成原来的ASCII+1,再转化为字符打印;
}
System.out.println(sb);
sb.reverse();//反转字符串;
System.out.prinln(sb);
结果是
Hello World
Ifmmp Xpsme
emspX pmmfI
标签:Java,String,int,System,str,字符串,out
From: https://www.cnblogs.com/RimekeyBergling/p/16825979.html