在JDK1.9前,所有的String都利用了字符数组实现了包装的处理,所以在String类里面提供有相应的转换处理,这些方法包含构造方法和普通方法两类
构造方法:
public String(char[] value);
将传入的全部字符数组转换为字符串;
public String(char[] value,
int offset,
int count);
将部分字符数组变为字符串;
普通方法:
public char charAt(int index);
获取指定索引位置的字符;
public char[] toCharArray();
将字符串中的数据以字符数组的形式保存;
范例:观察charAt()方法
package 面向对象;
public class StringDemo02 {
public static void main(String[] args) {
String str = "www.mldn.cn";
char c = str.charAt(5);
System.out.println(c);
}
}
程序中的索引下标都是从0开始的;
在程序语言中,最早一直强调的就是字符串应该使用字符数组进行描述
范例:实现字符串与字符数组的转换
package 面向对象;
public class StringDemo02 {
public static void main(String[] args) {
String str = "helloworld";
char[] res = str.toCharArray();
for (int i = 0; i < res.length; i++) {
res[i] -= 32;
}
//字符数组转换成字符串
String newStr = new String(res);
System.out.println(res);
System.out.println(new String(res, 0, 5));
}
}
输出结果:
HELLOWORLD
HELLO
范例:实现验证功能,判断某一个字符串中的数据是否全部由数字组成。
这时可以采用以下的思路:
1、最好将字符串变为字符数组
2、可以判断每个字符是否在数字的范围之内(0-9)
3、如果有一位不是数字则表示验证失败
package 面向对象;
public class StringDemo02 {
public static void main(String[] args) {
String str = "helloworld";
System.out.println(isNumber(str) ? "由数字所组成" : "不是由数字所组成");
}
//该方法主要判断字符串是否由数字组成
public static boolean isNumber(String str) {
char[] res = str.toCharArray(); //将字符串转换为字符数组
for (int i = 0 ; i < res.length; i++) {
if (res[i] < '0' || res[i] > '9') {
return false; //后面不做判断
}
}
return true;
}
}
执行结果为:不是由数字所组成
在实际开发中,往往使用char类型处理中文,因为其可以包含中文数据。
字符串与字节数组的转换
字符串与字节数组直接也可以实现转换操作,需要注意,当进行字符串与字节数组的转换时主要目的是为了二进制的数据传输或者进行编码转换。
public String(byte[] bytes)
将全部的字节数组变为字符串;
public String(byte[] bytes,
int offset,
int length)
将部分的字节数组转换为字符串;
public byte[] getBytes();
将字符串转为字节数组;这个必须掌握;
public byte[] getBytes([String](https://docs.oracle.com/javase/9/docs/api/java/lang/String.html "class in java.lang") charsetName)
throws [UnsupportedEncodingException](https://docs.oracle.com/javase/9/docs/api/java/io/UnsupportedEncodingException.html "class in java.io")
编码转换;这个是最重要的方法,必须记住;
范例:字符串编码转换
package 面向对象;
public class StringDemo02 {
public static void main(String[] args) {
String str = "helloworld";
byte[] data = str.getBytes(); //将字符串转换为字节数组
for (int i = 0; i < data.length; i++) {
data[i] -= 32; //小写变大写字母
}
System.out.println(new String(data));
System.out.println(new String(data, 0, 5));
}
}
输出结果:
HELLOWORLD
HELLO
注意:字节本身是有长度限制的,一个字节最多可以保存的范围是:-128~127之间