-
了解String类:
1.String类是处于lang包,无需导包
2.String类父类是Object,同时String也是一个常量类,不能被继承
3.String它是一种引用类型(所有的类都是引用类型,而且类的首字母都是大写的)
4.String可以用来定义字符串,其本质就是一个字符数组
5.String一旦定义长度不可更改,一旦更改,字符串存储的内存地址就会发生改变。
String str = "章"; str+="游";--"章游"(这里会出现2个不同的内存地址)6.String定义字符串的,那么定义方式有哪些?
①直接定义 String str = "xxx";String name1 = "阳文广芜湖1111111111111111111";
②可以通过String类的构造函数来定义字符串String name2 = new String("阳文广");
-
String类常用方法
1.获取字符串的长度 length()
System.out.println(name1.length());
2.字符串和字符串数组互相转换方法
字符数组转换字符串: ①字符串转字符数组 方法一:String str = new String(char[] chs);//通过构造方法转换 例子:char[]chs = {'我','爱','你',}; String str = new String(chs); syso(str); //结果为:我爱你 方法二:String.valueOf(char chs);//调用方法转换 例子:将int转成String System.out.println(String.valueOf(123)); String str = "123"; System.out.println(Integer.valueOf("123")); // Integer.parseInt(); //结果为:123 123 ②字符数组转字符串 String[] strArr = str.split(",");//如果str字符串存在分割符可使用此方法 str.toCharArray();//调用方法转换 例子:String str = "唐烨"; char[]cahrArray = str.toCharArray(); for(char c : charArray){ syso(c); } ③new String(字节数组|字符数组) toCharArray 转字符数组 getBytes 转字节数组
3 字符串和字节数组互相转换方法
①字符串转换字节数组--str.getBytes(); String str4 = "hello"; byte[]b = str.getBytes(); for(int i = 0;i,b.length;i++){ syso((char)b[i]); } ②字节数组转换字符串--String str = new String(byte[] bys); byte[]b={67,98,99,100}; String str = new String(byte); syso(str);
4.字符串中字符的大小写转换
①toLowerCase();返回将当前字符串中所有字符转换成小写后的新串。
②toUpperCase();返回将当前字符串中所有字符转换成大写后的新串。String str = "alhfkSJDFjsahf"; System.out.println(str.toLowerCase()); System.out.println(str.toUpperCase());
5.字符串拼接
concat(String str)//将参数中的字符串str连接到当前字符串的后面,效果等价于"+"String s1 = "yangwenguang"; String s2 = "guihua"; System.out.println(s1+s2); System.out.println(s1.concat(s2));
6.去除前后空格
trim();截去字符串两端的空格,但对于中间的空格不处理作比较得出结果: System.out.println(" akashd ".length()); System.out.println(" akashd ".trim().length());
7.截取子串
① substring(int beginIndex)//该方法从beginIndex位置起,从当前之后的字符串中取出剩余的字符作为一个新的字符串返回。
②substring(int beginIndex, int endIndex)//该方法从beginIndex位置起,从当前字符串中取出到endIndex-1位置的字符作为一个新的字符串返回。截取 substring String str = "alhfkjsahf"; //截取hfk System.out.println(str.substring(2, 5));
8.字符串中字符的替换
replace(char oldChar, char newChar)//用字符newChar替换当前字符串中所有的oldChar字符,并返回一个新的字符串。替换 replace String str = "helhloh"; System.out.println(str.replace("h", "a")); 结果为:aelaloa 注意:所有的“h”都被“a”替代了
9.字符串分割
split(String str)//将str作为分隔符进行字符串分解,分解后的字字符串在字符串数组中返回。split 分割(提供一个目标字符串,按照特定的规则将该字符串分割成一个字符串数组) ? 方法一:String names2 = "a,b,c,d,e"; String[] split = names2.split(","); for (String string : split) { System.out.println(string); } 方法二:String names2 = "a,b,c,d,e"; String[] split = names2.split(","); for (int i = 0; i < split.length-1; i++) { for (int j = 0; j < split.length-i-1; j++) { if(split[j].compareTo(split[j+1])>0) { String a = split[j+1]; split[j+1] = split[j]; split[j] = a; } } }for(int i = 0;i<split.length;i++) { System.out.print(split[i]); } 结果为:abcde
10.字符串比较
①compareTo(String anotherString)//该方法是对字符串内容按字典顺序进行大小比较,通过返回的整数值指明当前字符串与参数字符串的大小关系。若当前对象比参数大则返回正整数,反之返回负整数,相等返回0。(类似比较考试成绩一样,假如总分相同就比较语文成绩,谁语文成绩高,谁就在前面,如果语文成绩也一样,那么就比较数学成绩,如果还是一样,就一直比下去,直到位置。。。如果都一样那就=0)// compareTo 比较(比较字符串的大小) ? // 每个字符串的首字母开始比较 使用每个字符的ASCII值比较 // 相同就往后比 String str1 = "aa";// 97 String str2 = "ab";// 98 // 如果第一个字符串大于第二个字符串 返回正数(两者之差) // 反之 返回负数(两者之差) // 如果相等 返回0 System.out.println(str1.compareTo(str2)); 结果为:-1 //比较:邓言康 邓诗龙的大小 String name1 = "邓言康"; String name2 = "邓诗龙"; System.out.println(name1.compareTo(name2)); 结果为:-471
②compareToIgnore(String anotherString)//与compareTo方法相似,但忽略大小写。String str1 = "aa";// 97 String str2 = "Ab";// 98 // 如果第一个字符串大于第二个字符串 返回正数(两者之差) // 反之 返回负数(两者之差) // 如果相等 返回0 System.out.println(str1.compareToIgnoreCase(str2)); //结果为:-1 //因为A与a不区分大小写,所以之间比a和b
③equals(Object anotherObject)//比较当前字符串和参数字符串,在两个字符串相等的时候返回true,否则返回false。(就是用来判断两个字符串是非相同)boolean flag = false; for(int i = 0;i<persons.length;i++) { //(1)获取所有非空的位置 if(persons[i]!=null) { //(2)判断参数p与非空位置的person对象一一对比 if(p.equals(persons[i])) { flag = true; System.out.println("数组种已存在添加的对象,不能再次添加"); break; } } }
④equalsIgnoreCase(String anotherString)//与equals方法相似,但忽略大小写。11. charAt 根据下标查找指定字符
String str = "my name is zz"; System.out.println(str.charAt(3)); //结果为:n
11.统计一个字符串中a的出现次数
String str = "abcayya"; // 字符串其本质就是字符数组 int count= 0; for (int i = 0; i < str.length(); i++) { if(str.charAt(i) == 'a') { count++; } } System.out.println("count = "+count); //结果为:count=3
12.contains 是否包含 结果只能为true or false
String str = "xiewenjianxihuanshuine?"; System.out.println(str.contains("xiewenjian")); //结果为:true
13.endWith() 判断字符串的结尾是否以指定的字符结尾
// 判断一个文件的扩展名是否以.java结尾 String fileName = "helloWorld.java"; if(fileName.endsWith(".java")) { System.out.println("YES"); } startsWith if(fileName.startsWith("h")) { System.out.println("YES"); } //结果为:YES YES
14.验证邮箱格式
// @ . // 123456@qq.com // baiduzz@sina.cn String email = "123456@qq.com"; if(email.indexOf('@')!=-1 && email.indexOf('.')!=-1 && email.indexOf('@') <email.indexOf('.')) { System.out.println("OK"); } //结果为:OK //证明“@”为什么在“.”前面
15.oop中如何注册,登录账户
public static void work10() { Scanner sc=new Scanner (System.in); String zh=""; String mi=""; while(true) { System.out.println("请你进行操作:1.注册账号 ,2.登陆账号"); int in=sc.nextInt(); if(in==1) { System.out.println("请您输入账号"); String uu=sc.next(); System.out.println("请你输入密码:"); String ii=sc.next(); System.out.println("请您再次确认密码"); String mm=sc.next(); while(true) { if(uu.length()>=6&&uu.length()<=12) { System.out.println("你的账号非常安全!"); zh=uu; }else { System.out.println("你的账号存在危险!!"); zh=uu; } if(ii.equals(mm)&&ii.length()>=6) { mi=ii; System.out.println("账号注册成功"); if(ii.length()>=10) { System.out.println("你的密码非常安全"); break; }else { System.out.println("你的密码有点不安全"); break; } }else { System.out.println("你的密码和上一次的不一样或者秘密长度不够六位数"); break; } } }else if(in==2) { System.out.println("请你输入账号:"); String ze=sc.next(); System.out.println("请你输入密码:"); String zc=sc.next(); if(ze.equals(zh)&&zc.equals(mi)) { System.out.println("登陆成功!!"); break; }else { System.out.println("账号或秘密错误!"); } }else { break; } }
16.字符串中单个字符查找
① indexOf(int ch/String str)//用于查找当前字符串中字符或子串,返回字符或子串在当前字符串中从左边起首次出现的位置,若没有出现则返回-1。indexOf 求下标(索引) ? String str = "唐铨肖鹏伟猴子"; //提供字符在目标字符串中不存在 返回-1 System.out.println(str.indexOf('s'));//-1 String str = "唐铨肖鹏伟猴子";? // 查找唐铨的下标 System.out.println(str.indexOf("唐铨"));
②indexOf(int ch/String str, int fromIndex)//改方法与第一种类似,区别在于该方法从fromIndex位置向后查找。根据指定的位置查找字符 String str = "ashfkjsahkja"; //从下标为3的位置处开始查找a出现的位置下标 System.out.println(str.indexOf('a', 3)); 结果为:7
③ lastIndexOf(int ch/String str)//该方法与第一种类似,区别在于该方法从字符串的末尾位置向前查找。
获取指定字符串在目标字符串中最后一次出现的位置 --lastIndexOf() String str = "ashfkjsahkja"; System.out.println(str.lastIndexOf('a')); 结果为:11
④lastIndexOf(int ch/String str, int fromIndex)//该方法与第二种方法类似,区别于该方法从fromIndex位置向前查找。根据指定的位置查找字符 String str = "ashfkjsahkja"; //从下标为3的位置处开始查找a出现的位置下标 System.out.println(str.lastIndexOf('a', -3)); 结果为:-1