【JavaSE笔记】Java常用类及其方法(二)_String

来源:互联网 发布:淘宝官方优惠券app 编辑:程序博客网 时间:2024/05/01 06:15
本期知识点:
String类的常用方法

类 String

String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。
字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享。

字符串的特点:

a. 字符串一旦被赋值,其值不能再改变。
b. 方法区:有一个内存区域:字符串常量池。如果我们创建一个字符串对象,给对象赋值,这个值会在常量池进行寻找,有则返回;没有那么就在常量池开辟空间。
例:
public class StringDemo {public static void main(String[] args) {//创建字符串对象String s = "hello" ;s += "world" ;System.out.println("s:"+s);//hellowrld}}

(面试题):

String s1 = new String("Hello");创建了几个对象?
String s2 = "Hello";创建了几个对象?

s1创建了两个对象。
s2创建了一个对象,直接指向常量池中的。


1. 常用构造方法

a. public String()   无参构造
b. public String(byte[] bytes)   将字节数组转换成字符串
c. public String(byte[] bytes,int offset,int length)   将字节数组的一部分转换成字符串
d. public String(char[] value)   将字符数组转换成字符串
e. public String(char[] value,int offset,int count)   将字符数组的一部分转换成字符串
 f. public String(String original)   将一个常量转换字符串:String 是不可变的,所以无需使用此构造方法
例:
public class Demo01 {public static void main(String[] args){//public String():无参构造String s = new String();System.out.println(s);//空字符序列System.out.println(s.length());//0;System.out.println("--------------------");//public String(byte[] bytes):将字节数组转换成字符串//构造一个字节数组,静态初始化;byte[] a = {97,98,99,100,101};String s2 = new String(a);System.out.println(s2);//abcde;System.out.println(s2.length());//5;System.out.println("--------------------");//public String(byte[] bytes,int offset,int length):将字节数组的一部分转换成字符串String s3 = new String(a,0,3);System.out.println(s3);//abc;System.out.println(s3.length());//3System.out.println("--------------------");//public String(char[] value):将字符数组转换成字符串char[] b = {'L','I','N','K','I','N',' ','P','A','R','K'};String s4 = new String(b);System.out.println(s4);//LINKIN PARKSystem.out.println(s4.length());//11System.out.println("--------------------");//public String(char[] value,int offset,int count):将字符数组的一部分转换成字符串String s5 = new String(b,5,6);System.out.println(s5);//N PARKSystem.out.println(s5.length());//6System.out.println("--------------------");//public String(String original):将一个常量转换字符串:String 是不可变的,所以无需使用此构造方法 String s6 = new String("LinKin Park"); System.out.println(s6); System.out.println(s6.length());}}


2. 常用的判断功能

a.boolean equals(Object obj)   将此字符串与指定的对象比较 。
b. boolean equalsIgnoreCase(String str)   将此字符串和另一个字符串进行比较,忽略大小写。
c. boolean contains(String str)   判断此字符串中是否包含str这个子字符串。
d. boolean startsWith(String str)   判断是否以str子字符串开头。
e. boolean endsWith(String str)   判断是否已str字符串结尾。
 f. boolean isEmpty()   判断字符串是否为空。
注意:
String s = ''''; //表示s字符串是空字符串
String s = null;//空对象,连对象都没有.
当字符串为null时,会出现NullPointerException:空指针异常,需要加入非空判断。
例:
public class String类的判断功能 {public static void main(String[] args) {//定义三个字符串;String a = "linkinPark";String b = "linkinPark";String c = "LinKinPark";//boolean equals(Object obj):将此字符串与指定的对象比较 。System.out.println(a.equals(b));//trueSystem.out.println(a.equals(c));//falseSystem.out.println("—————————");//boolean equalsIgnoreCase(String str):将此字符串和另一个字符串进行比较,忽略大小写。System.out.println(a.equalsIgnoreCase(b));//trueSystem.out.println(a.equalsIgnoreCase(c));//trueSystem.out.println("—————————");//boolean contains(String str):判断此字符串中是否包含str这个子字符串。System.out.println(a.contains("Park"));//trueSystem.out.println(a.contains("Lin"));//falseSystem.out.println("—————————");//boolean startsWith(String str):判断是否以str子字符串开头。System.out.println(a.startsWith("lin"));//trueSystem.out.println(a.startsWith("Lin"));//falseSystem.out.println("—————————");//boolean endsWith(String str):判断是否已str字符串结尾。System.out.println(a.endsWith("Park"));//trueSystem.out.println(a.endsWith("park"));//falseSystem.out.println("—————————");//boolean isEmpty():判断字符串是否为空。String e = " ";System.out.println(e.isEmpty());//falseString f = null;//java.lang.NullPointerException//加入非空判断if(f!=null){System.out.println(f.isEmpty());}}}

3. 常用的字符串转换功能

a. byte[] getBytes()   将一个字符串转换字节数组。
b. char[] toCharArray()   将一个字符串转换成字符数组。★
c. static String valueOf(char[] chs)   将字符数组转换成字符串。
d. static String valueOf(int i)   将int类型的数据转换字符串。
注意:String类中的valueOf方法可以将任何数据类型转换成String。
e. String toLowerCase()   将字符串转换成小写。
 f. String toUpperCase()   将字符串转换成大写。
g. String concat(String str)   字符串拼接功能。
例:
public class String类的转换功能 {public static void main(String[] args) {//定义一个字符串String a = "LinKinPark";//byte[] getBytes():将一个字符串转换字节数组。byte[] s1 = a.getBytes();for (int i = 0; i < s1.length; i++) {System.out.print(s1[i]+" ");//76 105 110 75 105 110 80 97 114 107 }System.out.println();System.out.println("—————————");//char[] toCharArray():(重点方法):将一个字符串转换成字符数组。(重点)char [] s2 = a.toCharArray();for (int i = 0; i < s2.length; i++) {System.out.print(s2[i]+" ");//L i n K i n P a r k }System.out.println();System.out.println("—————————");// static String valueOf(char[] chs):将字符数组转换成字符串。String b = String.valueOf(s2);System.out.println(b);//LinKinParkSystem.out.println("—————————");// tatic String valueOf(int i):将int类型的数据转换字符串。//注意:String类中的valueOf方法可以将任何数据类型转换成String。int x = 101;String c = String.valueOf(x);System.out.println(c);//101System.out.println("—————————");// String toLowerCase():将字符串转换成小写。// String toUpperCase():将字符串转换成大写。System.out.println("小写:"+a.toLowerCase());//小写:linkinparkSystem.out.println("大写:"+a.toUpperCase());//大写:LINKINPARKSystem.out.println("—————————");//String concat(String str):字符串拼接功能。String d = "Imagine";String e = "Dragons";String f = d.concat(e);System.out.println(f);//ImagineDragons}}


4. 常用的获取功能

a. int length()  获取字符串的长度。
b. char charAt(int index)   返回指定索引处的字符★
c. int indexOf(int ch)   返回回指定字符在此字符串中第一次出现处的索引★

注意:为什么这里的参数是int类型,而不是char类型
'a'和97 都代表'a'
d. int indexOf(String str)  返回指定字符串在此字符串第一次出现的索引
e. int indexOf(int ch,int fromIndex)   返回此字符中从指定位置开始后第一次出现的索引
 f. int indexOf(String str,int fromIndex)   返回此字符串中从指定位置开始后第一次出现的索引★
g. String substring(int beginIndex)   截取:从指定位置开始截取,默认截取到末尾:包含start这个索引
h. String substring(int beginIndex,int endIndex)   从指定位置开始截取到指定位置结束:包左(start这个索引),不包含end这个位置.
例:
public class String类的获取功能 {public static void main(String[] args) {//定义一个字符串String a = "LinkPark";//int length():获取字符串的长度。System.out.println(a.length());//8System.out.println("—————————");//char charAt(int index):返回指定索引处的字符!(重点)★System.out.println(a.charAt(5));//aSystem.out.println("—————————");//int indexOf(int ch):返回回指定字符在此字符串中第一次出现处的索引(重点)★//注意:为什么这里的参数是int类型,而不是char类型// 'a'和97 都代表'a'System.out.println(a.indexOf('P'));//4System.out.println(a.indexOf('k'));//3System.out.println("—————————");// int indexOf(String str):返回指定字符串在此字符串第一次出现的索引!System.out.println(a.indexOf("in"));//1System.out.println(a.indexOf("ar"));//5System.out.println("—————————");//int indexOf(int ch,int fromIndex):返回此字符中从指定位置开始后第一次出现的索引System.out.println(a.indexOf('k', 5));//7System.out.println("—————————");//int indexOf(String str,int fromIndex):返回此字符串中从指定位置开始后第一次出现的索引★System.out.println(a.indexOf("ar", 4));//5System.out.println("—————————");// String substring(int beginIndex):截取:从指定位置开始截取,默认截取到末尾:包含start这个索引System.out.println(a.substring(4));//ParkSystem.out.println("—————————");// String substring(int beginIndex,int endIndex):从指定位置开始截取到指定位置结束:包左(start这个索引),不包含end这个位置.System.out.println(a.substring(2, 6));//nkPa}}


5. String类其他功能

a. 替换功能:
String replace(char old,char new):将老的字符替换成一个新的字符。

String replace(String old,String new) :替换字符串。


b. 去除字符串两空格:

String trim()


c. 按字典的顺序比较两个字符串。
String comparaTo(String str)
例:
public class String类的其他功能_替换和去除空格 {public static void main(String[] args) {//定义一个字符串String a = "LinkinPark";//String replace(char old,char new):将老的字符替换成一个新的字符。String b = a.replace('k', 'W');System.out.println(b);//LinWinParWSystem.out.println("—————————");//String replace(String old,String new):替换字符串。String c = a.replaceAll("Linkin", "NewYork");System.out.println(c);//NewYorkParkSystem.out.println("—————————");//去除字符串两空格:String trim() String d = " -LinkinPark- ";System.out.println(d);// -LinkinPark- d=d.trim();System.out.println(d);//-LinkinPark-}}

public class String类的其他功能_按字典顺序 {public static void main(String[] args) {//定义字符串String a = "HelloWorld";String b = "HelloWorld";String c = "abc";System.out.println(a.compareTo(b));//0System.out.println(a.compareTo(c));//-25System.out.println("—————————");String d = "Hello";String e = "Hel";System.out.println(d.compareTo(e));//2/* 源码public int compareTo(String anotherString) {int len1 = value.length;//this.value.length-->d.toCharArray().length = 5;    int len2 = anotherString.value.length;//this.value.length-->e.toCharArray().length = 3;    int lim = Math.min(len1, len2);// min = 3;    char v1[] = value;  //d字符串转换成字符数组:['H','e','l','l','o'];    char v2[] = anotherString.value; //e字符串转换成字符数组:['H','e','l'];    int k = 0;    while (k < lim) {        char c1 = v1[k];        char c2 = v2[k];        if (c1 != c2) {            return c1 - c2;        }        k++;    }    return len1 - len2;}*/}}








阅读全文
1 0