文章目录
字符
转义字符
直接放代码
public static void main(String[] args) {
char tab = '\t'; //制表符转义字符\t
System.out.println(tab);
char enter = '\r'; //回车符转义字符\r
System.out.println(enter);
char line = '\n'; //换行符转义字符\n
System.out.println(line);
char singleQuote = '\''; //单引号转义字符\'
System.out.println(singleQuote);
char doubleQuote = '\"'; //双引号转义字符\"
System.out.println(doubleQuote);
char fanxiegan = '\\'; //反斜杠的转义字符\\
System.out.println(fanxiegan);
}
字符串与整形的相互转换
之所以会出现这种字符串和整形相互转换的情况,是因为计算机存在编码的问题,早期编程只支持英语和其他西欧语言,汉字数量较多,ASCII编码不足,后来进行扩展成DBCS,才够将以东亚为主的象形文字纳入编程之内。
public class StringtoInt {
public static void main(String[] args) {
char tian = '田';
char A = 'A';
System.out.println(tian);
System.out.println(A);
//将字符串转换成整形
int tian1 = '田';
int A1 = 'A';
System.out.println(tian1);
System.out.println(A1);
//当然也可以直接将数字转换成字符串
char tian2 = 30000;
char A2 = 65;
System.out.println(tian2);
System.out.println(A2);
}
输出为;
田
A
30000
65
田
A
字符包装类型
字符型char也对应有Character包装字符型,初始化包装字符型变量也有三种方法:
(1)直接用等号赋值
(2)调用包装类型的valueOf方法
(3)使用关键字new创建新变量
下面代码是将字符包装变量转换成字符变量的例子
Character character = 'A'; // 声明一个包装字符变量
System.out.println("character=" + character);
char value = character.charValue(); // 把包装字符变量转换成基本字符变量
System.out.println("value=" + value);
// Character类型与char类型的变量之间允许直接赋值,靠的是“自动装箱”和“自动拆箱”
Character plusResult = (char) (character + 1);
System.out.println("plusResult=" + plusResult);
把包装字符变量转换成基本字符变量需要用到包装变量的CharValue方法
字符串额外的处理方法
isDigit:判断输入的字符是否为数字
isLetter:判断输入的字符是否为字母
islowerCase:判断输入的字符是否为小写字母
isUpperCase:判断输入的字符是否为大写字母
isSpaceChar:判断输入的字符是否为空格
isWhitespace:判断输入的字符是否为空白(非数字、字母、标点)
toLowerCase:判断输入的字符是否为小写,不是小写字母转换成小写
toUpperCase:判断输入的字符是否为大写,不是大写字母转换成大写
Character letter = 'A'; // 声明一个包装字符变量
// 下面是Character常用的字符处理方法
boolean isDigit = Character.isDigit(letter); // isDigit方法判断字符是否为数字
System.out.println("isDigit=" + isDigit);
boolean isLetter = Character.isLetter(letter); // isLetter方法判断字符是否为字母
System.out.println("isLetter=" + isLetter);
boolean isLowerCase = Character.isLowerCase(letter); // isLowerCase方法判断字符是否为小写
System.out.println("isLowerCase=" + isLowerCase);
boolean isUpperCase = Character.isUpperCase(letter); // isUpperCase方法判断字符是否为大写
System.out.println("isUpperCase=" + isUpperCase);
Character line = '\n'; // 声明一个包装字符变量
boolean isSpaceChar = Character.isSpaceChar(line); // isSpaceChar方法判断字符是否为空格
System.out.println("isSpaceChar=" + isSpaceChar);
// isWhitespace方法判断字符是否为空白(非数字非字母非标点,包括空格、制表、回车、换行等)
boolean isWhitespace = Character.isWhitespace(line);
System.out.println("isWhitespace=" + isWhitespace);
char lowerCase = Character.toLowerCase(letter); // toLowerCase方法把字符转换为大写
System.out.println("lowerCase=" + lowerCase);
char upperCase = Character.toUpperCase(letter); // toUpperCase方法把字符转换为小写
System.out.println("upperCase=" + upperCase);
字符串
字符串的赋值与转换
字符串类型String有4种方式,如下:
String s = "直接赋值";
System.out.println("s=" + s);
String s1 = String.valueOf("使用valueOf方法赋值");
System.out.println("s=" + s1);
char[] array = {'n', 'e', 'w','赋','值'};
String s2 = new String(array);
System.out.println("s2=" + s2);
String s4 = true + "加号连接";
System.out.println("s4=" + s4);
将字符串变量转换成包装整形变量、包装长整形变量、包装浮点型变量、包装双精度型变量、包装布尔型变量、字符数组
String number = "13456";
Integer packInt = Integer.parseInt(number); // 将字符串变量转换成包装整型变量
System.out.println("packInt=" + packInt);
Long packLong = Long.parseLong(number); // 将字符串变量转换成包装长整型变量
System.out.println("packLong=" + packLong);
Float packFloat = Float.parseFloat(number); // 将字符串变量转换成包装浮点型变量
System.out.println("packFloat=" + packFloat);
Double packDouble = Double.parseDouble(number); // 将字符串变量转换成包装双精度型变量
System.out.println("packDouble=" + packDouble);
String zhen = "true";
Boolean packBoolean = Boolean.parseBoolean(zhen); // 将字符串变量转换成包装布尔型变量
System.out.println("packBoolean=" + packBoolean);
char[] numberArray = number.toCharArray(); // 将字符串转换成字符数组
for (char item : numberArray) { // 遍历并打印字符数组中的各元素
System.out.println("item=" + item);
}
字符串的格式化
利用format方法格式化单个变量值与多个变量值代码如下:
%s——字符串占位记号
%c——字符占位记号
%b——布尔值占位记号
%d——十进制整数占位记号
%o——八进制整数占位记号
%x——十六进制整数占位记号
%f——浮点数占位记号
// 往字符串填入另一个字符串
String fromString = String.format("格式化子串的字符串:%s", "Hello");
System.out.println("fromString=" + fromString);
// 往字符串填入字符
String fromChar = String.format("格式化字符的字符串:%c", 'A');
System.out.println("fromChar=" + fromChar);
// 往字符串填入布尔值
String fromBoolean = String.format("格式化布尔值的字符串:%b", false);
System.out.println("fromBoolean=" + fromBoolean);
// 往字符串填入十进制整数
String fromInt = String.format("格式化整型数的字符串:%d", 255);
System.out.println("fromInt=" + fromInt);
// 往字符串填入十六进制数
String fromOct = String.format("格式化十六进制数的字符串:%o", 255);
System.out.println("fromOct=" + fromOct);
// 往字符串填入八进制数
String fromHex = String.format("格式化八进制数的字符串:%x", 255);
System.out.println("fromHex=" + fromHex);
// 往字符串填入浮点数
String fromFloat = String.format("格式化浮点数的字符串:%f", 3.14);
System.out.println("fromFloat=" + fromFloat);
// 格式化字符串的时候,同时填充多个变量
String manyVariable = String.format(
"以下字符串包括了多个变量值:%s,%c,%b,%d,%o,%x,%f", "Hello", 'A', false, 255,
255, 255, 3.14);
System.out.println("manyVariable=" + manyVariable);
// 注意,双精度数若是通过%f格式化双精度数,则会强制转成浮点数
String fromDouble = String.format("双精度数格式化后丢失精度的字符串:%f", 3.1415926);
System.out.println("fromDouble=" + fromDouble);
// 因此,格式化双精度数之时,需要指定小数点后面的保留位数
String fromDecimal = String.format("格式化双精度数的字符串:%.8f", 3.1415926);
System.out.println("fromDecimal=" + fromDecimal);
// 对整数分配固定长度,该整数默认右对齐、左补空格
String fromLenth = String.format("格式化固定长度(默认右对齐)的整数字符串:(%8d)", 255);
System.out.println("fromLenth=" + fromLenth);
// 对整数分配固定长度,且该整数左对齐、右补空格
String fromLeft = String.format("格式化固定长度且左对齐的整数字符串:(%-8d)", 255);
System.out.println("fromLeft=" + fromLeft);
// 对整数分配固定长度,该整数默认右对齐、左补0
String fromZero = String.format("格式化固定长度且左补0的整数字符串:(%08d)", 255);
System.out.println("fromZero=" + fromZero);
// 字符串格式化的时候,可能出现某个变量被多次填入的情况
String fromRepeat1 = String.format("重要的事情说三遍:%s,%s,%s", "别迟到", "别迟到",
"别迟到");
System.out.println("fromRepeat1=" + fromRepeat1);
// 重复填入某个变量值,可利用“%数字$”的形式,其中“数字$”表示这里取后面的第几个变量值
String fromRepeat2 = String.format("重要的事情说三遍:%1$s,%1$s,%1$s", "别迟到");
System.out.println("fromRepeat2=" + fromRepeat2);
double normalDecimal = 19.895;
// 保留双精度数的小数点后面两位
String normalResult = formatWithDouble(normalDecimal, 2);
System.out.println("normalResult=" + normalResult);
BigDecimal bigDecimal = new BigDecimal("123456789012345678.901");
// 保留大小数的小数点后面两位
String bigResult = formatWithBigDecimal(bigDecimal, 2);
System.out.println("bigResult=" + bigResult);
截取大数的例子
public static String formatWithBigDecimal(BigDecimal value, int digit) {
// 大小数类型的setScale方法需要指定明确的舍入规则,其中HALF_UP表示四舍五入
BigDecimal result = value.setScale(digit, RoundingMode.HALF_UP);
return result.toString();
字符串的常见方法
判断字符串是否具有某种特征
String hello = "Hello World. 你好世界。";
boolean isEmpty = hello.isEmpty(); // isEmpty方法判断该字符串是否为空串
System.out.println("是否为空 = " + isEmpty);
boolean equals = hello.equals("你好"); // equals方法判断该字符串是否与目标串相等
System.out.println("是否等于你好 = " + equals);
boolean startsWith = hello.startsWith("Hello"); // startsWith方法判断该字符串是否以目标串开头
System.out.println("是否以Hello开头 = " + startsWith);
boolean endsWith = hello.endsWith("World"); // endsWith方法判断该字符串是否以目标串结尾
System.out.println("是否以World结尾 = " + endsWith);
boolean contains = hello.contains("or"); // contains方法判断该字符串是否包含了目标串
System.out.println("是否包含or = " + contains);
是否为空 = false
是否等于你好 = false
是否以Hello开头 = true
是否以World结尾 = false
是否包含or = true
在字符串内部根据条件定位
int char_length = hello.length(); // length方法返回该字符串的字符数
System.out.println("字符数 = " + char_length);
int byte_length = hello.getBytes().length; // getBytes方法返回该字符串对应的字节数组
System.out.println("字节数 = " + byte_length);
char first = hello.charAt(0); // charAt方法返回该字符串在指定位置的字符
System.out.println("首字符 = " + first);
int index = hello.indexOf("l"); // indexOf方法返回目标串在源串中第一次找到的位置
System.out.println("首次找到l的位置 = " + index);
int lastIndex = hello.lastIndexOf("l"); // lastIndexOf方法返回目标串在源串中最后一次找到的位置
System.out.println("最后找到l的位置 = " + lastIndex);
字符数 = 18
字节数 = 28
首字符 = H
首次找到l的位置 = 2
最后找到l的位置 = 9
根据某种规则修改字符串内容
String lowerCase = hello.toLowerCase(); // toLowerCase方法返回转换为小写字母的字符串
System.out.println("转换为小写字母 = " + lowerCase);
String upperCase = hello.toUpperCase(); // toUpperCase方法返回转换为大写字母的字符串
System.out.println("转换为大写字母 = " + upperCase);
String trim = hello.trim(); // trim方法返回去掉首尾空格后的字符串
System.out.println("去掉首尾空格 = " + trim);
String concat = hello.concat("Fine, thank you."); // concat方法返回在末尾添加目标串后的字符串
System.out.println("追加了目标串 = " + concat);
// 只有一个输入参数的substring方法,从指定位置一直截取到源串的末尾
String subToEnd = hello.substring(6);
System.out.println("从第六位截取到末尾 = " + subToEnd);
// 有两个输入参数的substring方法,返回从开始位置到结束位置中间截取的子串
String subToCustom = hello.substring(6, 9);
System.out.println("从第六位截取到第九位 = " + subToCustom);
String replace = hello.replace("l", "L"); // replace方法返回目标串替换后的字符串
System.out.println("把l替换为L = " + replace);
转换为小写字母 = hello world. 你好世界。
转换为大写字母 = HELLO WORLD. 你好世界。
去掉首尾空格 = Hello World. 你好世界。
追加了目标串 = Hello World. 你好世界。Fine, thank you.
从第六位截取到末尾 = World. 你好世界。
从第六位截取到第九位 = Wor
把l替换为L = HeLLo WorLd. 你好世界。