(22)Java学习笔记——常用对象API / String类

来源:互联网 发布:手机淘宝产品链接 编辑:程序博客网 时间:2024/04/30 01:54

String 类

字符串:就是由多个字符组成的一串数据。也可以堪称是一个字符数组。

字符串的特点:

字符串字面值“abc”也可以看成是一个字符串对象。

字符串是常量,一旦赋值不能被改变。


构造方法:

public  String()    //空构造

public  String(byte[ ] bytes)    //把字节数组转成字符串

public  String(byte[ ] bytes,int  offset , int  length)    //把字节数组的一部分转成字符串

public  String(char[ ] value)   //把字符数组转成字符串

public  String(char[ ] value, int  offset , int  length)   //把字符数组的一部分转成字符串

public  String(String  original)  //把字符串常量值转成字符串


字符串的方法:

public int length()   //返回字符串长度

范例:

package cn.itcast_01;/* *  */public class StringDemo {public static void main(String[] args) {// public String(): 空构造String s1 = new String();System.out.println("s1:"+s1);//结果:nullSystem.out.println("s1.length:"+s1.length());//返回值 0 System.out.println("-----------------------------");//public String(byte[] bytes) : 把字节数组转成字符串byte[] bys = {97,98,99,100,101};String s2 = new String(bys);System.out.println("s2:"+s2);//结果:abcdeSystem.out.println("s2.length:"+s2.length());//结果5System.out.println("-----------------------------");//public String (byte[] bytes,int index, int length) : 把字节数组的一部分转成字符串//需要得到字符串bcdbyte[] bys2 = {97,98,99,100,101};String s3 = new String(bys2,1,3);System.out.println("s3:"+s3);//结果bcdSystem.out.println("s3.length:"+s3.length());//结果:3System.out.println("-----------------------------");//public String(char[] value) :把字符数组转成字符串char[] chs = {'a','b','c','d','e','爱','吃','肉'};String s4 = new String(chs);System.out.println("s4:"+s4);//结果:abcde爱吃肉System.out.println("s4.length:"+s4.length());//结果:8System.out.println("-------------------------------");//public String(char[] value,int index , int length) :把字符数组的一部分转成字符串char[] chs2 = {'a','b','c','d','e','爱','吃','肉'};String s5 = new String(chs2,3,4);System.out.println("s5:"+s5);//结果:de爱吃System.out.println("s5.length:"+s5.length());//结果:4System.out.println("-------------------------------");//public String(String original) :把字符串常量值转成字符串String s6 = new String("abcde");System.out.println("s6:"+s6);//结果:abcdeSystem.out.println("s6.length:"+s6.length());//结果:5//上面这段等价于:String s7 = "abcde";System.out.println("s7:"+s7);//结果:abcdeSystem.out.println("s7.length:"+s7.length());//结果:5}}


String 类的特点:

字符串是常量,他的值在创建后不能更改。(注意:指的是值不能变,不是引用不能变
范例:

package cn.itcast_02;/* * 字符串的特点:一旦赋值就不能被改变 * */public class StringDemo {public static void main(String[] args) {String s = "Hello";s +="World";//字符串的拼接System.out.println("s:"+s);//结果:HelloWorld}}


String类的判断功能:

boolean  equals (Object  obj)    :比较字符串的内容是否相同,区分大小写

boolean  equalsIgnoreCase (String str)   :比较字符串的内容是否相同,忽略大小写

boolean  contains (String str)   :判断大字符串中是否包含小字符串

boolean startsWish (String str)   :判断字符串是否以某个指定的字符串开头

boolean endsWish (String str)  :判断字符串是否以某个指定的字符串结尾

boolean isEmpty()   : 判断字符串是否为空

范例:

package cn.itcast_02;public class StringDemo2 {public static void main(String[] args) {// 创建字符串对象String s1 = "helloworld";String s2 = "helloworld";String s3 = "Helloworld";//boolean equals(Object obj):比较字符串的内容是否相同,区分大小写System.out.println("equals:"+s1.equals(s2));//equals:trueSystem.out.println("equals:"+s1.equals(s3));//equals:falseSystem.out.println("----------------------"); //boolean equalsIgnoreCase(String str) : 比较字符串的内容是否相同,忽略大小写System.out.println("equalsIgnoreCase:"+s1.equalsIgnoreCase(s2));System.out.println("equalsIgnoreCase:"+s1.equalsIgnoreCase(s3));System.out.println("----------------------");//boolean contains(String str) :判断大字符串是否包含小字符串System.out.println("contains:"+s1.contains("hello"));//contains:trueSystem.out.println("contains:"+s1.contains("hw"));//contains:false//System.out.println("contains:"+s1.contains("h","w"));//报错,只能比较单个字符串元素System.out.println("----------------------");//boolean startWith(String str)  判断是否以制定字符串开头System.out.println("startWith:"+s1.startsWith("h"));//startWith:trueSystem.out.println("startWith:"+s1.startsWith("hello"));//startWith:trueSystem.out.println("----------------------");//boolean endWith(String str)  判断是否一指定字符结尾System.out.println("endWith:"+s1.endsWith("world"));//endWith:trueSystem.out.println("endWith:"+s1.endsWith("d"));//endWith:trueSystem.out.println("----------------------");//boolean isEmpty() 判断字符串是否为空System.out.println("isEmpty:"+s1.isEmpty());//isEmpty:falseString s4 = "";String s5 = null;System.out.println("isEmpty:"+s4.isEmpty());//isEmpty:trueSystem.out.println("isEmpty:"+s5.isEmpty());//报错!对象不存在,不能调用方法!!!}}

练习01:模拟登陆账号

package cn.itcast_03;import java.util.Scanner;/* * 练习:模拟登陆,给三次机会,并提示还有几次 *  * 分析: * A 定义用户名和密码,已存在的 * B 键盘录入用户名和密码 * C 比较用户名和密码 * 如果相同,则登陆成功 * 如果有一个不同,则登陆失败 * D 给三次机会,用循环改进,最好用for循环。 */public class StringTest {public static void main(String[] args) {//定义用户名和密码。已存在的String account = "admin";String password = "admin";//给三次机会,用循环改进,for循环for (int x=0;x<3;x++) {//x=0,1,2//键盘输入用户名和密码Scanner sc = new Scanner(System.in);System.out.println("输入用户名:");String name = sc.nextLine();System.out.println("输入密码:");String pwd = sc.nextLine();//比较用户名和密码if (name.equals(account) && pwd.equals(password)){System.out.println("登陆成功");break;}else{//()内需要2,1,0//如果是第0次,应该还一种提示if((2-x)==0){System.out.println("账号被锁定");}else{System.out.println("登陆失败,你还有"+(2-x)+"次机会");}}}}}

练习02:输入账号增强版,加入玩猜数字小游戏

class1:猜数字的类

package cn.itcast_03;import java.util.Scanner;/* * 猜数字游戏的类 */public class GuessNumberGame {private GuessNumberGame(){}public static void start(){//产生一个随机数int number = (int)(Math.random()*100)+1;while(true){//键盘录入数据Scanner sc =new Scanner(System.in);System.out.println("输入你要猜的数字(1-100):");int guessNumber = sc.nextInt();//判断if(guessNumber>number){System.out.println("你猜的数据"+guessNumber+"大了");}else if (guessNumber<number){System.out.println("你猜的数据"+guessNumber+"小了");}else{System.out.println("恭喜你猜中了");break;}}}}
package cn.itcast_03;import java.util.Scanner;/* * 练习:模拟登陆,给三次机会,并提示还有几次.如果登陆成功就可以玩猜数字小游戏 *  * 分析: * A 定义用户名和密码,已存在的 * B 键盘录入用户名和密码 * C 比较用户名和密码 * 如果相同,则登陆成功 * 如果有一个不同,则登陆失败 * D 给三次机会,用循环改进,最好用for循环。 */public class StringTest2 {public static void main(String[] args) {//定义用户名和密码。已存在的String account = "admin";String password = "admin";//给三次机会,用循环改进,for循环for (int x=0;x<3;x++) {//x=0,1,2//键盘输入用户名和密码Scanner sc = new Scanner(System.in);System.out.println("输入用户名:");String name = sc.nextLine();System.out.println("输入密码:");String pwd = sc.nextLine();//比较用户名和密码if (name.equals(account) && pwd.equals(password)){System.out.println("登陆成功,开始玩猜数字游戏");//玩猜数字游戏GuessNumberGame.start();break;}else{//()内需要2,1,0//如果是第0次,应该还一种提示if((2-x)==0){System.out.println("账号被锁定");}else{System.out.println("登陆失败,你还有"+(2-x)+"次机会");}}}}}


String 类获取的功能

int length()    //获取字符串长度

char charAt(int index)    // 获取指定索引位置的字符

int indexOf(int ch)    // 返回指定字符在此字符串中第一次出现处的索引  //int类型的原因是‘a'和97都代表’a' 都可以使用

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)   //从指定位置开始到指定位置结束截取字符串

范例:

package cn.itcast_04;public class StringDemo {public static void main(String[] args) {//定义一个字符串对象String s = "helloworld";//int length() :获取字符串长度System.out.println("s.length:"+s.length());System.out.println("---------------------");//int indexOf(int ch) :返回指定字符在此字符串中第一次出现处的索引System.out.println("s.index:"+s.indexOf('o'));System.out.println("---------------------");//int indexOf(String str) : 返回指定字符串在此字符串中第一次出现处的索引System.out.println("s.indexOf:"+s.indexOf("wor"));System.out.println("-----------------------");//int indexOf(int ch,int fromIndex) 返回指定字符在此字符串中从制定位置后第一次出现处的索引System.out.println("s.indexOf:"+s.indexOf('l', 4));System.out.println("-----------------------");//int indexOf(String str,int fromIndex) :返回指定字符串在此字符串中从指定位置后第一次出现处的索引。System.out.println("s.indexOf:"+s.indexOf("rl", 4));System.out.println("-----------------------");//String substring(int start) :从指定位置开始截取字符串,默认到末尾System.out.println("s.substring:"+s.substring(4));System.out.println("-----------------------");//String substring(int start,int end) :从指定位置开始到指定位置结束截取字符串System.out.println("s.substring:"+s.substring(3,7));System.out.println("s.substring:"+s.substring(3,s.length()));}}
练习01:遍历获取字符串中的每一个字符

方法1:使用String substring(int start,int end)方法

package cn.itcast_04;/* * 遍历获取字符串中的每一个字符 * 思路: * 获取每一个字符,用String substring(int start,int end)方法 * start和end要随着循环而递增 * 使用String length可只循环数,用for */public class StringTest_01 {public static void main(String[] args) {String s = "helloworld";System.out.print("[");//用for循环遍历字符串for(int x=0;x<s.length();x++){if (x==(s.length()-1)){System.out.println(s.substring(s.length()-1,s.length())+"]");}else{System.out.print(s.substring(x,x+1)+",");}}}}//返回:[h,e,l,l,o,w,o,r,l,d]

方法2:使用String charAt()方法

package cn.itcast_04;/* * 方法2,使用String charAt()方法 */public class StringTest_03 {public static void main(String[] args) {String s = "helloworld";for (int x=0;x<s.length();x++){System.out.print(s.charAt(x)+",");}}}//返回h,e,l,l,o,w,o,r,l,d,


练习02:统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数。(不考虑其他字符)

举例:“Hello123World"

package cn.itcast_04;/* * 统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数。(不考虑其他字符) * 举例:"Hello123World" *  * 思路: * A:定义三个统计变量 * bigCount = 0 * smallCount = 0 * numberCount = 0 *  * B:遍历字符串,得到每一个字符  length()  和 charAt() 结合使用 * C:判断该字符到底属于哪种类型的。 * 大:bigCount++ * 小:smallCount++ * 数字:numberCount++ *  * 这道题目的难点是如何判断某个字符是大写,还是小写,还是数字 * 方法1:ASCII码表: * 0——48 * A——65 * a——97 * 方法2:使用>=运算符和<=运算符,自动转换int * char ch = s.charAt(); * if(ch>='0' && ch<='9')  numberCount++ * if(ch>='a' && ch<='z')  smallCount++ * if(ch>='A' && ch<='Z')  bigCount++ *  */public class StringTest_04 {public static void main(String[] args) {String s = "Hello123World";int bigCount = 0;int smallCount = 0;int numberCount = 0;for (int x = 0; x < s.length(); x++) {char ch = s.charAt(x);if (ch >= '0' && ch <= '9') {numberCount++;} else if (ch >= 'a' && ch <= 'z') {smallCount++;} else {bigCount++;}}System.out.println("大写字母有:"+bigCount+"个");System.out.println("小写字母有:"+smallCount+"个");System.out.println("数字有:"+numberCount+"个");}}/*结果:大写字母有:2个小写字母有:8个数字有:3个*/

练习03:统计一个键盘输入的字符串中大写字母字符,小写字母字符,数字字符出现的次数。
package cn.itcast_04;import java.util.Scanner;/* * 统计一个键盘录入的字符串。中大写字母字符,小写字母字符,数字字符出现的次数。 * 思路: * A:定义三个统计变量 * bigCount = 0 * smallCount = 0 * numberCount = 0 *  * B:遍历字符串,得到每一个字符  length()  和 charAt() 结合使用 * C:判断该字符到底属于哪种类型的。 * 大:bigCount++ * 小:smallCount++ * 数字:numberCount++ *  * 这道题目的难点是如何判断某个字符是大写,还是小写,还是数字 * 方法1:ASCII码表: * 0——48 * A——65 * a——97 * 方法2:使用>=运算符和<=运算符,自动转换int * char ch = s.charAt(); * if(ch>='0' && ch<='9')  numberCount++ * if(ch>='a' && ch<='z')  smallCount++ * if(ch>='A' && ch<='Z')  bigCount++ *  */public class StringTest_05 {public static void main(String[] args) {Scanner s = new Scanner(System.in);System.out.println("请输入字符串:");String st = s.nextLine();int numberCount = 0;int smallCount = 0;int bigCount =0;for(int x=0;x<st.length();x++){char ch = st.charAt(x);if(ch>='0'&&ch<='9'){numberCount++;}else if (ch>='a'&&ch<='z'){smallCount++;}else if(ch>='A'&&ch<='Z'){bigCount++;}}System.out.println("大写字母有:"+bigCount+"个");System.out.println("小写字母有:"+smallCount+"个");System.out.println("数字有:"+numberCount+"个");}}

String类的转换功能

byte[ ] getBytes()   //把字符串转换成字节数组

char[ ] toCharArray()   // 把字符串转换成字符数组

static String valueOf(char[ ] chs)   //把字符数组转成字符串(通过静态方法)

static String valueOf(int i)   // 把int类型的数据转成字符串

注意:String类的valueOf()方法可以把任意类型的数据转成字符串

String toLowerCase()  //把字符串转成小写

String toUpperCase()   //把字符串转成大写

String concat(String str)   //把字符串拼接

范例:

package cn.itcast_05;public class StringDemo {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)   //把字符数组转成字符串(通过静态方法)char[] ch={'J','a','v','a','S','E'};String ss =  String.valueOf(ch);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()  //把字符串转成小写String ssss=s.toLowerCase();System.out.println(ssss);System.out.println("-----------------------------");//String toUpperCase()   //把字符串转成大写String s5=s.toUpperCase();System.out.println(s5);System.out.println("-----------------------------");//String concat(String str)   //把字符串拼接String s1 = "hello";String s2="world";String s3=s1.concat(s2);//等价于:String s3 = s1+s2;System.out.println(s3);}}

练习01:把一个字符串的首字母转成大写,其它转成小写

package cn.itcast_05;/* * 需求:把一个字符串的首字母转成大写,其余为小写。(只考虑英文大小写字幕字符) * 举例:helloWORLD * 结果:Helloworld * 思路: * A/先获取第一个字符 * B/获取除第一个字符外的字符 * C/把A转成大写 * D/把B转成小写 * E/拼接C和D */public class StringTest_01 {public static void main(String[] args) {String s="helloWORLD";char chA=s.charAt(0);//获取首字母String chB=s.substring(1);//获取1号角标开始的字符串String A=String.valueOf(chA);//将char类型的首字母转换成String类型String A1=A.toUpperCase();//将首字母转换成大写String B=chB.toLowerCase();//将1号角标后的字符串转换成小写String AB=A1+B;//拼接System.out.println(AB);}
}

String 类的其它功能

替换功能:

String replace(char old,char new) //替换字符

String replace(String lod,String new) //替换字符串

去除字符串两端空格:

String trim()

按字典顺序比较两个字符串:

int compareTo(String str) //区分大小写

int compareToIgotrCase(String str) //不区分大小写

范例:

package cn.itcast_06;/* * String类的其他功能 */public class StringDemo {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+"---");System.out.println("------------------------");//按字典顺序比较两个字符串大小String s6="hello";String s7="hello";String s8="abc";String s9="xyz";System.out.println(s6.compareTo(s7));System.out.println(s6.compareTo(s8));System.out.println(s6.compareTo(s9));}}


String类练习

练习01:把数组中的数据按照指定格式拼接成一个字符串

举例  int[ ] arr = {1,2,3}     结果:[1,2,3]

package cn.itcast_07;/* * 把数组中的数据按照指定格式拼接成一个字符串 * 举例:int[] arr ={1,2,3}输出结果:[1,2,3]   * 思路: * 结果[1,2,3] 实际上是"[1,2,3]" 的字符串 * A/ 定义一个字符串对象,内容为空 * B/ 先吧字符串拼接一个"[" * C/ 遍历int数组,得到每一个元素 * D/ 先判断该元素是否为最后一个 * 是:就直接拼接元素和"]" * 不是:就拼接元素和逗号以及空格 * E/ 输出拼接后的字符串 */public class StringTest_01 {public static void main(String[] args) {int[]arr={1,2,3};//定义一个字符串对象,内容为空String s = "";//先拼接一个"["s+="[";//for遍历数组,等到每一个元素for(int x=0;x<arr.length;x++){//判断该元素是否为最后一个if(x==arr.length-1){s +=arr[x];s +="]";}else{s += arr[x];s += ", ";}}System.out.println("最终的字符串:"+s);}}

练习02:字符串反转

举例:键盘录入“abc"       输出结果”cba“

package cn.itcast_07;import java.util.Scanner;/* * 键盘录入"abc"   输出"cba" * 思路: * A/ 键盘录入一个字符串 * B/ 定义一个新字符串 * C/ 倒着遍历字符串,得到每一个字符 * 遍历字符串两种方式: * a/length() 和charAt()结合 * b/把字符串转成字符数组 *  * D/ 把每一个字符拼接 * E/ 输出 */public class StringTest_02 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("输入一个字符串:");String line = sc.nextLine();String result = "";//定义一个新字符串// 把字符串转成字符数组char[] chs = line.toCharArray();for(int x=chs.length-1;x>=0;x--){//倒着遍历字符串,得到每一个字符result +=chs[x];//把每一个字符拼接}System.out.println(result);}}

练习03:统计大串中小串出现的次数

举例:在字符串”wetoghoujavaougljglewfjjavahopueejgjavaphpouopuoohjljljwejavaoseeeesejavaoueououe"

结果:java出现了5次

package cn.itcast_07;/* * 在字符串”wetoghoujavaougljglewfjjavahopueejgjavaphpouopuoohjljljwejavaoseeeesejavaoueououe"结果:java出现了5次思路:A/ 定义一个统计变量,初始化为0B/ 先获取一次java在这个大串中第一次出现的索引。如果返回-1,说明不存在,返回统计变量。如果索引值不是-1,说明存在,统计变量+1C/ 把刚辞的索引+小串的长度作为起始位置截取原始大串,得到一个新的字符串,并把该字符串重新赋值给大串D/ 回到B即可 */public class StringTest_03 {public static void main(String[] args) {//定义大串String maxString ="wetoghoujavaougljglewfjjavahopueejgjavaphpouopuoohjljljwejavaoseeeesejavaoueououe";String minString = "java";int count = getCount(maxString,minString);System.out.println("出现的次数:"+count);}//写功能实现/* * 两个明确: * 1.返回值类型  int * 2 参数列表:两个字符串(大小串) */public static int getCount(String maxString,String minString){int count = 0;//先在大串中查找一次小串第一次出现的位置int index=maxString.indexOf(minString);while(index!=-1){count++;//把刚才的索引+小串的长度作为开始位置截取上一次的大串,返回一个新的字符串,并把该字符串的值重新赋值个大串int startIndex = index + minString.length();maxString = maxString.substring(startIndex);//继续查index = maxString.indexOf(minString);}return count;}}//返回结果:出现的次数:5








                                             
0 0
原创粉丝点击