为什么要学习String的处理呢?
开发中,对字符串的处理是非常常见的。
String是什么?可以做什么?
java.lang.String 代表字符串。可以用来创建对象封装字符串数据,并对其进行处理。
1、创建对象
2、封装字符串数据
3、调用String的方法
String创建对象封装字符串数据的方法:
方式一:
Java程序中的所有字符串文字(例如:“abc”)都为此类对象。
String name = "小黑"; String SchoolName = "黑马程序员";方式二:
调用String类的构造器初始化字符串对象。
new String()创建字符串对象,并调用构造器初始化字符串。
package cn.ensource.string; public class StringDemo { public static void main(String[] args) { String name = "itheima"; System.out.println(name); String rs1 = new String(); System.out.println(rs1); String rs2 = new String("itheima"); System.out.println(rs2); char[] chars = {'a', 'b', 'c'}; String rs3 = new String(chars); System.out.println(rs3); byte[] bytes = {100, 101, 102}; String rs4 = new String(bytes); System.out.println(rs4); } }运行结果:
通过构造函数创建
通过new创建的字符串对象,每一次new都会申请一个空间,虽然内容相同,但是地址值不同。
直接赋值方式创建:
以“”双引号给出的字符串,只要字符串序列相同顺序和大小相同,无论程序代码中出现几次,JVM都只会建立一个String对象,并在字符串池中维护。
String类的常用方法:
String提供的操作字符串数据的常用方法:
为什么是快速熟悉这些方法呢?
API是解决需求的,快速地认识他们,实实在在地解决业务需求。
package cn.ensource.string; public class StringDemo2 { public static void main(String[] args) { // 目标:快速熟悉String提供的处理字符串的方法 String s = "黑马Java"; // 获取字符串的长度 System.out.println(s.length()); // 提取字符串中某个索引位置处的字符 char c = s.charAt(1); System.out.println(c); // 字符串的遍历 for (int i = 0; i < s.length(); i++) { char ch = s.charAt(i); System.out.print(ch); } System.out.println("--------"); // 把字符串转成字符数组,然后再进行遍历 char[] chars = s.toCharArray(); for (int i = 0; i < chars.length; i++) { System.out.print(chars[i]); } System.out.println("--------"); // 判断字符串内容,内容一样,就返回true String s1 = new String("黑马"); String s2 = new String("黑马"); boolean rs = s.equals(s2); System.out.println(rs); System.out.println("--------"); // 忽略大小写比较字符串 String c1 = "34Aefg"; String c2 = "24aefg"; System.out.println(c1.equals(c2)); System.out.println(c1.equalsIgnoreCase(c2)); System.out.println("--------"); // 截取字符串内容 String s3 = "Java是最好的编程语言之一"; System.out.println(s3.substring(0, 8)); System.out.println("--------"); // 截取字符串内容,从当前位置到字符串末尾 System.out.println(s3.substring(8)); System.out.println("--------"); // 把字符串的某个内容,替换成新内容 String s3c = s3.replace("Java", "C++"); System.out.println(s3c); System.out.println("--------"); // 判断字符串中是否包含某个关键字 String info = "Java是最好的编程语言之一"; boolean rs5 = info.contains("Java"); System.out.println(rs5); // startwith System.out.println("--------"); String info2 = "Java是最好的编程语言之一"; boolean rs6 = info2.startsWith("Java"); System.out.println(rs6); System.out.println("--------"); // 分割字符串 String str5 = "张无忌,周芷若,殷素素,赵敏"; String[] names = str5.split(","); for(int i = 0; i < names.length; i++) { System.out.println(names[i]); } } }split这个成员方法,之前在python中也遇到。
如果方法不再记得了,都是可以到API文档中查询的。
另外:
==:
比较基本数据类型:比较具体的值。
比较引用数据类型:比较的是对象地址值。
package com.company; public class Main { public static void main(String[] args) { char[] chs = {'a', 'b', 'c'}; String s1 = new String(chs); String s2 = new String(chs); String s3 = "abc"; String s4 = "abc"; System.out.println(s1 == s2); System.out.println(s1 == s4); System.out.println(s3 == s4); System.out.println("-------------"); System.out.println(s1.equals(s2)); System.out.println(s1.equals(s3)); System.out.println(s3.equals(s4)); } }运行结果:
false false true ------------- true true true用户登录案例:
package org.chang; import java.util.Scanner; public class Test { public static void main(String[] args) { String username = "changchunhua"; String password = "chang@123"; for (int i=0; i<3; i++) { Scanner sc = new Scanner(System.in); System.out.println("Please input username: "); String name = sc.nextLine(); System.out.println("Please input password: "); String pwd = sc.nextLine(); if (name.equals(username) && pwd.equals(password)) { System.out.println("Sign in susccessfully!"); break; } else { if (2 - i == 0) { System.out.println("Your account is locked!"); } else { System.out.println("Your has " + (2 - i) + " times to sign in."); } } } } }运行结果:
Please input username: chang Please input password: chang@123 Your has 2 - i times to sign in. Please input username: changchun Please input password: chang@123 Your has 2 - i times to sign in. Please input username: changchunhua Please input password: chang@123 Sign in susccessfully!字符串反转:
package com.company; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("Please input a string: "); String line = sc.nextLine(); String s = reverse(line); System.out.println("s: " + s); } public static String reverse(String s) { String ss = ""; for(int i=s.length()-1; i>=0; i--) { ss += s.charAt(i); } return ss; } }运行结果:
Please input a string: changchunhua s: auhnuhcgnahc