String构造方法
-
字符串:就是由多个字符组成的一串数据。也可以看成是一个字符数组。
-
通过查看API,我们可以知道
-
A:字符串字面值"abc"也可以看成是一个字符串对象。
-
B:字符串是常量,一旦被赋值,就不能被改变。
-
构造方法:
-
<span style="color: #ff0000;"> public String():空构造
-
public String(byte[] bytes):把字节数组转成字符串
-
public String(byte[] bytes,int index,int length):把字节数组的一部分转成字符串
-
public String(char[] value):把字符数组转成字符串
-
public String(char[] value,int count):把字符数组的一部分转成字符串
-
public String(String original):把字符串常量值转成字符串
-
字符串的方法:
-
public int length():返回此字符串的长度。
<span style="color: #008000;">*/
<span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> StringDemo {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
<span style="color: #008000;">//<span style="color: #008000;"> public String():空构造
String s1 = <span style="color: #0000ff;">new<span style="color: #000000;"> String();
System.out.println("s1:" +<span style="color: #000000;"> s1);
System.out.println("s1.length():" +<span style="color: #000000;"> s1.length());
System.out.println("--------------------------"<span style="color: #000000;">);
<span style="color: #008000;">//<span style="color: #008000;">s1:
<span style="color: #008000;">//<span style="color: #008000;">s1.length():0</span><span style="color: #008000;">//</span><span style="color: #008000;"> public String(byte[] bytes):把字节数组转成字符串</span> <span style="color: #0000ff;">byte</span>[] bys = { 97,98,99,100,101<span style="color: #000000;"> }; String s2 </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> String(bys); System.out.println(</span>"s2:" + s2);<span style="color: #008000;">//</span><span style="color: #008000;">abcde</span> System.out.println("s2.length():" + s2.length());<span style="color: #008000;">//
System.out.println("--------------------------"<span style="color: #000000;">);
</span><span style="color: #008000;">//</span><span style="color: #008000;"> public String(byte[] bytes,int length):把字节数组的一部分转成字符串 </span><span style="color: #008000;">//</span><span style="color: #008000;"> 我想得到字符串"bcd"</span> String s3 = <span style="color: #0000ff;">new</span> String(bys,1,3<span style="color: #000000;">); System.out.println(</span>"s3:" +<span style="color: #000000;"> s3); System.out.println(</span>"s3.length():" +<span style="color: #000000;"> s3.length()); System.out.println(</span>"--------------------------"<span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;"> public String(char[] value):把字符数组转成字符串</span> <span style="color: #0000ff;">char</span>[] chs = { 'a','b','c','d','e','爱','林','亲'<span style="color: #000000;"> }; String s4 </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> String(chs); System.out.println(</span>"s4:" +<span style="color: #000000;"> s4); System.out.println(</span>"s4.length():" +<span style="color: #000000;"> s4.length()); System.out.println(</span>"--------------------------"<span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;"> public String(char[] value,int count):把字符数组的一部分转成字符串</span> String s5 = <span style="color: #0000ff;">new</span> String(chs,2,4<span style="color: #000000;">); System.out.println(</span>"s5:" +<span style="color: #000000;"> s5); System.out.println(</span>"s5.length():" +<span style="color: #000000;"> s5.length()); System.out.println(</span>"--------------------------"<span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;">public String(String original):把字符串常量值转成字符串</span> String s6 = <span style="color: #0000ff;">new</span> String("abcde"<span style="color: #000000;">); System.out.println(</span>"s6:" +<span style="color: #000000;"> s6); System.out.println(</span>"s6.length():" +<span style="color: #000000;"> s6.length()); System.out.println(</span>"--------------------------"<span style="color: #000000;">); </span><span style="color: #ff0000;">//字符串字面值"abc"也可以看成是一个字符串对象。 String s7 = "abcde"</span><span style="color: #000000;"><span style="color: #ff0000;">;</span> System.out.println(</span>"s7:"+<span style="color: #000000;">s7); System.out.println(</span>"s7.length():"+<span style="color: #000000;">s7.length());
}
}
字符串的特点:一旦被赋值,就不能改变。
但是引用可以改变
- 字符串的特点:一旦被赋值,就不能改变。
<span style="color: #008000;">*/
<span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> StringDemo {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
String s = "hello"<span style="color: #000000;">;
s += "world"<span style="color: #000000;">;
System.out.println("s:" + s); <span style="color: #008000;">//<span style="color: #008000;"> helloworld
<span style="color: #000000;"> }
}
图解:
String s = new String(“hello”)和 String s = “hello”;的区别?
String字面值对象和构造方法创建对象的区别
-
String s = new String(“hello”)和String s = “hello”;的区别?
-
<span style="color: #ff0000;">有。前者会创建2个对象,后者创建1个对象。
-
<span style="color: #ff0000;">==:比较引用类型比较的是地址值是否相同
-
equals:比较引用类型默认也是比较地址值是否相同,而String类重写了equals()方法,比较的是内容是否相同。
<span style="color: #ff0000;">*/
<span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> StringDemo2 {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
String s1 = <span style="color: #0000ff;">new String("hello"<span style="color: #000000;">);
String s2 = "hello"<span style="color: #000000;">;System.out.println(s1 </span><span style="color: #ff0000;">==</span> s2);<span style="color: #008000;">/<span style="color: #ff0000;">/</span></span><span style="color: #ff0000;"> false</span> System.out.println(s1.<span style="color: #ff0000;">equals</span>(s2));<span style="color: #ff0000;">// true</span>
<span style="color: #000000;"> }
}
图解:
-
看程序写结果
-
字符串如果是变量相加,先开空间,在拼接。
-
字符串如果是常量相加,是先加,然后在常量池找,如果有就直接返回,否则,就创建。
<span style="color: #008000;">*/
<span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> StringDemo4 {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
String s1 = "hello"<span style="color: #000000;">;
String s2 = "world"<span style="color: #000000;">;
<span style="color: #ff0000;">String s3 <span style="color: #ff0000;">= "helloworld"<span style="color: #000000;"><span style="color: #ff0000;">;
<span style="color: #ff0000;"> System.out.println(s3 <span style="color: #ff0000;">== s1 + s2);// false。字符串如果是变量相加,先开空间,再拼接。
System.out.println(s3.equals((s1 + s2)));<span style="color: #008000;">//<span style="color: #008000;"> true
<span style="color: #ff0000;">
System.out.println(s3 == "hello" + "world");//true。字符串如果是常量相加,是先加,然后在常量池找,如果有就直接返回,否则,就创建。
System.out.println(s3.equals("hello" + "world"));<span style="color: #008000;">//<span style="color: #008000;"> true</span><span style="color: #008000;">//</span><span style="color: #008000;"> 通过反编译看源码,我们知道这里已经做好了处理。 </span><span style="color: #008000;">//</span><span style="color: #008000;"> System.out.println(s3 == "helloworld"); </span><span style="color: #008000;">//</span><span style="color: #008000;"> System.out.println(s3.equals("helloworld"));</span>
<span style="color: #000000;"> }
}
String类的判断功能:
-
String类的判断功能:
*<span style="color: #ff0000;"> boolean equals(Object obj):比较字符串的内容是否相同,区分大小写 -
boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
-
boolean contains(String str):判断大字符串中是否包含小字符串
-
boolean startsWith(String str):判断字符串是否以某个指定的字符串开头
-
boolean endsWith(String str):判断字符串是否以某个指定的字符串结尾
-
boolean isEmpty():判断字符串是否为空。
-
注意:
-
<span style="color: #ff0000;">字符串内容为空和字符串对象为空。
-
String s = "";//对象存在,所以可以调方法
-
String s = null;//对象不存在,不能调方法
<span style="color: #008000;">*/
<span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> StringDemo {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
<span style="color: #008000;">//<span style="color: #008000;"> 创建字符串对象
String s1 = "helloworld"<span style="color: #000000;">;
String s2 = "helloworld"<span style="color: #000000;">;
String s3 = "HelloWorld"<span style="color: #000000;">;</span><span style="color: #008000;">//</span><span style="color: #008000;"> boolean equals(Object obj):比较字符串的<a href="/tag/neirong/" target="_blank" class="keywords">内容</a>是否相同,区分大小写</span> System.out.println("equals:" +<span style="color: #000000;"> s1.equals(s2)); System.out.println(</span>"equals:" +<span style="color: #000000;"> s1.equals(s3)); System.out.println(</span>"-----------------------"<span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;"> boolean equalsIgnoreCase(String str):比较字符串的<a href="/tag/neirong/" target="_blank" class="keywords">内容</a>是否相同,忽略大小写</span> System.out.println("equals:" +<span style="color: #000000;"> s1.equalsIgnoreCase(s2)); System.out.println(</span>"equals:" +<span style="color: #000000;"> s1.equalsIgnoreCase(s3)); System.out.println(</span>"-----------------------"<span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;"> boolean contains(String str):判断大字符串中是否包含小字符串</span> System.out.println("contains:" + s1.contains("hello"<span style="color: #000000;">)); System.out.println(</span>"contains:" + s1.contains("hw"<span style="color: #000000;">)); System.out.println(</span>"-----------------------"<span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;"> boolean startsWith(String str):判断字符串是否以某个指定的字符串开头</span> System.out.println("startsWith:" + s1.startsWith("h"<span style="color: #000000;">)); System.out.println(</span>"startsWith:" + s1.startsWith("hello"<span style="color: #000000;">)); System.out.println(</span>"startsWith:" + s1.startsWith("world"<span style="color: #000000;">)); System.out.println(</span>"-----------------------"<span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;"> 练习:boolean endsWith(String str):判断字符串是否以某个指定的字符串结尾这个自己玩 </span><span style="color: #008000;">//</span><span style="color: #008000;"> boolean isEmpty():判断字符串是否为空。</span> System.out.println("isEmpty:" +<span style="color: #000000;"> s1.isEmpty()); String s4 </span>= ""<span style="color: #000000;">; String s5 </span>= <span style="color: #0000ff;">null</span><span style="color: #000000;">; System.out.println(</span>"isEmpty:" +<span style="color: #000000;"> s4.isEmpty()); </span><span style="color: #008000;">//</span><span style="color: #008000;"> NullPointerException </span><span style="color: #008000;">//</span><span style="color: #008000;"> s5对象都不存在,所以不能<a href="/tag/diaoyong/" target="_blank" class="keywords">调用</a><a href="/tag/fangfa/" target="_blank" class="keywords">方法</a>,空指针异常
<span style="color: #008000;">//<span style="color: #008000;"> System.out.println("isEmpty:" + s5.isEmpty());
<span style="color: #000000;">
}
}
<span style="color: #008000;">/*<span style="color: #008000;">
-
分析:
-
A:定义用户名和密码。已存在的。
-
C:比较用户名和密码。
-
如果都相同,则登录成功
-
如果有一个不同,则登录失败
-
D:给三次机会,用循环改进,最好用for循环。
<span style="color: #008000;">*/
<span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> StringTest2 {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
<span style="color: #008000;">//<span style="color: #008000;"> 定义用户名和密码。已存在的。
String username = "admin"<span style="color: #000000;">;
String password = "admin"<span style="color: #000000;">;</span><span style="color: #008000;">//</span><span style="color: #008000;"> 给三次机会,用循环改进,最好用for循环。</span> <span style="color: #0000ff;">for</span> (<span style="color: #0000ff;">int</span> x = 0; x < 3; x++<span style="color: #000000;">) { </span><span style="color: #008000;">//</span><span style="color: #008000;"> x=0,2 </span><span style="color: #008000;">//</span><span style="color: #008000;"> <a href="/tag/jianpan/" target="_blank" class="keywords">键盘</a>录入<a href="/tag/yonghuming/" target="_blank" class="keywords">用户名</a>和密码。</span> Scanner sc = <span style="color: #0000ff;">new</span><span style="color: #000000;"> Scanner(System.in); System.out.println(</span>"请输入<a href="/tag/yonghuming/" target="_blank" class="keywords">用户名</a>:"<span style="color: #000000;">); String name </span>=<span style="color: #000000;"> sc.nextLine(); System.out.println(</span>"请输入密码:"<span style="color: #000000;">); String pwd </span>=<span style="color: #000000;"> sc.nextLine(); </span><span style="color: #008000;">//</span><span style="color: #008000;"> 比较<a href="/tag/yonghuming/" target="_blank" class="keywords">用户名</a>和密码。</span> <span style="color: #0000ff;">if</span> (name.equals(username) &&<span style="color: #000000;"> pwd.equals(password)) { </span><span style="color: #008000;">//</span><span style="color: #008000;"> 如果都相同,则<a href="/tag/denglu/" target="_blank" class="keywords">登录</a>成功</span> System.out.println("<a href="/tag/denglu/" target="_blank" class="keywords">登录</a>成功,开始玩游戏"<span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;"><a href="/tag/caishuziyouxi/" target="_blank" class="keywords">猜数字游戏</a></span>
<span style="color: #000000;"> GuessNumberGame.start();
<span style="color: #0000ff;">break<span style="color: #000000;">;
} <span style="color: #0000ff;">else<span style="color: #000000;"> {
<span style="color: #008000;">//<span style="color: #008000;"> 如果有一个不同,则登录失败
<span style="color: #008000;">//<span style="color: #008000;"> 2,0
<span style="color: #008000;">//<span style="color: #008000;"> 如果是第0次,应该换一种提示
<span style="color: #0000ff;">if ((2 - x) == 0<span style="color: #000000;">) {
System.out.println("帐号被锁定,请与班长联系"<span style="color: #000000;">);
} <span style="color: #0000ff;">else<span style="color: #000000;"> {
System.out.println("登录失败,你还有" + (2 - x) + "次机会"<span style="color: #000000;">);
}
}
}
}
}
<span style="color: #008000;">/*<span style="color: #008000;">
-
这时猜数字小游戏的代码
<span style="color: #008000;">*/
<span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> GuessNumberGame {
<span style="color: #0000ff;">private<span style="color: #000000;"> GuessNumberGame() {
}<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> start() {
<span style="color: #008000;">//<span style="color: #008000;"> 产生一个随机数
<span style="color: #0000ff;">int number = (<span style="color: #0000ff;">int) (Math.random() * 100) + 1<span style="color: #000000;">;</span><span style="color: #0000ff;">while</span> (<span style="color: #0000ff;">true</span><span style="color: #000000;">) { </span><span style="color: #008000;">//</span><span style="color: #008000;"> <a href="/tag/jianpan/" target="_blank" class="keywords">键盘</a>录入数据</span> Scanner sc = <span style="color: #0000ff;">new</span><span style="color: #000000;"> Scanner(System.in); System.out.println(</span>"请输入你要猜的数据(1-100):"<span style="color: #000000;">); </span><span style="color: #0000ff;">int</span> guessNumber =<span style="color: #000000;"> sc.nextInt(); </span><span style="color: #008000;">//</span><span style="color: #008000;"> 判断</span> <span style="color: #0000ff;">if</span> (guessNumber ><span style="color: #000000;"> number) { System.out.println(</span>"你猜的数据" + guessNumber + "大了"<span style="color: #000000;">); } </span><span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> (guessNumber <<span style="color: #000000;"> number) { System.out.println(</span>"你猜的数据" + guessNumber + "小了"<span style="color: #000000;">); } </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> { System.out.println(</span>"恭喜你,猜中了"<span style="color: #000000;">); </span><span style="color: #0000ff;">break</span><span style="color: #000000;">; } }
}
}
-
int length():获取字符串的长度。
-
char charAt(int index):获取指定索引位置的字符
-
int indexOf(<span style="color: #ff0000;">int ch):返回指定字符在此字符串中第一次出现处的索引。
-
<span style="color: #ff0000;">为什么这里是int类型,而不是char类型?
-
原因是:'a'和97其实都可以代表'a'。如果里面写char,就不能写数字97了
-
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):从指定位置开始到指定位置结束截取字符串。
<span style="color: #008000;">*/
<span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> StringDemo {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
<span style="color: #008000;">//<span style="color: #008000;"> 定义一个字符串对象
String s = "helloworld"<span style="color: #000000;">;</span><span style="color: #008000;">//</span><span style="color: #008000;"> int length():<a href="/tag/huoqu/" target="_blank" class="keywords">获取</a>字符串的长度。</span> System.out.println("s.length:" + s.length());<span style="color: #008000;">//</span><span style="color: #008000;">10</span> System.out.println("----------------------"<span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;"> char charAt(int index):<a href="/tag/huoqu/" target="_blank" class="keywords">获取</a>指定索引位置的字符</span> System.out.println("charAt:" + s.charAt(7));<span style="color: #008000;">//
System.out.println("----------------------"<span style="color: #000000;">);
</span><span style="color: #008000;">//</span><span style="color: #008000;"> int indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引。</span> System.out.println("indexOf:" + s.indexOf('l'<span style="color: #000000;">)); System.out.println(</span>"----------------------"<span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;"> int indexOf(String str):返回指定字符串在此字符串中第一次出现处的索引。</span> System.out.println("indexOf:" + s.indexOf("owo"<span style="color: #000000;">)); System.out.println(</span>"----------------------"<span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;"> int indexOf(int ch,int fromIndex):返回指定字符在此字符串中从指定位置后第一次出现处的索引。</span> System.out.println("indexOf:" + s.indexOf('l',4<span style="color: #000000;">)); System.out.println(</span>"indexOf:" + s.indexOf('k',4)); <span style="color: #008000;">//</span><span style="color: #008000;"> -1</span> System.out.println("indexOf:" + s.indexOf('l',40)); <span style="color: #008000;">//</span><span style="color: #008000;"> -1</span> System.out.println("----------------------"<span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;"> 自己练习:int indexOf(String str,int </span><span style="color: #008000;">//</span><span style="color: #008000;"> fromIndex):返回指定字符串在此字符串中从指定位置后第一次出现处的索引。 </span><span style="color: #ff0000;">// String substring(int start):从指定位置开始<a href="/tag/jiequ/" target="_blank" class="keywords">截取</a>字符串,默认到末尾。包含start这个索引</span> System.out.println("substring:" + s.substring(5<span style="color: #000000;">)); System.out.println(</span>"substring:" + s.substring(0<span style="color: #000000;">)); System.out.println(</span>"----------------------"<span style="color: #000000;">); </span><span style="color: #ff0000;">// String substring(int start,intend):从指定位置开始到指定位置结束<a href="/tag/jiequ/" target="_blank" class="keywords">截取</a>字符串。 //<a href="/tag/baokuo/" target="_blank" class="keywords">包括</a>start索引但是不包end索引</span> System.out.println("substring:" + s.substring(3,8<span style="color: #000000;">)); System.out.println(</span>"substring:" + s.substring(0<span style="color: #000000;">,s.length()));
}
}
字符串遍历:
- 需求:遍历获取字符串中的每一个字符
- 分析:
- A:如何能够拿到每一个字符呢?
- char charAt(int index)
- B:我怎么知道字符到底有多少个呢?
- int length()
<span style="color: #008000;">*/
<span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> StringTest {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
<span style="color: #008000;">//<span style="color: #008000;"> 定义字符串
String s = "helloworld"<span style="color: #000000;">;
<span style="color: #0000ff;">for (<span style="color: #0000ff;">int x = 0; x < s.length(); x++<span style="color: #000000;">) {
System.out.println(s.charAt(x));
}
}
}
统计大写字母,小写字母,数字在字符串中的个数
-
需求:统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数。(不考虑其他字符)
-
举例:
-
"Hello123World"
-
结果:
-
大写字符:2个
-
小写字符:8个
-
数字字符:3个
-
分析:
-
前提:字符串要存在
-
A:定义三个统计变量
-
bigCount=0
-
smallCount=0
-
numberCount=0
-
B:遍历字符串,得到每一个字符。
-
length()和charAt()结合
-
C:判断该字符到底是属于那种类型的
-
大:bigCount++
-
小:smallCount++
-
数字:numberCount++
-
这道题目的难点就是如何判断某个字符是大的,还是小的,还是数字的。
-
ASCII码表:
-
0 48
-
A 65
-
a 97
-
虽然,我们按照数字的这种比较是可以的,但是想多了,有比这还简单的
-
char ch = s.charAt(x);
-
if(ch>='0' && ch<='9') numberCount++
-
if(ch>='a' && ch<='z') smallCount++
-
if(ch>='A' && ch<='Z') bigCount++
-
D:输出结果。
-
练习:把给定字符串的方式,改进为键盘录入字符串的方式。
<span style="color: #008000;">*/
<span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> StringTest2 {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
<span style="color: #008000;">//<span style="color: #008000;">定义一个字符串
String s = "Hello123World"<span style="color: #000000;">;</span><span style="color: #008000;">//</span><span style="color: #008000;">定义三个<a href="/tag/tongji/" target="_blank" class="keywords">统计</a>变量</span> <span style="color: #0000ff;">int</span> bigCount = 0<span style="color: #000000;">; </span><span style="color: #0000ff;">int</span> smallCount = 0<span style="color: #000000;">; </span><span style="color: #0000ff;">int</span> numberCount = 0<span style="color: #000000;">; </span><span style="color: #008000;">//</span><span style="color: #008000;">遍历字符串,得到每一个字符。</span> <span style="color: #0000ff;">for</span>(<span style="color: #0000ff;">int</span> x=0; x<s.length(); x++<span style="color: #000000;">){ </span><span style="color: #0000ff;">char</span> ch =<span style="color: #000000;"> s.charAt(x); </span><span style="color: #008000;">//</span><span style="color: #008000;">判断该字符到底是属于那种类型的,char类型会转成int类型</span> <span style="color: #0000ff;">if</span>(ch>='a' && ch<='z'<span style="color: #000000;">){ smallCount</span>++<span style="color: #000000;">; }</span><span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span>(ch>='A' && ch<='Z'<span style="color: #000000;">){ bigCount</span>++<span style="color: #000000;">; }</span><span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span>(ch>='0' && ch<='9'<span style="color: #000000;">){ numberCount</span>++<span style="color: #000000;">; } } </span><span style="color: #008000;">//</span><span style="color: #008000;"><a href="/tag/shuchu/" target="_blank" class="keywords">输出</a>结果。</span> System.out.println("大写字母"+bigCount+"个"<span style="color: #000000;">); System.out.println(</span>"小写字母"+smallCount+"个"<span style="color: #000000;">); System.out.println(</span>"数字"+numberCount+"个"<span style="color: #000000;">);
}
}
String的转换功能:
-
String的转换功能:
-
byte[] getBytes():把字符串转换为字节数组。
-
char[] tocharArray():把字符串转换为字符数组。
-
static String valueOf(char[] chs):把字符数组转成字符串。
-
static String valueOf(int i):把int类型的数据转成字符串。
-
<span style="color: #ff0000;"> 注意:String类的valueOf方法可以把任意类型的数据转成字符串。
-
String toLowerCase():把字符串转成小写。
-
String toUpperCase():把字符串转成大写。
-
String concat(String str):把字符串拼接。
<span style="color: #008000;">*/
<span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> StringDemo {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
<span style="color: #008000;">//<span style="color: #008000;"> 定义一个字符串对象
String s = "JavaSE"<span style="color: #000000;">;</span><span style="color: #008000;">//</span><span style="color: #008000;"> byte[] getBytes():把字符串转换为字节数组。</span> <span style="color: #0000ff;">byte</span>[] bys =<span style="color: #000000;"> s.getBytes(); </span><span style="color: #0000ff;">for</span> (<span style="color: #0000ff;">int</span> x = 0; x < bys.length; x++<span style="color: #000000;">) { System.out.println(bys[x]); } System.out.println(</span>"----------------"<span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;"> char[] <a href="/tag/toch/" target="_blank" class="keywords">toch</a>arArray():把字符串转换为字符数组。</span> <span style="color: #0000ff;">char</span>[] chs =<span style="color: #000000;"> s.<a href="/tag/toch/" target="_blank" class="keywords">toch</a>arArray(); </span><span style="color: #0000ff;">for</span> (<span style="color: #0000ff;">int</span> x = 0; x < chs.length; x++<span style="color: #000000;">) { System.out.println(chs[x]); } System.out.println(</span>"----------------"<span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;"> static String valueOf(char[] chs):把字符数组转成字符串。</span> String ss =<span style="color: #000000;"> String.valueOf(chs); System.out.println(ss); System.out.println(</span>"----------------"<span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;"> static String valueOf(int i):把int类型的数据转成字符串。</span> <span style="color: #0000ff;">int</span> i = 100<span style="color: #000000;">; String sss </span>=<span style="color: #000000;"> String.valueOf(i); System.out.println(sss); System.out.println(</span>"----------------"<span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;"> String toLowerCase():把字符串转成小写。</span> System.out.println("toLowerCase:" +<span style="color: #000000;"> s.toLowerCase()); System.out.println(</span>"s:" +<span style="color: #000000;"> s); </span><span style="color: #008000;">//</span><span style="color: #008000;"> System.out.println("----------------"); </span><span style="color: #008000;">//</span><span style="color: #008000;"> String toUpperCase():把字符串转成大写。</span> System.out.println("toUpperCase:" +<span style="color: #000000;"> s.toUpperCase()); System.out.println(</span>"----------------"<span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;"> String concat(String str):把字符串拼接。</span> String s1 = "hello"<span style="color: #000000;">; String s2 </span>= "world"<span style="color: #000000;">; String s3 </span>= s1 +<span style="color: #000000;"> s2; String s4 </span>=<span style="color: #000000;"> s1.concat(s2); System.out.println(</span>"s3:"+<span style="color: #000000;">s3); System.out.println(</span>"s4:"+<span style="color: #000000;">s4);
}
}
把一个字符串的首字母转成大写,其余为小写。(只考虑英文大小写字母字符)
-
需求:把一个字符串的首字母转成大写,其余为小写。(只考虑英文大小写字母字符)
-
举例:
-
helloWORLD
-
结果:
-
Helloworld
-
分析:
-
A:先获取第一个字符
-
B:获取除了第一个字符以外的字符
-
C:把A转成大写
-
D:把B转成小写
-
E:C拼接D
<span style="color: #008000;">*/
<span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> StringTest {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
<span style="color: #008000;">//<span style="color: #008000;"> 定义一个字符串
String s = "helloWORLD"<span style="color: #000000;">;</span><span style="color: #008000;">//</span><span style="color: #008000;"> 先<a href="/tag/huoqu/" target="_blank" class="keywords">获取</a>第一个字符</span> String s1 = s.substring(0,1<span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;"> <a href="/tag/huoqu/" target="_blank" class="keywords">获取</a>除了第一个字符以外的字符</span> String s2 = s.substring(1<span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;"> 把A转成大写</span> String s3 =<span style="color: #000000;"> s1.toUpperCase(); </span><span style="color: #008000;">//</span><span style="color: #008000;"> 把B转成小写</span> String s4 =<span style="color: #000000;"> s2.toLowerCase(); </span><span style="color: #008000;">//</span><span style="color: #008000;"> C拼接D</span> String s5 =<span style="color: #000000;"> s3.concat(s4); System.out.println(s5); </span><span style="color: #008000;">//</span><span style="color: #008000;"> 优化后的<a href="/tag/daima/" target="_blank" class="keywords">代码</a> </span><span style="color: #008000;">//</span><span style="color: #008000;"> 链式编程</span> String result = s.substring(0,1<span style="color: #000000;">).toUpperCase() .concat(s.substring(</span>1<span style="color: #000000;">).toLowerCase()); System.out.println(result);
}
}
String类的其他功能:
替换功能:
去除字符串两空格
按字典顺序比较两个字符串
-
String类的其他功能:
-
替换功能:
-
String replace(char old,char new)
-
String replace(String old,String new)
-
去除字符串两空格
-
String trim()
-
按字典顺序比较两个字符串
-
int compareTo(String str)
-
int compareToIgnoreCase(String str)
<span style="color: #008000;">*/
<span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> StringDemo {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
<span style="color: #008000;">//<span style="color: #008000;"> 替换功能
String s1 = "helloworld"<span style="color: #000000;">;
String s2 = s1.replace('l','k'<span style="color: #000000;">);
String s3 = s1.replace("owo","ak47"<span style="color: #000000;">);
System.out.println("s1:" +<span style="color: #000000;"> s1);
System.out.println("s2:" +<span style="color: #000000;"> s2);
System.out.println("s3:" +<span style="color: #000000;"> s3);
System.out.println("---------------"<span style="color: #000000;">);</span><span style="color: #008000;">//</span><span style="color: #008000;"> <a href="/tag/quchu/" target="_blank" class="keywords">去除</a>字符串两空格</span> String s4 = " hello world "<span style="color: #000000;">; String s5 </span>=<span style="color: #000000;"> s4.trim(); System.out.println(</span>"s4:" + s4 + "---"<span style="color: #000000;">); System.out.println(</span>"s5:" + s5 + "---"<span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;"> 按字典顺序比较两个字符串</span> String s6 = "hello"<span style="color: #000000;">; String s7 </span>= "hello"<span style="color: #000000;">; String s8 </span>= "abc"<span style="color: #000000;">; String s9 </span>= "xyz"<span style="color: #000000;">; System.out.println(s6.compareTo(s7));</span><span style="color: #008000;">//</span><span style="color: #008000;"> 0</span> System.out.println(s6.compareTo(s8));<span style="color: #008000;">//</span><span style="color: #008000;"> 7</span> System.out.println(s6.compareTo(s9));<span style="color: #008000;">//</span><span style="color: #008000;"> -16</span>
<span style="color: #000000;"> }
}
compareTo源码解析
<span style="color: #0000ff;">int</span> len1 = value.length; <span style="color: #008000;">//</span><span style="color: #008000;">this.value.length--s1.<a href="/tag/toch/" target="_blank" class="keywords">toch</a>arArray().length--5</span>
<span style="color: #0000ff;">int</span> len2 = anotherString.value.length;<span style="color: #008000;">//</span><span style="color: #008000;">s2.value.length -- s2.<a href="/tag/toch/" target="_blank" class="keywords">toch</a>arArray().length--3</span>
<span style="color: #0000ff;">int</span> lim = Math.min(len1,len2); <span style="color: #008000;">//</span><span style="color: #008000;">Math.min(5,3); -- lim=3;</span>
<span style="color: #0000ff;">char</span> v1[] = value; <span style="color: #008000;">//</span><span style="color: #008000;">s1.<a href="/tag/toch/" target="_blank" class="keywords">toch</a>arArray()</span>
<span style="color: #0000ff;">char</span> v2[] =<span style="color: #000000;"> anotherString.value;
</span><span style="color: #008000;">//</span><span style="color: #008000;">char v1[] = {'h','l','o'};
</span><span style="color: #008000;">//</span><span style="color: #008000;">char v2[] = {'h','l'};</span>
<span style="color: #0000ff;">int</span> k = 0<span style="color: #000000;">;
</span><span style="color: #0000ff;">while</span> (k <<span style="color: #000000;"> lim) {
</span><span style="color: #0000ff;">char</span> c1 = v1[k]; <span style="color: #008000;">//</span><span style="color: #008000;">c1='h','l'</span>
<span style="color: #0000ff;">char</span> c2 = v2[k]; <span style="color: #008000;">//</span><span style="color: #008000;">c2='h','l'</span>
<span style="color: #0000ff;">if</span> (c1 !=<span style="color: #000000;"> c2) {
</span><span style="color: #0000ff;">return</span> c1 -<span style="color: #000000;"> c2;
}
k</span>++<span style="color: #000000;">;
}
</span><span style="color: #ff0000;">return len1 - len2; //5-3=2;</span>
<span style="color: #000000;"> }
String s1
= "hello"<span style="color: #000000;">;String s2 = "hel"<span style="color: #000000;">;
System.out.println(s1.compareTo(s2)); <span style="color: #ff0000;">// 2
把数组中的数据按照指定个格式拼接成一个字符串
-
需求:把数组中的数据按照指定个格式拼接成一个字符串
-
举例:
-
int[] arr = {1,3};
-
输出结果:
-
"[1,3]"
-
分析:
-
A:定义一个字符串对象,只不过内容为空
-
B:先把字符串拼接一个"["
-
C:遍历int数组,得到每一个元素
-
D:先判断该元素是否为最后一个
-
是:就直接拼接元素和"]"
-
不是:就拼接元素和逗号以及空格
-
E:输出拼接后的字符串
-
把代码用功能实现。
<span style="color: #008000;">*/
<span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> StringTest2 {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
<span style="color: #008000;">//<span style="color: #008000;"> 前提是数组已经存在
<span style="color: #0000ff;">int[] arr = { 1,3<span style="color: #000000;"> };</span><span style="color: #008000;">//</span><span style="color: #008000;"> 写一个<a href="/tag/gongneng/" target="_blank" class="keywords">功能</a>,实现结果</span> String result =<span style="color: #000000;"> arrayToString(arr); System.out.println(</span>"最终结果是:" +<span style="color: #000000;"> result);
}
<span style="color: #008000;">/*<span style="color: #008000;">
-
两个明确: 返回值类型:String 参数列表:int[] arr
<span style="color: #008000;">*/
<span style="color: #0000ff;">public <span style="color: #0000ff;">static String arrayToString(<span style="color: #0000ff;">int<span style="color: #000000;">[] arr) {
<span style="color: #008000;">//<span style="color: #008000;"> 定义一个字符串
String s = ""<span style="color: #000000;">;<span style="color: #008000;">//<span style="color: #008000;"> 先把字符串拼接一个"["
s += "["<span style="color: #000000;">;<span style="color: #008000;">//<span style="color: #008000;"> 遍历int数组,得到每一个元素
<span style="color: #0000ff;">for (<span style="color: #0000ff;">int x = 0; x < arr.length; x++<span style="color: #000000;">) {
<span style="color: #008000;">//<span style="color: #008000;"> 先判断该元素是否为最后一个
<span style="color: #0000ff;">if (x == arr.length - 1<span style="color: #000000;">) {
<span style="color: #008000;">//<span style="color: #008000;"> 就直接拼接元素和"]"
s +=<span style="color: #000000;"> arr[x];
s += "]"<span style="color: #000000;">;
} <span style="color: #0000ff;">else<span style="color: #000000;"> {
<span style="color: #008000;">//<span style="color: #008000;"> 就拼接元素和逗号以及空格
s +=<span style="color: #000000;"> arr[x];
s += ","<span style="color: #000000;">;
}
}<span style="color: #0000ff;">return<span style="color: #000000;"> s;
}
}
-
字符串反转
<span style="color: #008000;">/*<span style="color: #008000;">
-
字符串反转
-
举例:键盘录入”abc”
-
输出结果:”cba”
-
分析:
-
A:键盘录入一个字符串
-
B:定义一个新字符串
-
C:倒着遍历字符串,得到每一个字符
-
a:length()和charAt()结合
-
b:把字符串转成字符数组
-
D:用新字符串把每一个字符拼接起来
-
E:输出新串
<span style="color: #008000;">*/
<span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> StringTest3 {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
<span style="color: #008000;">//<span style="color: #008000;"> 键盘录入一个字符串
Scanner sc = <span style="color: #0000ff;">new<span style="color: #000000;"> Scanner(System.in);
System.out.println("请输入一个字符串:"<span style="color: #000000;">);
String line =<span style="color: #000000;"> sc.nextLine();String s </span>=<span style="color: #000000;"> myReverse(line); System.out.println(</span>"实现<a href="/tag/gongneng/" target="_blank" class="keywords">功能</a>后的结果是:" +<span style="color: #000000;"> s);
}
<span style="color: #008000;">/*<span style="color: #008000;">
-
两个明确: 返回值类型:String 参数列表:String
<span style="color: #008000;">*/
<span style="color: #0000ff;">public <span style="color: #0000ff;">static<span style="color: #000000;"> String myReverse(String s) {
<span style="color: #008000;">//<span style="color: #008000;"> 定义一个新字符串
String result = ""<span style="color: #000000;">;<span style="color: #008000;">//<span style="color: #008000;"> 把字符串转成字符数组
<span style="color: #0000ff;">char[] chs =<span style="color: #000000;"> s.tocharArray();<span style="color: #008000;">//<span style="color: #008000;"> 倒着遍历字符串,得到每一个字符
<span style="color: #0000ff;">for (<span style="color: #0000ff;">int x = chs.length - 1; x >= 0; x--<span style="color: #000000;">) {
<span style="color: #008000;">//<span style="color: #008000;"> 用新字符串把每一个字符拼接起来
result +=<span style="color: #000000;"> chs[x];
}
<span style="color: #0000ff;">return<span style="color: #000000;"> result;
}
}
-
-
举例:
-
在字符串"woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun"
-
结果:
-
java出现了5次
-
分析:
-
前提:是已经知道了大串和小串。
-
A:定义一个统计变量,初始化值是0
-
B:先在大串中查找一次小串第一次出现的位置
-
a:索引是-1,说明不存在了,就返回统计变量
-
b:索引不是-1,说明存在,统计变量++
-
<span style="color: #ff0000;"> C:把刚才的索引+小串的长度作为开始位置截取上一次的大串,返回一个新的字符串,并把该字符串的值重新赋值给大串
-
D:回到B
<span style="color: #008000;">*/
<span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> StringTest5 {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
<span style="color: #008000;">//<span style="color: #008000;"> 定义大串
String maxString = "woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun"<span style="color: #000000;">;
<span style="color: #008000;">//<span style="color: #008000;"> 定义小串
String minString = "java"<span style="color: #000000;">;</span><span style="color: #008000;">//</span><span style="color: #008000;"> 写<a href="/tag/gongneng/" target="_blank" class="keywords">功能</a>实现</span> <span style="color: #0000ff;">int</span> count =<span style="color: #000000;"> getCount(maxString,minString); System.out.println(</span>"Java在大串中出现了:" + count + "次"<span style="color: #000000;">);
}
<span style="color: #008000;">/*<span style="color: #008000;">
-
两个明确: 返回值类型:int 参数列表:两个字符串
<span style="color: #008000;">*/
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">int<span style="color: #000000;"> getCount(String maxString,String minString) {
<span style="color: #008000;">//<span style="color: #008000;"> 定义一个统计变量,初始化值是0
<span style="color: #0000ff;">int count = 0<span style="color: #000000;">;
<span style="color: #0000ff;">int<span style="color: #000000;"> index;
<span style="color: #008000;">//<span style="color: #008000;">先查,赋值,判断
<span style="color: #0000ff;">while((index=maxString.indexOf(minString))!=-1<span style="color: #000000;">){
count++<span style="color: #000000;">;
<span style="color: #ff0000;">maxString <span style="color: #ff0000;">= maxString.substring(index +<span style="color: #000000;"><span style="color: #ff0000;"> minString.length());
}<span style="color: #0000ff;">return<span style="color: #000000;"> count;
}
}
-