String类——String的获取功能、获取功能的举例子、String的转换功能、转换功能的举例子、字符串的替换功能、删除字符串两端空格功能、字符串的比较功能、举例
1、String的获取功能:
(1)int length()
获取字符串的长度,即字符串中字符的个数。
(2)char charAt(int index)
获取指定索引位置上的字符。
(3)int indexOf(int ch)
获取指定字符在此字符串中第一次出现的索引。注意:这里用的是int,不是char,原因是'a'和97都可以作为实参传入。
(4)int indexOf(String str)
获取指定字符串在此字符串中第一次出现的索引。
(5)int indexOf(int ch,int fromIndex)
获取指定字符在此字符串中指定位置后第一次出现的索引。
(6)int indexOf(String str,int fromIndex)
获取指定字符串在此字符串中指定位置后第一次出现的索引。
(7)String substring(int start)
从指定位置截取子字符串,默认是截取到末尾。(包含start位置)
(8)String substring(int start,int end)
从指定位置开始到指定位置结束截取子字符串。(包start不包end)
2、获取功能的举例
package cn.itcast_06;
public class StringDemo {
public static void main(String[] args) {
// int length()
// 获取字符串的长度,即字符串中字符的个数。
String s="helloworld";
System.out.println("length():"+s.length());//10
System.out.println("--------------");
// char charAt(int index)
// 获取指定索引位置上的字符。
System.out.println("charAt:"+s.charAt(0));//h
System.out.println("charAt:"+s.charAt(9));//d
System.out.println("--------------");
// int indexOf(int ch)
// 获取指定字符在此字符串中第一次出现的索引。注意:这里用的是int,不是char,
// 原因是'a'和97都可以作为实参传入。
System.out.println("indexOf:"+s.indexOf('h'));//0
System.out.println("indexOf:"+s.indexOf('d'));//9
System.out.println("--------------");
// int indexOf(String str)
// 获取指定字符串在此字符串中第一次出现的索引。
System.out.println("indexOf:"+s.indexOf("owo"));//4
System.out.println("indexOf:"+s.indexOf("ld"));//8
System.out.println("--------------");
// int indexOf(int ch,int fromIndex)
// 获取指定字符在此字符串中指定位置后第一次出现的索引。
// int indexOf(String str,int fromIndex)
// 获取指定字符串在此字符串中指定位置后第一次出现的索引。
System.out.println("indexOf:"+s.indexOf('l',4));//8
System.out.println("indexOf:"+s.indexOf('l',40));//-1
System.out.println("--------------");
// String substring(int start)
// 从指定位置截取子字符串,默认是截取到末尾。(包含start位置)
System.out.println("substring:"+s.substring(4));//oworld
System.out.println("substring:"+s.substring(0));//helloworld
// String substring(int start,int end)
// 从指定位置开始到指定位置结束截取子字符串。(包start不包end)
System.out.println("substring:"+s.substring(4,8));//owor
System.out.println("substring:"+s.substring(0,s.length()));//helloworld
}
}
3、String的转换功能:
(1)byte[ ] getBytes( )
把字符串转换为字节数组。
(2)char[ ] toCharArray( )
把字符串转换为字符数组。
(3)static String valueOf(char[ ] chs)
把字符数组转成字符串。
(4)static String valueOf(int i)
把int类型的数据转成字符串。
注意:String类的valueOf方法可以把任意类型的数据转成字符串。
(5)String toLowerCase( )
把字符串转成小写。
(7)String toUpperCase( )
把字符串转成大写。
(8)String concat(String str)
把字符串拼接。用 + 也可以。
4、String的转换功能举例:
package cn.itcast_06;
public class StringDemo4 {
public static void main(String[] args) {
// 定义一个字符串对象
String s = "JavaSE";
// byte[] getBytes():把字符串转换为字节数组。
byte[] bys = s.getBytes();
for (int x = 0; x < bys.length; x++) {
System.out.println(bys[x]);
}
System.out.println("----------------");
// char[] toCharArray():把字符串转换为字符数组。
char[] chs = s.toCharArray();
for (int x = 0; x < chs.length; x++) {
System.out.println(chs[x]);
}
System.out.println("----------------");
// static String valueOf(char[] chs):把字符数组转成字符串。
String ss = String.valueOf(chs);
System.out.println(ss);
System.out.println("----------------");
// static String valueOf(int i):把int类型的数据转成字符串。
int i = 100;
String sss = String.valueOf(i);
System.out.println(sss);
System.out.println("----------------");
// String toLowerCase():把字符串转成小写。
System.out.println("toLowerCase:" + s.toLowerCase());
System.out.println("s:" + s);
System.out.println("----------------");
// String toUpperCase():把字符串转成大写。
System.out.println("toUpperCase:" + s.toUpperCase());
System.out.println("s:" + s);
System.out.println("----------------");
// String concat(String str):把字符串拼接。
String s1 = "JavaSE";
String s2 = "JavaEE";
String s3 = s1 + s2;
String s4 = s1.concat(s2);
System.out.println("s3:"+s3);
System.out.println("s4:"+s4);
}
}
5、String的其他功能:
(1)替换功能:
String replace(char old,char new)
String replace(String old,String new)
(2)去除字符串两端的空格
String trim()
(3)按字典顺序比较两个字符串
int compareTo(String str)
int compareToIgnoreCase(String str)
6、String的其他功能举例:
package cn.itcast_06;
public class StringDemo6 {
public static void main(String[] args) {
// 替换功能
String s1 = "helloworld";
String s2 = s1.replace('l', 'k');
String s3 = s1.replace("owo", "ak47");
System.out.println("s1:" + s1);
System.out.println("s2:" + s2);
System.out.println("s3:" + s3);
System.out.println("---------------");
// 去除字符串两端的空格
String s4 = " hello world ";
String s5 = s4.trim();
System.out.println("s4:" + s4 + "---");
System.out.println("s5:" + s5 + "---");
// 按字典顺序比较两个字符串
String s6 = "hello";
String s7 = "hello";
String s8 = "abc";
String s9 = "xyz";
System.out.println(s6.compareTo(s7));// 0
System.out.println(s6.compareTo(s8));// 7
System.out.println(s6.compareTo(s9));// -16
}
}
7、String类的compareTo方法的源码解析
package cn.itcast_06;
/*
* 如果我们看到问题了,看怎么办呢?
* 看源码。
*/
public class StringTest {
public static void main(String[] args) {
String s1 = "hello";
String s2 = "hel";
System.out.println(s1.compareTo(s2)); // 2
}
}
如果我们看到问题了,看怎么办呢? 看源码。
private final char value[];
底层自动实现:字符串会自动转换为一个字符数组。
public int compareTo(String anotherString) {
//this -- s1 -- "hello"
//anotherString -- s2 -- "hel"
int len1 = value.length; //this.value.length--s1.toCharArray().length--5
int len2 = anotherString.value.length;//s2.value.length -- s2.toCharArray().length--3
int lim = Math.min(len1, len2); //Math.min(5,3); -- lim=3;
char v1[] = value; //s1.toCharArray()
char v2[] = anotherString.value;
//char v1[] = {'h','e','l','l','o'};
//char v2[] = {'h','e','l'};
int k = 0;
while (k < lim) {
char c1 = v1[k]; //c1='h','e','l'
char c2 = v2[k]; //c2='h','e','l'
if (c1 != c2) {
return c1 - c2;
}
k++;
}
return len1 - len2; //5-3=2;
}
String s1 = "hello";
String s2 = "hel";
System.out.println(s1.compareTo(s2)); // 2
******************************************
8、String类的总结:
1:Scanner的使用(了解)
(1)在JDK5以后出现的用于键盘录入数据的类。
(2)构造方法:
A:讲解了System.in这个东西。
它其实是标准的输入流,对应于键盘录入
B:构造方法
InputStream is = System.in;
Scanner(InputStream is)
C:常用的格式
Scanner sc = new Scanner(System.in);
(3)基本方法格式:
A:hasNextXxx() 判断是否是某种类型的
B:nextXxx() 返回某种类型的元素
(4)要掌握的两个方法
A:public int nextInt()
B:public String nextLine()
(5)需要注意的小问题
A:同一个Scanner对象,先获取数值,再获取字符串会出现一个小问题。
B:解决方案:
a:重新定义一个Scanner对象
b:把所有的数据都用字符串获取,然后再进行相应的转换
2:String类的概述和使用(掌握)
(1)多个字符组成的一串数据。
其实它可以和字符数组进行相互转换。
(2)构造方法:
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)
下面的这一个虽然不是构造方法,但是结果也是一个字符串对象
G:String s = "hello";
(3)字符串的特点
A:字符串一旦被赋值,就不能改变。
注意:这里指的是字符串的内容不能改变,而不是引用不能改变。
B:字面值作为字符串对象和通过构造方法创建对象的不同
String s = new String("hello");和String s = "hello"的区别?
(4)字符串的面试题(看程序写结果)
A:==和equals()
String s1 = new String("hello");
String s2 = new String("hello");
System.out.println(s1 == s2);// false
System.out.println(s1.equals(s2));// true
String s3 = new String("hello");
String s4 = "hello";
System.out.println(s3 == s4);// false
System.out.println(s3.equals(s4));// true
String s5 = "hello";
String s6 = "hello";
System.out.println(s5 == s6);// true
System.out.println(s5.equals(s6));// true
B:字符串的拼接
String s1 = "hello";
String s2 = "world";
String s3 = "helloworld";
System.out.println(s3 == s1 + s2);// false
System.out.println(s3.equals((s1 + s2)));// true
System.out.println(s3 == "hello" + "world");// false 这个我们错了,应该是true
System.out.println(s3.equals("hello" + "world"));// true
(5)字符串的功能(自己补齐方法中文意思)
A:判断功能
boolean equals(Object obj)
boolean equalsIgnoreCase(String str)
boolean contains(String str)
boolean startsWith(String str)
boolean endsWith(String str)
boolean isEmpty()
B:获取功能
int length()
char charAt(int index)
int indexOf(int ch)
int indexOf(String str)
int indexOf(int ch,int fromIndex)
int indexOf(String str,int fromIndex)
String substring(int start)
String substring(int start,int end)
C:转换功能
byte[] getBytes()
char[] toCharArray()
static String valueOf(char[] chs)
static String valueOf(int i)
String toLowerCase()
String toUpperCase()
String concat(String str)
D:其他功能
a:替换功能
String replace(char old,char new)
String replace(String old,String new)
b:去空格功能
String trim()
c:按字典比较功能
int compareTo(String str)
int compareToIgnoreCase(String str)
(6)字符串的案例
A:模拟用户登录
B:字符串遍历
C:统计字符串中大写,小写及数字字符的个数
D:把字符串的首字母转成大写,其他小写
E:把int数组拼接成一个指定格式的字符串
F:字符串反转
G:统计大串中小串出现的次数