Java 《Character》类、《String》类(基础4)

一、Java Character 类

Character 类用于对单个字符进行操作,在对象中包装一个基本类型 char 的值。

// 原始字符 'a' 装箱到 Character 对象 ch 中
Character ch = 'a';
//相当于Character ch = new Character('a');

 
// 原始字符 'x' 用 test 方法装箱
// 返回拆箱的值到 'c'
char c = test('x');

//字符数组
char[] charArray ={'a', 'b', 'c', 'd', 'e'};

 1.1 Java isLetter() 方法

//用于判断指定字符是否为字母
     System.out.println(Character.isLetter('c'));
     System.out.println(Character.isLetter('5'));
/*
true
false
*/

1.2 Java isDigit() 方法

//用于判断指定字符是否为数字
        System.out.println(Character.isDigit('c'));
        System.out.println(Character.isDigit('5'));
/*
false
true
*/

1.3 Java isWhitespace() 方法

//用于判断指定字符是否为空白字符,空白符包含:空格、tab 键、换行符
        System.out.println(Character.isWhitespace('c'));
        System.out.println(Character.isWhitespace(' '));
        System.out.println(Character.isWhitespace('\n'));
        System.out.println(Character.isWhitespace('\t'));
/*
false
true
true
true
*/

1.4 Java isUpperCase() 方法

//用于判断指定字符是否为大写字母
        System.out.println( Character.isUpperCase('c'));
        System.out.println( Character.isUpperCase('C'));
/*
false
true
*/

1.5 Java isLowerCase() 方法

//用于判断指定字符是否为小写字母
        System.out.println( Character.isLowerCase('c'));
        System.out.println( Character.isLowerCase('C'));
/*
true
false
*/

1.6 Java toUpperCase() 方法

//用于将小写字符转换为大写
System.out.println(Character.toUpperCase('a'));//A

1.7 Java toLowerCase() 方法

//用于将大写字符转换为小写
System.out.println(Character.toLowerCase('A'));//a

1.8 *Java toString() 方法

1、to String()方法用途广泛,作用是输出数组的内容和类中的属性。
2、to String()方法大多自定义重写输出内容,如果不重写,toString()返回此对象所在的类及对应的堆空间对象实体的首地址值。
3、to String() 方法与数组使用时,调用Arrays中的to string()方法。
4、to String()方法还可以用于对象数组,使用时既要在类中重写to String()方法又要调用Arrays类的to String()方法。

class  value {
    private int s;
    public void set(int i) {
        this.s = i;
    }
    public int get() {
        return this.s;
    }
    @Override
    public String toString() {
        String s = "value{" +"s=" + this.s +"}";
        return s;
    }
}  
public static void main(String[] args) {
        value [] ta=new value[10];//对象数组
        for (int i=0;i

二、Java String 类

String 创建的字符串存储在公共池中,而 new 创建的字符串对象在堆上:

String s1 = "Runoob";              // String 直接创建
String s2 = "Runoob";              // String 直接创建
String s3 = s1;                    // 相同引用
String s4 = new String("Runoob");   // String 对象创建
String s5 = new String("Runoob");   // String 对象创建

Java 《Character》类、《String》类(基础4)_第1张图片

常见的有 :

str.length():求字符串长度 ; "我的名字是 ".concat("yly")连接字符串 ; 

输出格式化数字可以使用 printf() 和 format() 方法。

String 类使用静态方法 format() 返回一个String 对象而不是 PrintStream 对象。

String 类的静态方法 format() 能用来创建可复用的格式化字符串,而不仅仅是用于一次打印输出。

//printf
System.out.printf("浮点型变量的值为 " +
                  "%f, 整型变量的值为 " +
                  " %d, 字符串变量的值为 " +
                  "is %s", floatVar, intVar, stringVar);

//format
String fs;
fs = String.format("浮点型变量的值为 " +
                   "%f, 整型变量的值为 " +
                   " %d, 字符串变量的值为 " +
                   " %s", floatVar, intVar, stringVar);

2.1 Java charAt() 方法

//用于返回指定索引处的字符。索引范围为从 0 到 length() - 1
        String s = "www.runoob.com";
        char result = s.charAt(6);
        System.out.println(result);
//n

2.2 Java compareTo() 方法

/**
compareTo() 方法用于两种方式的比较:
1、字符串与对象进行比较。
2、按字典顺序比较两个字符串。
 返回值是整型,它是先比较对应字符的大小(ASCII码顺序),如果第一个字符和参数的第一个
字符不等,结束比较,返回他们之间的长度差值,如果第一个字符和参数的第一个字符相等,
则以第二个字符和参数的第二个字符做比较,以此类推,直至比较的字符或被比较的字符有一
方结束。
*/

        String str1 = "Strings";
        String str2 = "Strings";
        String str3 = "Strings123";
 
        int result = str1.compareTo( str2 );
        System.out.println(result);
      
        result = str2.compareTo( str3 );
        System.out.println(result);
     
        result = str3.compareTo( str1 );
        System.out.println(result);

/* 
0   一般来说,字符串长度都不同,那么返回值是多出来的位数个数,如下-3,+3
-3  如果此字符串小于字符串参数,则返回一个小于 0 的值
3   如果此字符串大于字符串参数,则返回一个大于 0 的值
*/

2.3 Java compareToIgnoreCase() 方法

类比于2.2 :用于按字典顺序比较两个字符串,不考虑大小写

2.4  Java concat() 方法

用于将指定的字符串参数连接到字符串上,例:s = s.concat("www.runoob.com");

 2.5 Java contentEquals() 方法

//用于将此字符串与指定的 StringBuffer 比内容,相同true,不同false
  String str1 = "String1";
  StringBuffer str3 = new StringBuffer( "String1");
  boolean  result = str1.contentEquals( str3 );
  System.out.println(result);//true

2.6 Java copyValueOf() 方法

/**public static String copyValueOf(char[] data):
将指定字符数组中的所有字符复制到一个新的字符数组中,并返回一个新的字符串

或

public static String copyValueOf(char[] data, int offset, int count):
允许指定要从输入数组中复制的起始位置和要复制的字符数,其他同上
*/

        char[] Str1 = {'h', 'e', 'l', 'l', 'o', ' ', 'r', 'u', 'n', 'o', 'o', 'b'};
        String Str2 = "";
 
        Str2 = Str2.copyValueOf( Str1 );
        System.out.println("返回结果:" + Str2);
 
        Str2 = Str2.copyValueOf( Str1, 2, 6 );
        System.out.println("返回结果:" + Str2);
/*
返回结果:hello runoob
返回结果:llo ru
*/

2.7 Java endsWith() 方法

//用于测试字符串是否以指定的后缀结束
        String Str = new String("菜鸟教程:www.runoob.com");
        boolean retVal;
 
        retVal = Str.endsWith( "runoob" );
        System.out.println("返回值 = " + retVal );
 
        retVal = Str.endsWith( "com" );
        System.out.println("返回值 = " + retVal );
/*
返回值 = false
返回值 = true
*/

2.8 Java String equals() 方法

/**使用 == 和 equals() 比较字符串。

String 中 == 比较引用地址是否相同,equals() 比较字符串的内容是否相同 */


String s1 = "Hello";              // String 直接创建
String s2 = "Hello";              // String 直接创建
String s3 = s1;                   // 相同引用
String s4 = new String("Hello");  // String 对象创建
String s5 = new String("Hello");  // String 对象创建
 
s1 == s1;         // true, 相同引用
s1 == s2;         // true, s1 和 s2 都在公共池中,引用相同
s1 == s3;         // true, s3 与 s1 引用相同
s1 == s4;         // false, 不同引用地址
s4 == s5;         // false, 堆中不同引用地址
 
s1.equals(s3);    // true, 相同内容
s1.equals(s4);    // true, 相同内容
s4.equals(s5);    // true, 相同内容

Java 《Character》类、《String》类(基础4)_第2张图片

2.9 Java equalsIgnoreCase() 方法

参考2.8,用于将字符串与指定的对象比较,内容不考虑大小写

2.10 Java getBytes() 方法

getBytes() 方法有两种形式:

  • getBytes(String charsetName): 使用指定的字符集将字符串编码为 byte 序列,并将结果存储到一个新的 byte 数组中。

  • getBytes(): 使用平台的默认字符集将字符串编码为 byte 序列,并将结果存储到一个新的 byte 数组中。

2.11 Java getChars() 方法

//将字符从字符串复制到目标字符数组
public class Test {
    public static void main(String args[]) {
        String Str1 = new String("www.runoob.com");
        char[] Str2 = new char[6];

        try {
            Str1.getChars(4, 10, Str2, 0);
            System.out.print("拷贝的字符串为:" );
            System.out.println(Str2 );
        } catch( Exception ex) {
            System.out.println("触发异常...");
        }
    }
}
//拷贝的字符串为:runoob
//Str1.getChars(4, 10, Str2, 0);将Str1从第4个字符复制到第九个

2.12 Java hashCode() 方法

用于返回字符串的哈希码;

字符串对象的哈希码根据以下公式计算:s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1];

使用 int 算法,这里 s[i] 是字符串的第 i 个字符的 ASCII 码,n 是字符串的长度,^ 表示求幂。空字符串的哈希值为 0。

     String Str = new String("www.runoob.com");
     System.out.println("字符串的哈希码为 :" + Str.hashCode() );
//字符串的哈希码为 :321005537

2.13 Java String indexOf() 方法

1、public int indexOf(int ch): 返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1

2、public int indexOf(int ch, int fromIndex): 返回从 fromIndex 位置开始查找指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1

3、int indexOf(String str): 返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1

4、int indexOf(String str, int fromIndex): 返回从 fromIndex 位置开始查找指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1

public class Main {
    public static void main(String args[]) {
        String string = "aaa456ac";  
        //查找指定字符是在字符串中的下标。在则返回所在字符串下标;不在则返回-1.  
        System.out.println(string.indexOf("b")); 
        // indexOf(String str); 返回结果:-1,"b"不存在  
 
        // 从第四个字符位置开始往后继续查找,包含当前位置  
        System.out.println(string.indexOf("a",3));
        //indexOf(String str, int fromIndex); 返回结果:6  
 
        //(与之前的差别:上面的参数是 String 类型,下面的参数是 int 类型)参考数据:a-97,b-98,c-99  
 
        // 从头开始查找是否存在指定的字符  
        System.out.println(string.indexOf(99));//indexOf(int ch);返回结果:7  
        System.out.println(string.indexOf('c'));//indexOf(int ch);返回结果:7  
 
        //从fromIndex查找ch,这个是字符型变量,不是字符串。字符a对应的数字就是97。  
        System.out.println(string.indexOf(97,3));//indexOf(int ch, int fromIndex); 返回结果:6  
        System.out.println(string.indexOf('a',3));//indexOf(int ch, int fromIndex); 返回结果:6  
    }
}

 2.14 Java intern() 方法

    String str1 = "Runoob";
    String str2 = new String("Runoob");
    String str3 = str2.intern();

    System.out.println(str1 == str2);  // false
    System.out.println(str1 == str3);  // true
/* 以上实例中,str1 是直接赋值的字符串常量,它会被自动添加到字符串池中。str2 是
通 过new String() 创建的新字符串对象,存放在堆中。通过调用 intern() 方法,
将 str2 添加到字符串池中,并返回字符串池中的引用,保存在 str3 中。*/







     String str1 = "a";
     String str2 = "b";
     String str3 = "ab";
     String str4 = str1 + str2;
     String str5 = new String("ab");
 
     System.out.println(str5.equals(str3));
//true   str5.equals(str3)这个结果为true,不用太多的解释,因为字符串的值的内容相同。
     System.out.println(str5 == str3);
/*false   str5 == str3对比的是引用的地址是否相同,由于str5采用new String方式定义的,所以地址引用一定不相等。所以结果为false。*/
     System.out.println(str5.intern() == str3);
/*true   当str5调用intern的时候,会检查字符串池中是否含有该字符串。由于之前定义的str3已经进入字符串池中,所以会得到相同的引用。*/
     System.out.println(str5.intern() == str4);
/*false   字符串相加的时候,都是静态字符串的结果会添加到字符串池,如果其中含有变量则不会进入字符串池中。但是字符串一旦进入字符串池中,就会先查找池中有无此对象。如果有此对象,则让对象引用指向此对象。如果无此对象,则先创建此对象,再让对象引用指向此对象。如果str1和str2换成"a"和"b",就true */

 2.15 Java lastIndexOf() 方法

1、public int lastIndexOf(int ch): 返回指定字符在此字符串中最后一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1;

2、public int lastIndexOf(int ch, int fromIndex): 返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索,如果此字符串中没有此字符,则返回 -1;

3、public int lastIndexOf(String str): 返回指定子字符串在此字符串中最右边出现处的索引,如果此字符串中没有这样的字符,则返回 -1;

4、public int lastIndexOf(String str, int fromIndex): 返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索,若此字符串中没有此字符,则返回 -1。

public class Test {
    public static void main(String args[]) {
        String Str = new String("菜鸟教程:www.runoob.com");
        String SubStr1 = new String("runoob");
        String SubStr2 = new String("com");

        System.out.print("查找字符 o 最后出现的位置 :" );
        System.out.println(Str.lastIndexOf( 'o' ));
        System.out.print("从第14个位置查找字符 o 最后出现的位置 :" );
        System.out.println(Str.lastIndexOf( 'o', 14 ));
        System.out.print("子字符串 SubStr1 最后出现的位置:" );
        System.out.println( Str.lastIndexOf( SubStr1 ));
        System.out.print("从第十五个位置开始搜索子字符串 SubStr1最后出现的位置 :" );
        System.out.println( Str.lastIndexOf( SubStr1, 15 ));
        System.out.print("子字符串 SubStr2 最后出现的位置 :" );
        System.out.println(Str.lastIndexOf( SubStr2 ));
    }
}
/*
查找字符 o 最后出现的位置 :17
从第14个位置查找字符 o 最后出现的位置 :13
子字符串 SubStr1 最后出现的位置:9
从第十五个位置开始搜索子字符串 SubStr1最后出现的位置 :9
子字符串 SubStr2 最后出现的位置 :16
*/

2.16 Java matches() 方法

//用于检测字符串是否匹配给定的正则表达式
public class Test {
    public static void main(String args[]) {
        String Str = new String("www.runoob.com");

        System.out.print("返回值 :" );
        System.out.println(Str.matches("(.*)runoob(.*)"));
        
        System.out.print("返回值 :" );
        System.out.println(Str.matches("(.*)google(.*)"));

        System.out.print("返回值 :" );
        System.out.println(Str.matches("www(.*)"));
    }
}
/*
返回值 :true
返回值 :false
返回值 :true
*/

2.17 Java regionMatches() 方法

//用于检测两个字符串在一个区域内是否相等
/**
public boolean regionMatches(int toffset,
                             String other,
                             int ooffset,
                             int len)

或

public boolean regionMatches(boolean ignoreCase,
                             int toffset,
                             String other,
                             int ooffset,
                             int len)

ignoreCase -- 如果为 true,则比较字符时忽略大小写。

toffset -- 此字符串中子区域的起始偏移量。

other -- 字符串参数。

ooffset -- 字符串参数中子区域的起始偏移量。

len -- 要比较的字符数。
*/


public class Test {
    public static void main(String args[]) {
        String Str1 = new String("www.runoob.com");
        String Str2 = new String("runoob");
        String Str3 = new String("RUNOOB");

        System.out.print("返回值 :" );
        System.out.println(Str1.regionMatches(4, Str2, 0, 5));

        System.out.print("返回值 :" );
        System.out.println(Str1.regionMatches(4, Str3, 0, 5));

        System.out.print("返回值 :" );
        System.out.println(Str1.regionMatches(true, 4, Str3, 0, 5));
    }
}
}
/*
返回值 :true
返回值 :false
返回值 :true
*/

2.18 Java replace() 方法

public String replace(char searchChar, char newChar)    

用 newChar 字符替换字符串中出现的所有 searchChar 字符,并返回替换后的新字符串

public class Main {
    public static void main(String args[]) {
        String Str = new String("Runoob");

        System.out.print("返回值 :" );
        System.out.println(Str.replace('o', 'T'));

        System.out.print("返回值 :" );
        System.out.println(Str.replace('u', 'D'));
    }
}
/*
返回值 :RunTTb
返回值 :RDnoob
*/

 2.19 Java replaceAll() 方法

public String replaceAll(String regex, String replacement)
使用给定的参数 replacement 替换字符串所有匹配给定的正则表达式的子字符串

//成功则返回替换的字符串,失败则返回原始字符串
public class Test {
    public static void main(String args[]) {
        String Str = new String("www.google.com");
        System.out.print("匹配成功返回值 :" );
        System.out.println(Str.replaceAll("(.*)google(.*)", "runoob" ));
        System.out.print("匹配失败返回值 :" );
        System.out.println(Str.replaceAll("(.*)taobao(.*)", "runoob" ));
    }
}
/*
匹配成功返回值 :runoob
匹配失败返回值 :www.google.com
*/

 2.20 Java replaceFirst() 方法

public String replaceFirst(String regex,String replacement)
使用给定的参数 replacement 替换字符串第一个匹配给定的正则表达式的子字符串

//成功则返回替换的字符串,失败则返回原始字符串
public class Test {
    public static void main(String args[]) {
        String Str = new String("hello runoob,I am from runoob。");

        System.out.print("返回值 :" );
        System.out.println(Str.replaceFirst("runoob", "google" ));
        System.out.print("返回值 :" );
        System.out.println(Str.replaceFirst("(.*)runoob(.*)", "google" ));
    }
}
/*
返回值 :hello google,I am from runoob。
返回值 :google
*/

 2.21 Java split() 方法

根据匹配给定的正则表达式来拆分字符串。

注意: . 、 $、 | 和 * 等转义字符,必须得加 \\  ,多个分隔符,可以用 | 作为连字符

public String[] split(String regex, int limit) ,返回分割后得到的字符串数组

  • regex -- 正则表达式分隔符。

  • limit -- 分割的份数。

public class Test {
    public static void main(String args[]) {
        String str = new String("Welcome-to-Runoob");
 
        System.out.println("- 分隔符返回值 :" );
        for (String retval: str.split("-")){
            System.out.println(retval);
        }
 
        System.out.println("");
        System.out.println("- 分隔符设置分割份数返回值 :" );
        for (String retval: str.split("-", 2)){
            System.out.println(retval);
        }
 
        System.out.println("");
        String str2 = new String("www.runoob.com");
        System.out.println("转义字符返回值 :" );
        for (String retval: str2.split("\\.", 3)){
            System.out.println(retval);
        }
 
        System.out.println("");
        String str3 = new String("acount=? and uu =? or n=?");
        System.out.println("多个分隔符返回值 :" );
        for (String retval: str3.split("and|or")){
            System.out.println(retval);
        }
    }
}
/*
- 分隔符返回值 :
Welcome
to
Runoob

- 分隔符设置分割份数返回值 :
Welcome
to-Runoob

转义字符返回值 :
www
runoob
com

多个分隔符返回值 :
acount=? 
 uu =? 
 n=?
*/

 2.22 Java startsWith() 方法

public boolean startsWith(String prefix, int toffset)

public boolean startsWith(String prefix)
用于检测字符串是否以指定的前缀开始,返回值为true/false

public class Test {
    public static void main(String args[]) {
        String Str = new String("www.runoob.com");
 
        System.out.print("返回值 :" );
        System.out.println(Str.startsWith("www") );
 
        System.out.print("返回值 :" );
        System.out.println(Str.startsWith("runoob") );
 
        System.out.print("返回值 :" );
        System.out.println(Str.startsWith("runoob", 4) );
    }
}
/*
返回值 :true
返回值 :false
返回值 :true
*/

 2.23 Java subSequence() 方法

public CharSequence subSequence(int beginIndex, int endIndex)
返回一个新的字符序列,它是此序列的一个子序列

public class Test {
    public static void main(String args[]) {
         String Str = new String("www.runoob.com");

         System.out.print("返回值 :" );
         System.out.println(Str.subSequence(4, 10) );
    }
}
//返回值 :runoob ————第四个到第九个

 2.24 Java substring() 方法

public String substring(int beginIndex)

public String substring(int beginIndex, int endIndex)
返回字符串的子字符串

  • beginIndex -- 起始索引(包括), 索引从 0 开始。

  • endIndex -- 结束索引(不包括)。

public class RunoobTest {
    public static void main(String args[]) {
        String Str = new String("This is text");
 
        System.out.print("返回值 :" );
        System.out.println(Str.substring(4) );
 
        System.out.print("返回值 :" );
        System.out.println(Str.substring(4, 10) );
    }
}
/*
返回值 : is text 
返回值 : is te————从第四个开始到第十个(但不包括第十个)
*/

 2.25 Java toCharArray() 方法

将字符串转换为字符数组

2.26 Java toLowerCase() 方法

//将字符串转换为小写
        String Str = new String("WWW.RUNOOB.COM");
        System.out.print("返回值 :" );
        System.out.println( Str.toLowerCase() );//返回值 :www.runoob.com

2.27 Java toUpperCase() 方法

  //将字符串小写字符转换为大写
    String Str = new String("www.runoob.com");
    System.out.print("返回值 :" );
    System.out.println( Str.toUpperCase() );//返回值 :WWW.RUNOOB.COM

2.28 Java trim() 方法

//删除字符串的头尾空白符
      String Str = new String("    www.runoob.com    ");
      System.out.println( Str.trim() );//删除头尾空白 :www.runoob.com

 2.29 Java valueOf() 方法

//1、返回参数类型的表示形式
public class Test {
    public static void main(String args[]) {
        double d = 1100.00;
        boolean b = true;
        long l = 1234567890;
        char[] arr = {'r', 'u', 'n', 'o', 'o', 'b' };

        System.out.println("返回值 : " + String.valueOf(d) );
        System.out.println("返回值 : " + String.valueOf(b) );
        System.out.println("返回值 : " + String.valueOf(l) );
        System.out.println("返回值 : " + String.valueOf(arr) );
    }
}
/*很容易理解,就是把对应的boolean/int/byte等基本数据类型变量转换成字符串
  int i=10;
  String str = String.valueOf(i); ————str="10"
  
  相对比的是parseInt/parseDouble等方法,将字符串转换成相对应变量
  Integer.parseInt(String s) : 将 s 转换成 int 
*/
/*2、将不同变量对象包装成另外一种变量对象,valueOf 方法将字符串转换为包装类型的数字,并保留前导零,同时具有对象的特性;parseInt 方法将字符串转换为基本数据类型的数字,忽略前导零,但不具有对象的特性。在处理无效字符串*/
String str = "0123";
Integer i = Integer.valueOf(str);
//将存储在公共池的str——字符串"0123"变成Integer类型i,值为123

String str = "0123";
int i = Integer.parseInt(str);
//将"0123"变成int类型i,值为123

2.30 Java String contains() 方法

//判断字符串中是否包含指定的字符或字符串
  String myStr = "Runoob";
  System.out.println(myStr.contains("o"));//true
  System.out.println(myStr.contains("s"));//false

2.31 Java String isEmpty() 方法

//用于判断字符串是否为空
 public class Main {
    public static void main(String[] args) { 
        String myStr2 = "";        // 空字符串
        String myStr3 = "    ";    // 空格也是字符串,length() 不为 0 
        System.out.println("myStr2 是否为空:" + myStr2.isEmpty());
        System.out.println("myStr3 长度:" + myStr3.length());
        System.out.println("myStr3 是否为空:" + myStr3.isEmpty());
    }
}
/*
myStr2 是否为空:true
myStr3 长度:4
myStr3 是否为空:false
*/

参考资料:菜鸟教程 - 学的不仅是技术,更是梦想!

参考文献1:JAVA toString方法详解-CSDN博客

参考文献2:Java 中 valueOf 和 parseInt 的区别_valueof和parseint-CSDN博客

你可能感兴趣的:(JAVA,学习,java)