常用API(Application Programming Interface,应用程序编程接口):
- Java写好的功能代码,可以直接调用。
- Oracle也为Java提供相应的API文档。
String :
1、代表字符串,String类定义的变量可以用于指向字符串对象,再操作该字符串。
2、String变量每次的修改都是产生并指向新的字符串对象。原来的字符串对象都是没有改变的,所以称不可变字符串。
String类创建对象的两种方式:
1、常见的(" ")创建;
2、用构造器创建。
构造器 | 说明 |
public String() | 创建一个空白字符串对象,不含有任何内容 |
public String(String original) | 根据传入的字符串内容,来创建字符串对象 |
public String(char[] chs) | 根据字符数组的内容,来创建字符串对象 |
public String(byte[] chs) | 根据字节数组的内容,来创建字符串对象 |
字符串对象的特点:
双引号(" ")创建的字符串对象,在字符串常量池中存储同一个
通过呢哇构造器创建的字符串对象,在堆内存中分开存储。
在字符串的比较中,“==”只适用于内存地址比较,而String类提供的“equals”方法,就可以进行字符串内容的比较,只要内容一样就相等。
演示:
package example1;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
/**
* 字符串比较
*/
String account = "lihua";
String password = "123456";
// 用户输入两个字符串
Scanner sc = new Scanner(System.in);
System.out.println("请输入账号:");
String acc = sc.next();
System.out.println("请输入密码:");
String pas = sc.next();
// 分别用不同的方式进行判断
if (acc == account && pas == password){
System.out.println("输入正确!");
}else {
System.out.println("输入错误!");
}
if (acc.equals(account) && pas.equals(password)){
System.out.println("输入正确!");
}else {
System.out.println("输入错误!");
}
}
}
结果:
equalsIgnoreCase()也是字符串比较的一个方法,它不会管字母的大小写,常用于验证码场景。
代码实现:
package example1;
import java.util.Random;
import java.util.Scanner;
public class Test2 {
/**
* 获取验证码方法
*/
public static String code(){
String dates = "zxcvbnmasdfghjklqwertyuiopZXCVBNMASDFGHJKLQWERTYUIOP1234567890";
Random r = new Random();
String Code = "";
for (int i = 0; i < 5; i++) {
int index = r.nextInt(dates.length());
char c = dates.charAt(index);
Code += c;
}
return Code;
}
public static void main(String[] args) {
String verificationCode = code();
// 与验证码进行比较
Scanner sc = new Scanner(System.in);
System.out.print("您的验证码是:"+verificationCode+"\n请输入验证码:");
String str = sc.next();
if (str.equalsIgnoreCase(verificationCode)){
System.out.println("验证成功!");
}else {
System.out.println("输入错误!");
}
}
}
测试代码:
package example1;
public class Test3 {
/**
* 对String常用API的简单实现
*/
public static void main(String[] args) {
String str = "我是祖国的花朵flower";
// 返回字符串的长度
System.out.println(str.length());
// 获取某个索引位置处的字符
System.out.println(str.charAt(5));
// 将当前字符串转换成字符数组返回
char[] chars = str.toCharArray();
for (int i = 0; i < chars.length; i++) {
System.out.print(chars[i]);
}
System.out.println("\n");
// 根据开始和结束索引进行截取,得到新的字符串
System.out.println(str.substring(2 , 4));
// 从传入的索引处截取,截取到末尾,得到新的字符串
System.out.println(str.substring(7));
// 使用新值,将字符串中的旧值替换,得到新的字符串
System.out.println(str.replace("我", "wo"));
// 根据传入的规则切割字符串,得到字符串数组返回
String str2 = "李白,杜甫,白居易";
String[] strings = str2.split(",");
for (int i = 0; i < strings.length; i++) {
System.out.println(strings[i]);
}
// 是否查找到字符串
System.out.println(str.contains("祖国"));
System.out.println(str.contains("祖安"));
// 以字符串开始
System.out.println(str.startsWith("我是祖国的"));
System.out.println(str.startsWith("是祖国的"));
}
}
ArraList集合
集合是与数组类似,是一种容器,用于装数据的。ArraList只是集合中的一种,先复习一种。
与数组不同的是:没有固定的长度,类型可以变化。而且集合提供了非常对的功能,且好用,比之下,数组则显得非常单一。
ArraList用构造器创建对象:ArraList();
用add()方法添加数据,可以指定位置添加。
在集合的使用中,可以使用泛型统一元素类型。
关于ArraList<E>泛型的概述:就是一个泛型类,可以在编译阶段约束集合对象只能操作某种数据类型
注意:集合中只能存储引用数据类型,不支持基本数据类型。
简单案例:
package example2;
import java.util.ArrayList;
public class Case1 {
/**
* 案例需求:
* 某班成绩:98,77,66,89,79,50,100
* 需把成绩低于80分以下的数据去掉
*/
public static void main(String[] args) {
// 利用集合存储数据
ArrayList<Integer> list = new ArrayList<>();
list.add(98);
list.add(77);
list.add(66);
list.add(89);
list.add(79);
list.add(50);
list.add(100);
for (int i = 0; i < list.size(); i++) {
if (list.get(i) < 80){
list.remove(i);
// 每删掉一个就将索引后退一格
i--;
}else {
System.out.println(list.get(i));
}
}
}
}
学习了ArrayList后,对电影案例进行修改。
package example3;
import java.util.ArrayList;
public class Test {
/**
* 用集合改进一下电影案例
* 显现集合打印所有电源对象
*/
public static void main(String[] args) {
// 创建三个电影对象
Movie movie1 = new Movie("盗梦空间",9.4,"克里斯托弗·诺兰");
Movie movie2 = new Movie("星际穿越",9.4,"克里斯托弗·诺兰");
Movie movie3 = new Movie("黑客帝国",9.0,"莉莉·沃卓斯基/拉娜·沃卓斯基");
// 创建集合
ArrayList<Movie> movies = new ArrayList<>();
movies.add(movie1);
movies.add(movie2);
movies.add(movie3);
for (int i = 0; i < movies.size(); i++) {
Movie m = movies.get(i);
System.out.println("电影名称:"+m.getName());
System.out.println("电影评分:"+m.getScore());
System.out.println("导演:"+m.getDirector());
System.out.println("======================");
}
}
}
电影类未作改变。
利用目前阶段的知识,制作一个学生信息检索功能,大体如下:
package example4;
import java.util.ArrayList;
import java.util.Scanner;
public class Case2 {
public static void main(String[] args) {
// 1、创建学生类
// 2、创建集合储存学生对象,创建学生对象封装信息;
ArrayList<Students> studentsArrayList = new ArrayList<>();
studentsArrayList.add(new Students(202101,"李白","软件技术","2班"));
studentsArrayList.add(new Students(202102,"王维","软件技术","2班"));
studentsArrayList.add(new Students(202105,"杜甫","软件技术","2班"));
studentsArrayList.add(new Students(202108,"白居易","软件技术","1班"));
// 3.遍历学生对象;
System.out.println("学号\t\t姓名\t\t专业\t\t班级");
for (int i = 0; i < studentsArrayList.size(); i++) {
Students students = studentsArrayList.get(i);
System.out.println(students.getID()+"\t"+students.getName()+"\t"+students.getSpecialized()
+"\t"+students.getClassName());
}
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("请输入您想搜索的学号:");
int id = sc.nextInt();
Students students = search(studentsArrayList,id);
if (students == null){
System.out.println("未找到相关学号信息!");
}else {
System.out.println(students.getID()+"\t"+students.getName()+"\t"+students.getSpecialized()
+"\t"+students.getClassName());
}
}
}
/**
* 搜索功能,按学号搜索
* @param students 储存对象的集合
* @param id 学号
*/
public static Students search(ArrayList<Students> students , int id){
for (int i = 0; i < students.size(); i++) {
Students students1 = students.get(i);
if (students1.getID() == id){
return students1;
}
}
return null;
}
}
那么java常用API的学习就结束了。
感谢“黑马程序员”提供的网络学习资源