前言:
小编终于考完试了,
日更一篇,今天这篇一定会对小白非常有用的!!!
因为我们会把案例到用代码实现的全过程思路呈现出来!!!
我们一直都是以这样的形式,让新手小白轻松理解复杂晦涩的概念,
把Java代码拆解的清清楚楚,每一步都知道他是怎么来的,
为什么用这串代码关键字,对比同类型的代码,
让大家真正看完以后融会贯通,举一反三,实践应用!!!!
①官方定义 和 大白话拆解对比
②举生活中常见贴合例子、图解辅助理解的形式
③对代码实例中关键部分进行详细拆解、总结
给小编一个赞或者关注吧,我们一起进步!!
String 与其他结构间的转换
1、字符串 --> 基本数据类型、包装类:
官方语言:
- Integer包装类的public static int parseInt(String s):可以将由“数字”字符组成的字符串 转换为整型。
- 类似地,使用java.lang包中的Byte、Short、Long、Float、Double类调相应的类方 法可以将由“数字”字符组成的字符串,转化为相应的基本数据类型。
大白话拆解:
- 当你有一个字符串,比如 "123",但实际上你想要的是数字 123(整数),你可以使用包装类的方法来完成这个转换。包装类是Java中用于封装基本数据类型的类,它们提供了很多有用的方法来处理和转换数据。
- Integer.parseInt(String s): 如果你有一个字符串 "123" 并且你想把它变成一个 int 类型的数字,你可以这样做:
String strNumber = "123";
int number = Integer.parseInt(strNumber);
- 其他类似方法:如果你想转换成其他的数字类型,比如 byte、short、long、float 或 double,你可以分别使用 Byte.parseByte()、Short.parseShort()、Long.parseLong()、Float.parseFloat() 和 Double.parseDouble() 方法。例如,要将字符串 "1.23" 转换为 double 类型,可以这样写:
String strDouble = "1.23";
double d = Double.parseDouble(strDouble);
举个栗子:
public class StringToNumber {
public static void main(String[] args) {
// 定义一个字符串,这个字符串实际上表示的是一个数字
String strInt = "123";
String strDouble = "123.45";
// 使用 Integer.parseInt() 将字符串转换为整数
int number = Integer.parseInt(strInt);
System.out.println("String to int: " + number); // 输出:123
// 使用 Double.parseDouble() 将字符串转换为双精度浮点数
double decimal = Double.parseDouble(strDouble);
System.out.println("String to double: " + decimal); // 输出:123.45
}
}
代码解释和总结:
- Integer.parseInt() 和 Double.parseDouble() 是Java提供的方法,它们可以读取字符串并尝试将其解析成相应的数字。
- 如果字符串包含的不是有效的数字字符,这些方法会抛出异常,所以我们通常需要确保输入是正确的,或者使用 try-catch 来处理可能的错误。
2、基本数据类型、包装类 --> 字符串:
官方语言:
- 调用String类的public String valueOf(int n)可将 int 型转换为字符串
- 相应的valueOf(byte b)、valueOf(long l)、valueOf(float f)、valueOf(double d)、 valueOf(boolean b)可由参数的相应类型到字符串的转换。
大白话拆解:
- 反过来,如果你有一个基本数据类型或包装类对象,并希望将其转换为字符串,你可以使用 String.valueOf() 方法。
- String.valueOf(): 这个方法接受一个参数,它可以是任何基本数据类型或者包装类对象,并返回相应的字符串表示。例如,如果你有一个 int 类型的变量 456,
int num = 456;
String strNum = String.valueOf(num);
- 这同样适用于 byte、short、long、float、double 和 boolean 类型的数据。
举个栗子:
public class NumberToString {
public static void main(String[] args) {
// 定义基本数据类型的变量
int num = 123;
double decimal = 123.45;
// 使用 String.valueOf() 将数字转换为字符串
String strNum = String.valueOf(num);
String strDecimal = String.valueOf(decimal);
System.out.println("int to String: " + strNum); // 输出:123
System.out.println("double to String: " + strDecimal); // 输出:123.45
}
}
代码解释和总结:
- String.valueOf() 是一个非常方便的方法,它接受各种类型的参数(包括数字和布尔值),并返回该参数的字符串表示。
- 这个方法非常适合当你想要显示数字或在字符串中插入数字时使用。
3、字符数组 --> 字符串:
- String 类的构造器:String(char[]) 和 String(char[],int offset,int length) 分别用字 符数组中的全部字符和部分字符创建字符串对象。
- 有时候你会有一个字符数组,比如 {'H', 'e', 'l', 'l', 'o'},你想要将它转换成一个字符串 "Hello"。这时你可以使用 String 类的构造器。
- String(char[] chArray): 使用整个字符数组创建字符串。
- String(char[] chArray, int offset, int length): 使用字符数组的一部分创建字符串,从索引 offset 开始,长度为 length 的部分。
char[] charArray = {'H', 'e', 'l', 'l', 'o'};
String strFromArray = new String(charArray); // 结果是 "Hello"
String strFromPart = new String(charArray, 1, 3); // 结果是 "ell"
举个栗子:
public class CharArrayToString {
public static void main(String[] args) {
// 定义一个字符数组
char[] charArray = {'H', 'e', 'l', 'l', 'o'};
// 使用构造器将字符数组转换为字符串
String strFromArray = new String(charArray);
System.out.println("Char array to String: " + strFromArray); // 输出:Hello
// 只使用字符数组的一部分创建字符串
String strFromPart = new String(charArray, 1, 3);
System.out.println("Part of char array to String: " + strFromPart); // 输出:ell
}
}
- 当你有一个字符数组,并且想把它变成一个字符串时,你可以直接使用 String 的构造器。
- 第二个构造器允许你指定从哪个位置开始以及要包含多少个字符,这对于处理大块文本时非常有用。
4、字符串 --> 字符数组:
- public char[] toCharArray():将字符串中的全部字符存放在一个字符数组中的方法。
- public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin):提供了将指定索 引范围内的字符串存放到数组中的方法。
- 有一个字符串并想得到它的字符数组表示,可以使用
toCharArray()
方法。
String str = "Hello";
char[] charArray = str.toCharArray();
想只获取字符串中的一部分作为字符数组,可以使用 getChars()
方法。
String str = "Hello World";
char[] charArray = new char[5];
str.getChars(0, 5, charArray, 0); // 只取 "Hello"
举个栗子:
public class StringToCharArray {
public static void main(String[] args) {
// 定义一个字符串
String str = "Hello World";
// 使用 toCharArray() 将字符串转换为字符数组
char[] charArray = str.toCharArray();
for (char c : charArray) {
System.out.print(c + " "); // 输出:H e l l o W o r l d
}
// 使用 getChars() 将字符串的部分内容复制到字符数组
char[] targetArray = new char[5];
str.getChars(6, 11, targetArray, 0);
System.out.println("\nExtracted chars: " + new String(targetArray)); // 输出:World
}
}
代码解释和总结:
toCharArray()
方法简单地将整个字符串的所有字符都放到一个新的字符数组中。getChars()
允许你选择字符串中的某些字符,并把它们复制到另一个已经存在的字符数组中。你需要告诉它从哪里开始(起始索引)、结束在哪里(结束索引)以及目标数组的起始位置。
5、字符串 --> 字节数组:(编码)
- public byte[] getBytes() :使用平台的默认字符集将此 String 编码为 byte 序列,并 将结果存储到一个新的 byte 数组中。
- public byte[] getBytes(String charsetName) :使用指定的字符集将此 String 编码到 byte 序列,并将结果存储到新的 byte 数组。
- 当需要将字符串转换为字节数组时,可能是为了保存到文件或者通过网络发送。这通常涉及到字符编码的选择。
- getBytes(): 使用默认字符集(通常是平台相关的)。
- getBytes(String charsetName): 指定字符集,如 UTF-8。
String str = "你好,世界!";
byte[] bytesUtf8 = str.getBytes("UTF-8");
举个栗子:
public class StringToByteArray {
public static void main(String[] args) {
// 定义一个字符串
String str = "你好,世界!";
// 使用 getBytes() 将字符串转换为字节数组,使用 UTF-8 编码
try {
byte[] bytesUtf8 = str.getBytes("UTF-8");
System.out.println("String to byte array (UTF-8): " + Arrays.toString(bytesUtf8));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
代码解释和总结:
getBytes("UTF-8")
将字符串按照 UTF-8 编码规则转换成一系列字节。不同的字符集可能会产生不同的字节序列。- 我们在这里用
try-catch
包装了这段代码,因为如果指定的字符集不被支持,就会抛出异常。
6、字节数组 --> 字符串:(解码)
- String(byte[]):通过使用平台的默认字符集解码指定的 byte 数组,构造一个新的 String。 String(byte[],int offset,int length) :用指定的字节数组的一部分,即从数组起始位 置offset 开始取length 个字节构造一个字符串对象。
- String(byte[], String charsetName ) 或 new String(byte[], int, int,String charsetName ):解码,按照指定的编码方式进行解码。
- 当你有字节数组并且想要恢复原始字符串时,你需要知道它是用什么字符集编码的。然后你可以用相应的字符集解码。
- String(byte[] bytes): 使用默认字符集。
- String(byte[] bytes, String charsetName): 使用指定的字符集。
- String(byte[] bytes, int offset, int length, String charsetName): 使用指定的字符集解码字节数组的一部分。
byte[] bytesUtf8 = { ... }; // 假设这是以 UTF-8 编码的字节数组
String str = new String(bytesUtf8, "UTF-8");
举个栗子:
public class ByteArrayToString {
public static void main(String[] args) {
// 假设我们有一个以 UTF-8 编码的字节数组
byte[] bytesUtf8 = { -28, -72, -83, -27, -101, -67, 32, -28, -67, -94, -27, -101, -67, 33 };
// 使用构造器将字节数组转换回字符串,使用 UTF-8 解码
try {
String str = new String(bytesUtf8, "UTF-8");
System.out.println("Byte array to String (UTF-8): " + str); // 输出:你好,世界!
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
代码解释和总结:
- 在这里,我们假设有了一组字节,我们知道它是用 UTF-8 编码的中文字符。
- new String(byte[], "UTF-8") 构造器用来把这些字节重新组合成原始的字符串。
- 同样,我们使用 try-catch 来处理可能的字符集不支持的问题。
今天先到这里,
我们下次再见!!