1. 字符与字符串
char < - > String
- char[ ] - --> String
public String(char[ ] value):将字符数组全部转换为字符串
public String(char[ ] value, int offset, int len):将字符数组的部分内容转换为字符串- String ----> char
public char charAt(int index):取得字符串指定索引的字符,从0开始- String ----> char[ ]
public char[ ] toCharArray():将字符串转为字符数组
- charAt()方法 —— 取得索引位置指定字符,索引从0开始
String str = "hello";
System.out.println(str.charAt(0)); //h
System.out.println(str.charAt(4)); //o
System.out.println(str.charAt(5)); //下标越界,出现java.lang.StringIndexOutOfBoundsException
- 字符串和字符数组的转换(前两个为构造方法)
- public String(char[ ] value) - 将字符数组的所有内容变为字符串
- public String(char[ ], int offset, int count) - 将部分字符数组内容变为字符串
- public char[ ] toCharArray() -将字符串变为字符数组返回
public class Test{
public static void main(String[] args){
String str = "hello";
//将字符串转为字符数组
char[] data = str.toCharArray();
for(int i = 0; i <data.length; i++){
System.out.print(data[i]);
if(i < data.length-1){
System.out.print(","); //h,e,l,l,o
}
}
System.out.println();
//将字符数组全部转换为字符串
String str1 = new String(data);
System.out.println(str1); //hello
//将字符数组部分转换为字符串
String str2 = new String(data,0,3);
System.out.println(str2); //hel
System.out.println(str2.length()); //3
}
}
- 判断一个字符串是否由数字组成
将字符串先转换为字符数组,判断每一个字符是否是“ 0 - 9” 之间的内容,如果是,则由数组组成
public static boolean isNumber(String str){
if(str == null){
return false;
}
if(str == ""){
return false;
}
char[] data = str.toCharArray();
for(int i = 0; i<data.length; i++){
if(data[i] < '0' || data[i] >'9'){
return false;
}
}
return true;
}
2. 字节与字符串
字节常用于数据传输以及编码转换的处理之中,在String中提供有对字节的支持。
byte < - > String
- byte[ ] < - > String
public String (byte[ ] value) :将字节数组全部转为字符串
public String (byte[ ] value, int offset, int len) : 将字节数组的部分内容转为字符串- String < - > byte[ ]
public byte[ ] getBytes(): 将字符串转为字节数组
public byte[ ] getBytes(String charset): 将字符串按照指定编码格式转为字节数组。
Linux 默认编码是UTF-8, Windows默认编码是GBK
- 字符串与字节数组的转换
- public byte[] getBytes() - 将字符串以字节数组的形式返回
- public String(byte bytes[ ]) - 将字节数组变为字符串
public class TestString {
public static void main(String[] args) {
String str = "hello world";
//将字符串中每个字符转换为字节,每一个ASCII就是一个字节
//将字符串转换为字节
byte[] bytes = str.getBytes();
for(int i = 0; i < bytes.length; i++){
System.out.print(bytes[i]); //输出字符对应的ASCII码
if (i < bytes.length-1){
System.out.print(",");
}
}
System.out.println();
//将字节准换为字符串
System.out.println(new String(bytes));
System.out.println(new String(bytes,2,5));
}
}
/**
104,101,108,108,111,32,119,111,114,108,100
hello world
llo w
*/
3. 字符串比较
在String中提供了equals()方法,去比较两个字符串的内容(区分大小写)。除此之外,还有以下几个比较的方法。
- public boolean equals(Object anObject) - 区分大小写,判断字符串是否相等。可以传任何包装类型
- public boolean equalsIgnoreCase(String anoterString) - 不区分大小写,只能传一个字符串
- public int compareTo(String anotherString) - 比较两个字符串大小关系
1)相等: 返回0
2)小于: 返回小于0的数
3)大于: 返回大于0的数
public class TestString {
public static void main(String[] args) {
String str = "hello";
String str1 = "Hello";
System.out.println(str.equals(str1)); //false
System.out.println(str.equalsIgnoreCase(str1)); //true
System.out.println("a".compareTo("A")); //32
System.out.println("A".compareTo("A")); //0
System.out.println("B".compareTo("A")); //1
System.out.println("AB".compareTo("AD")); //-2
System.out.println("强".compareTo("李")); //-2068
}
}
附加: String中的equals()方法是覆写了Object的equals方法
4. 字符串查找
- public boolean contains(CharSequences s) - 判断一个字符串是否存在
- public int indexOf(String str) - 从头开始查找指定字符串的位置,查到了返回位置开始的索引,查不到返回-1
public class TestString {
public static void main(String[] args) {
String str = "hello,world";
//判断一个字符串是否存在
System.out.println(str.contains("hello")); //true
System.out.println(str.contains("java")); //false
//查找指定字符串的索引位置
System.out.println(str.indexOf("e")); //1
System.out.println(str.indexOf("world")); //6
System.out.println(str.indexOf("l")); //2 返回第一个字母l出现的位置
System.out.println(str.indexOf("z")); //-1
//查找指定索引位置的字符
System.out.println(str.charAt(6)); //w
}
}
- 判断开头或结尾
- public boolean endsWith(String suffix) - 判断是否以指定字符串结尾
- public boolean startsWith(String prefix) - 判断是否是以指定字符串开头
public class TestString {
public static void main(String[] args) {
String filename = "Test.java";
if(filename.endsWith(".java")){
System.out.println(filename+"是.java文件");
}else{
System.out.println(filename+"不是.java文件");
}
String url = "http://www.baidu.com";
boolean src = url.startsWith("http") || url.startsWith("https");
if(src){
System.out.println(url + "是网址");
}else{
System.out.println("不是网址");
}
}
}
/**
Test.java是.java文件
http://www.baidu.com是网址
*/
5. 字符串替换
- public String replaceAll(String regex, String replacement) - 将字符串中所有指定的内容替换为新内容
- public String replaceFirst(String regex, String replacement) - 替换首个内容
public class TestString {
public static void main(String[] args) {
String str = "helloworld";
System.out.println(str.replaceAll("l","-"));
System.out.println(str.replaceFirst("l","-"));
System.out.println(str.replaceAll("hello","?"));
}
}
/**
he--owor-d
he-loworld
?world
*/
6.字符串拆分
- public String[ ] split(String regex) - 按照指定格式将字符串全部拆分
- public String[ ] split(String regex, int limit) - 将字符串拆分,数组长度限制limit长度
public class TestString {
public static void main(String[] args) {
String str = "hello world hello java";
//全部拆分
String[] result = str.split(" ");
for(String s:result){
System.out.print(s +",");
}
System.out.println();
//部分拆分,拆分为两个字符串
String[] result1 = str.split(" ", 2);
for (String s:result1){
System.out.print(s+",");
}
}
}
/**
hello,world,hello,java,
hello,world hello java,
*/
举例:拆分IP
public class TestString {
public static void main(String[] args) {
String str = "192.168.1.1";
String[] result = str.split("\\.");
for(String s:result){
System.out.println(s);
}
}
}
7.字符串截取
- public String subString(int beginIndex) - 从指定索引开始截取到字符串结尾
- public String subString(int beginIndex, int endIndex) - 从指定索引位置到指定结束位置
public class TestString {
public static void main(String[] args) {
String str = "helloworld";
System.out.println(str.substring(5));
System.out.println(str.substring(0,5));
}
}
8. 其他一些方法
- trim() - 去掉字符串的左右两边空格,中间保留
- toUpperCase() - 将字符串转大写处理
- toLowerCase() - 将字符串转小写处理
- length() - 返回字符串的长度
- isEmpty() - 判断是否是空字符串,不包含null
举例:写一个方法,让字符串首字符变成大写
public class TestString {
public static void main(String[] args) {
System.out.println(firstUpper("hello"));
System.out.println(firstUpper(""));
System.out.println(firstUpper("a"));
System.out.println(firstUpper(null));
}
private static String firstUpper(String str) {
if (str== null || "".equals(str)){
return str;
}
if(str.length()>1){
return str.substring(0,1).toUpperCase()+str.substring(1);
}
return str.toUpperCase();
}
}
/**
Hello
A
null
*/