常用API String
String简单介绍
String类定义的变量可以用于存储字符串,同时String类提供了很多操作字符串的功能,我们可以直接使用。
ArrayList简单介绍
ArrayList代表的是集合类,集合是一种容器,与数组类似,不同的是集合的大小是不固定的。
通过创建ArrayList的对象表示得到一个集合容器,同时ArrayList提供了比数组更好用,更丰富的API(功能)给程序员使用。
1.String
String概述
java.lang.String类代表字符串,String类定义的变量可以用于指向字符串对象,然后操作该字符串。
Java程序中的所有字符串文字(例如“abc”)都为此类的对象。
特点:String其实常被称为不可变字符串类型,它的对象在创建后不能被更改。
String类创建对象的2种方式
方式一:直接使用“”定义。
方式二:通过String类的构造器创建对象。
构造器 说明 |
public string() 创建一个空白字符串对象,不含有任何内容 |
public String(String original) 根据传入的字符串内容,来创建字符串对象 |
public String(char[ ] chs) 根据字符数组的内容,来创建字符串对象 |
public String(byte[ ] chs) 根据字节数组的内容,来创建字符串对象 |
package com.String;
public class string01 {
public static void main(String[] args) {
//方法一
String name="我爱你中国";
System.out.println(name);
//方法二
String s1=new String ();//s1=" "
System.out.println(s1);
String s2=new String("我是中国人");
System.out.println(s2);
//方法三
char [] chars={'a','b','中'};
String s3=new String(chars);
System.out.println(s3);
//方法四
byte [] bytes={98,97,96,65,67};
String s4=new String(bytes);
System.out.println(s4);
}
}
区别:
- 以“”方式给出的字符串对象,在字符串常量池中存储,而且相同内容只会在其中存储一份。
- 通过构造器new对象,每new一次都会产生一个新对象,放在堆内存中。
String类常见面试题
Java存在编译优化机制,程序在编译时:“a”+“b”+“c”会直接转成"abc"
String类常用APlI-字符串内容比较
字符串的内容比较不适合用“==”比较。
推荐使用String类提供的“equals”比较:只关心内容一样即可
方法名 说明 |
public boolean equals (0bject an0bject) 将此字符串与指定对象进行比较。只关心字符内容是否一致! |
public boolean equalsIgnorecase (string anotherstring) 将此字符串与指定对象进行比较,忽略大小写比较字符串。只关心字符内容是否一致! |
开发中==比较数据:基本数据类型比较时使用。
String类常用API-遍历、替换、截取、分割操作
方法名 说明 |
public int length() 返回此字符串的长度 |
public char charAt(int index) 获取某个索引位置处的字符 |
public char[ ] toCharArray( ) : 将当前字符串转换成字符数组返回 |
public string substring(int beginIndex,int endIndex) 根据开始和结束索引进行截取,得到新的字符串(包前不包后) |
public string substring(int beginIndex) 从传入的索引处截取,截取到末尾,得到新的字符串 |
public string replace(CharSequence target, CharSequence replacement) 使用新值,将字符串中的旧值替换,得到新的字符串 |
public string[] split(String regex) 根据传入的规则切割字符串,得到字符串数组返回 |
package com.String;
public class String02 {
public static void main(String[] args) {
//1.
String name="我爱你中国love";
System.out.println(name.length());
//2.
char c= name.charAt(1);
System.out.println(c);
System.out.println("-------遍历字符串中每个字符--------");
for (int i = 0; i < name.length(); i++) {
char ch=name.charAt(i);
System.out.println(ch);
}
//3.
char[] chars = name.toCharArray();
for (int i = 0; i < chars.length; i++) {
char ch=chars[i];
System.out.println(ch);
}
//4.
String name2="iava六六六";
String rs=name2.substring(0,6);
System.out.println(rs);
//5.
String rs2=name2.substring(4);
System.out.println(rs2);
//6.
String name3="金三胖是最厉害的80后 ,金三胖棒棒哒";
String rs3=name3.replace("金三胖","***");
System.out.println(rs3);
//7.
System.out.println(name3.contains("金三胖"));
//8.
System.out.println(name3.startsWith("金三胖"));
//9.
String name4="王宝强,贾乃亮,陈羽凡";
String [] names=name4.split(",");
for (int i = 0; i < names.length; i++) {
System.out.println("选择了:"+names[i]);
}
}
}
string案例操作
String类开发验证码功能:随机产生一个5位的验证码,每位可能是数字、大写字母、小写字母。
分析:
- 定义一个string类型的变量存储验a-zA-Z0-9之间的全部字符。
- 循环5次,随机一个范围内的索引,获取对应字符连接起来即可。
-
package com.String; import java.util.Random; public class String03 { public static void main(String[] args) { //定义出现的字符信息 String dates="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; //循环5次,每次生成随机索引,连接起来 String code=""; Random r=new Random(); for (int i = 0; i <5 ; i++) { //随机一个索引 int index=r.nextInt(dates.length()); char c=dates.charAt(index); code+=c; } //输出字符串变量 System.out.println(code); }
模拟用户登录功能:
模拟用户登录功能,最多只给三次机会。
分析:
- 系统后台定义好正确的登录名称,密码。
- 使用循环控制三次,让用户输入正确的登录名和密码,判断是否登录成功,登录成功则不再进行登录;登录失败给出提示,并让用户继续登录。
-
package com.String; import java.util.Scanner; public class String04 { public static void main(String[] args) { //定义正确登录名称和密码 String okloginname="admin"; String okpassword="itheima"; //定义一个循环,循环3次 Scanner sc=new Scanner(System.in); for (int i = 1; i <=3; i++) { System.out.println("请你输入登录名称:"); String loginname=sc.next(); System.out.println("请你输入登录密码:"); String password=sc.next(); //判断登录是否成功 if(okloginname.equals(loginname)){ if(okpassword.equals(password)){ System.out.println("登陆成功"); break; }else{ //密码错误 System.out.println("密码错误。还剩余"+(3-i)+"次机会"); } }else { System.out.println("密码名称错误。还剩余"+(3-i)+"次机会"); } } } }
手机号码屏蔽:
以字符串的形式从键盘接受一个手机号,将中间四位号码屏蔽,最终效果为:
分析:键盘录入一个字符串,用Scanner 实现。
截取字符串前三位,截取字符串后四位。
将截取后的两个字符串,中间加上****进行拼接,输出结果即可。
package com.String;
import java.util.Scanner;
public class String05 {
public static void main(String[] args) {
//键盘录入手机号码
Scanner sc=new Scanner(System.in);
System.out.println("请输入你的手机号码:");
String tel=sc.next();
//截取号码前三位后四位
String before=tel.substring(0,3);
String after=tel.substring(7);//从索引7截到末尾
String s=before +"****"+after;
System.out.println(s);
}
}