API(全称 Application Programming Interface:应用程序编程接口)
就是别人写好的一些程序,给我们直接拿去调用即可解决问题的。
包
什么是包?
- 包是用来分门别类的管理各种不同程序的,类似于文件夹,建包有利于程序的管理和维护。
在自己程序中调用其他包下的程序的注意事项
- 如果当前程序中,要调用自己包下的其他程序,可以直接调用。(同一个包下的类,互相可以直接调用)
- 如果当前程序中,要调用其他包下的程序,则必须在当前程序中导包,才可以访问! 导包格式:import 包名.类名
- 如果当前程序中,要调用Java提供的程序,也需要先导包才可以使用;但是Java.lang包下的程序是不需要我们导包的,可以直接使用
- 如果当前程序中,要调用多个不同包下的程序,而这些程序名正好一样,此时默认只能导入一个程序,另一个程序必须带包名访问
String
String概述
- String代表字符串,可以用来创建对象封装字符串数据,并对其进行处理
字符串的处理
1、创建对象 2、封装字符串数据 3、调String的方法
String创建对象封装字符串数据的方式
- 方式一:Java程序中的使用字符串文字(例如 “ abc ”)都为此类的对象。
- 方式二:调用String类的构造器初始化字符串对象。
构造器 | 说明 |
---|---|
public String() | 创建一个空白符字符串对象,不含有任何内容 |
public String( String original ) | 根据传入的字符串内容,来创建字符串对象 |
public String( char[ ] chars ) | 根据字符数组的内容,来创建字符串对象 |
public String( byte[ ] bytes ) | 根据字符数组的内容,来创建字符串内容 |
String的常用方法
String提供的操作字符串数据的常用方法
方法名 | 说明 |
---|---|
public int length() | 获取字符串长度返回(就是字符个数) |
public char charAt(int index) | 获取某个索引位置处的字符返回 |
public char [ ] toCharArray() | 将当前字符串转换成字符数组返回 |
public boolean equals(Object anObject) | 判定当前字符串与另一个字符串的内容一样,一样返回true |
public boolean equalsIgnoreCase(String anotherString) | 判定当前字符串与另一个字符串内容是否一样(忽略大小写) |
public String substring(int beginIndex,int endIndex) | 根据开始和结束索引进行截取,得到新的字符串(包前不包后) |
public String substring(int beginIndex) | 从传入的索引处截取,截取到末尾,得到新的字符串返回 |
public String replace(CharSequence target,CharSequence replacement) | 使用新值,将字符串中的旧值替换,得到新的字符串 |
public boolean contains(CharSequence s) | 判定字符串中是否包含了某个字符串 |
public boolean startsWith(String prefix) | 判定字符串是否以某个字符串内容开头,是则返回true,反之返回false |
public String[ ] split(String regex) | 把字符串按照某个字符串内容分割,并返回字符串数组回来 |
String使用时的注意事项
第一点
- String对象的内容不可改变,被称为不可变字符串变对象。
String注意事项1:String的对象是不可变字符串对象
- 注意:只要是以 “...” 方法写出的字符串对象,会在堆内存中的字符串常量池中存储。
结论:每次试图改变字符串对象实际上是产生了新的字符串变量,变量每次都是指向了新的字符串对象,之前字符串对象的内容确实没有改变,因此说String的对象是不可变的。
第二点
- 只有是以 “...” 方式写出的字符串对象,会存储到字符串常量池,且相同内容的字符串只存储一份;
- 但通过new创建字符串对象,每new一次都会产生一个新的对象放在堆内存中。
String案例
案例:完成用户登录
需求:
- 系统正确的登录名和密码是:zhansan/123456,请在控制台开发一个登录界面,接收用户输入的登录名和密码,判断用户是否登录成功,登录成功后展示:“欢迎进入系统”,即可停止程序。(注意:要求最多给用户三次登录机会)
//目标:完成用户的登录案例
import java.util.Random;
import java.util.Scanner;
public class StringTest {
public static void main(String[] args) {
for (int i = 0; i < 3; i++) {
//1.开发一个登录界面
Scanner sc = new Scanner(System.in);
System.out.println("请您输入登录名称:");
String loginName = sc.next();
System.out.println("请您输入密码:");
String passWord = sc.next();
//5.开始调用登录方法,判断是否登录成功
boolean rs = login(loginName,passWord);
if (rs){
String codes = createCode(5);
System.out.println("验证码为:"+ codes);
System.out.println("请输入验证码:");
String cod = sc.next();
if (cod.equals(codes)){
System.out.println("登陆成功,欢迎进入系统");
}else {
System.out.println("验证码错误");
continue;
}
break;
}else {
System.out.println("您输入的登录名或密码错误,请您重新确认");
}
}
}
//2.开发一个登陆方法,接受用户的登录名和密码,返回认证的结果
public static boolean login(String loginName,String passWord){
//3.准备一份正确的登录名和密码
String okLoginName = "zhangsan";
String okPassWord = "123456";
//4.判断用户是否登录成功
if (loginName.equals(okLoginName) && passWord.equals(okPassWord)){
return true;
}
return false;
}
public static String createCode(int n){
Random r = new Random();
String code = "";
String data = "abcdefghijklnmopqretuvwxyzABCDEFGHIJKLNMOPQRSTUVWXYZ0123456789";
for (int i = 0; i < n; i++) {
int index = r.nextInt(data.length());
code += data.charAt(index);
}
return code;
}
}