Java语言——常用 API 第一部分
1.API
定义
应用程序编辑接口
Scanner中:是以 sc.nextline();
2.String
1.定义
String类在java.lang包中,所以不需要导包,String:也代表字符串,java程序中的所有字符串文字(“abc”)都被实现为此类的实例,也就是说,java中遇到 有"" 双引号的,都是 String的对象
2.特点
- 字符串不可变,他们的值在创建之后不可被更改
- 虽然值是不可变的,但是他们可以被共享
- 字符串效果上相当于字符数组(char[])。但是底层原理是字节数组(byte[])
3.构造方法
package com.itheima3;
public class demoone {
public static void main(String[] args) {
// public String():创建一个空的字符串
String s1 = new String();
System.out.println(s1);
// 根据数组内容来创建字符串对象
char[] arry = {'a','b','c'};
String s2 = new String(arry);
System.out.println(s2);
// 根据 byte类型来创建字符串对象
byte[] bys = {'c','b','a'};
String s3 = new String(bys);
System.out.println(s3);
// 不加括号
String s4 = "asd";
System.out.println(s4);
}
}
特点
4.字符串的比较
(1)"=="
基本类型:比较的是数据值是否相同
引用类型:比较的地址值是否相同
(2)“equals”
将此字符串与指定对象进行比较,由于我们比较的是字符串对象,所以参数直接传递一个字符串
package com.itheima3;
public class demoone {
public static void main(String[] args) {
char[] arry = {'a','b','c'};
String s1 = new String(arry);
String s2 = new String(arry);
String s3 = "abc";
String s4 = "abc";
// 比较 “ == ”的是地址值
System.out.println(s1 == s2);
System.out.println(s1 == s3);
System.out.println(s3 == s4);
System.out.println("==============");
// 用 equal 来进行比较,比较的值内容
System.out.println(s1.equals(s2));
System.out.println(s1.equals(s3));
System.out.println(s3.equals(s4));
}
}
案例:用户登陆
package com.itheima3;
import java.util.Scanner;
public class into {
public static void main(String[] args) {
// 模拟用户登陆
// 需求:总共三次登陆,如果没有,将锁定用户
String user = "xiaobai";
String password = "xiaobai1122";
// 创建对象
Scanner sc = new Scanner(System.in);
// for 循环次数
for (int i = 3;i>=1;i--){
System.out.print("请输入用户名:");
String input_user = sc.nextLine();
System.out.print("请输入密码:");
String input_password = sc.nextLine();
if (input_user.equals(user) && input_password.equals(password)){
System.out.println("成功登陆");
break;
}else {
if (i - 1 == 0) {
System.out.println("账户锁定,请联系管理员");
} else {
System.out.println("输入错误,剩余" + (i - 1) + "次机会!");
}
}
}
}
}
(3)字符串的查询
获取变量字符串的每一个值:变量.charAt(索引)
获取变量字符串的长度:变量.length();
// 创建对象
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
// 找到字符串索引的值
System.out.println(s.charAt(0));
System.out.println(s.charAt(1));
// 长度
System.out.println(s.length());
(4)字符串的拼接
如果是将整型转换为 字符性,在方法中需要先定义初始值 string,在进行拼接并输出
// 字符串的拼接
String ss = "";
String sss = "a";
ss +=sss;
注意
3.StringBuilder
1.定义
是一个可变的字符串类,我们可以把它看成是一个容器这里的可变指的是StringBuilder对象中的内容是可变的
2.构造方法
示例:
package com.itheima3;
import java.util.Scanner;
public class into {
public static void main(String[] args) {
// 新建变量给一个初定的值
StringBuilder sb1 = new StringBuilder();
System.out.println("sb1:"+sb1);
// 新建变量并给与字符串值
StringBuilder sb2 = new StringBuilder("hello world");
System.out.println("sb2:"+sb2);
System.out.println("sb2的长度:"+sb2.length());
}
}
添加:添加数据,并返回自身
StringBuilder sb = new StringBuilder();
// 添加值
sb.append("hello");
sb.append("world");
// 链式写法
sb.append(100).append(100);
反转:sb.resever()
//反转
sb.reverse();
System.out.println(sb);
String和StringBuilder的区别:前者是不可变的,后者是可变的
两者之间的转换方法:
package com.itheima3;
import java.util.Scanner;
public class into {
public static void main(String[] args) {
// StringBuilder 转换成 String
StringBuilder sb = new StringBuilder("HELLO");
String s = sb.toString();
System.out.println(s);
// String 转换成 StringBuilder
String s1 = "hello";
StringBuilder sb1 = new StringBuilder(s1);
System.out.println(sb1);
}
}
(1)字符串的拼接
(2)字符串的反转
package com.itheima3;
import java.util.Scanner;
public class into {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("输入:");
String input_massage = sc.nextLine();
// 传入一个值
String R = s_sb(input_massage);
System.out.print("返回:");
System.out.println(R);
}
public static String s_sb(String s){
StringBuilder sb = new StringBuilder();
// 拼接 !!!!!!!!!!!!!!!!!!!!
sb.append(s);
// 反转 !!!!!!!!!!!!!!!!!!!!
sb.reverse();
// 转换类型
String S = sb.toString();
return S;
}
}
4.集合
1.定义
2.特点
提供一种存储空间可变的存储模型,存储的数据容量可以发生改变
3.ArrayList
1.定义
- 可调整大小的数组实现
- :是一种特殊的数据类型,泛型
2.用法
在出现E的地方我们使用引用数据类型替代
ArrayList<String>;
ArrayList<Student>;
3.构造方法
package com.itheima3;
import java.util.ArrayList;
import java.util.Scanner;
public class into {
public static void main(String[] args) {
// 创建对象 ,后面的 <> 跟前面的 <> 关联,前面是啥后面就是啥
ArrayList<String> arry = new ArrayList<>();
// 添加元素,默认为public boolean add(E e),将值插入后尾
arry.add("hello");
arry.add("java");
// 指定位置插入
arry.add(2,"good");
System.out.println(arry);
}
}
注意:不能插入一个越界的值(原长度为2,不能插入第3个值)
4.常用方法
// 创建对象 ,后面的 <> 跟前面的 <> 关联,前面是啥后面就是啥
ArrayList<String> arry = new ArrayList<>();
// 添加元素,默认为public boolean add(E e),将值插入后尾
arry.add("hello");
arry.add("java");
// remove:删除并返回布尔值
System.out.println(arry.remove("hello"));
// 删除下标
System.out.println(arry.remove(1));
// set:修改下标
System.out.println(arry.set(1,"python"));
// get:得到下标
System.out.println(arry.get(1));
// size:返回个数
System.out.println(arry.size());
5.案例:学生管理系统
注意
私有变量快速建立 set/get 方法:alt + insert
结束死循环:
// 结束所有程序
System.exit(0);
reutrn:对于void类型通过return让函数暂时停止在那里
(1)学生类
package com.itheima4;
// alt + insert 快捷建构造函数
// 学生系统类
public class Student {
// 私有变量
// 学生里面有学号,姓名,年龄,地址
private String ID;
private String name;
private String year;
private String address;
public Student() {
}
public Student(String ID, String name, String year, String address) {
this.ID = ID;
this.name = name;
this.year = year;
this.address = address;
}
public String getID() {
return ID;
}
public void setID(String ID) {
this.ID = ID;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getYear() {
return year;
}
public void setYear(String year) {
this.year = year;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
(2)测试类
package com.itheima4;
import java.util.ArrayList;
import java.util.Scanner;
//展示类
// 功能:1.添加学生 2.删除学生 3.修改学生信息 4.查看所有学生信息 5.退出
public class Show {
// 主函数
public static void main(String[] args) {
// 新建集合变量
ArrayList<Student> students = new ArrayList<>();
// 写入循环
while (true) {
System.out.println("==========欢迎进入学生管理系统==========");
System.out.println("1.添加学生信息");
System.out.println("2.删除学生信息");
System.out.println("3.修改学生信息");
System.out.println("4.查看学生信息");
System.out.println("5.退出");
System.out.print("请输入你的选择:");
Scanner sc = new Scanner(System.in);
String number = sc.nextLine();
switch (number) {
case "1":
// System.out.println("添加学生信息");
add_student(students);
break;
case "2":
// System.out.println("删除学生信息");
del_student(students);
break;
case "3":
// System.out.println("修改学生信息");
modify_student(students);
break;
case "4":
// System.out.println("查看所有学生信息");
show_students(students);
break;
case "5":
System.out.println("谢谢使用");
// 结束所有程序
System.exit(0);
}
}
}
// 添加学生的方法
public static void add_student(ArrayList<Student> students){
Scanner sc = new Scanner(System.in);
String student_ID;
while (true) {
System.out.print("请输入学号:");
student_ID = sc.nextLine();
// 将学号进行判断,如果没有重复就输入名字,如果重复,就不断输入
boolean result = injudge(students,student_ID);
if (result){
break;
}else {
System.out.println("该学号已重复,请重新输入");
}
}
System.out.print("请输入姓名:");
String student_name = sc.nextLine();
if (student_name.length() <=2) {
if (student_name.length() <= 1) {
student_name = student_name + " ";
} else {
student_name = student_name + " ";
}
}
System.out.print("请输入年龄:");
String student_year = sc.nextLine();
System.out.print("请输入地址:");
String student_address = sc.nextLine();
// 创建学生类,并将学生类给写到集合中去 【可以理解为对每一个变量写入到 students的结构体上】
Student student = new Student();
student.setID(student_ID);
student.setName(student_name);
student.setYear(student_year);
student.setAddress(student_address);
students.add(student);
System.out.println("添加学生成功");
}
// 判断添加的学号是否一致
public static boolean injudge(ArrayList<Student> students,String id){
for (int i =0;i<students.size();i++){
Student s = students.get(i);
if (s.getID().equals(id)){
return false;
}
}
return true;
}
// 删除学生的方法
public static void del_student(ArrayList<Student> students){
if (students.size() == 0){
System.out.println("该系统并无可删除的学生信息!");
// return到这里停止
return;
}
Scanner sc = new Scanner(System.in);
System.out.print("请输入要删除的学号:");
String del_ID = sc.nextLine();
for (int i = 0;i<students.size();i++){
Student del_number = students.get(i);
String choose_number = del_number.getID();
// 取内容进行判断
if (del_ID.equals(choose_number)){
// 删除信息
students.remove(i);
System.out.println("删除学生信息成功");
break;
}else {
// 如果不在该系统之内,要提示
if (i == (students.size()-1)) {
System.out.println("该学号未在系统之内!");
break;
}
}
}
}
// 修改学生的方法
public static void modify_student(ArrayList<Student> students){
Scanner sc = new Scanner(System.in);
System.out.print("请输入要修改的学号:");
String modify_ID = sc.nextLine();
for (int i =0;i <students.size();i++){
Student s = students.get(i);
if (s.getID().equals(modify_ID)){
System.out.print("请重新输入姓名:");
String modify_name = sc.nextLine();
System.out.print("请重新输入年龄:");
String modify_year = sc.nextLine();
System.out.print("请重新输入地址:");
String modify_address = sc.nextLine();
Student student = new Student();
student.setID(modify_ID);
student.setName(modify_name);
student.setYear(modify_year);
student.setAddress(modify_address);
students.set(i,student);
System.out.println("修改成功");
break;
}else {
if (i == students.size() - 1) {
System.out.println("修改的学号不存在");
}
}
}
}
// 展示学生的方法
public static void show_students(ArrayList<Student> students){
System.out.println("该系统中学生的人数为:"+students.size());
if (students.size() == 0){
System.out.println("该系统暂无学生信息!");
// return到这里停止
return;
}
System.out.println("ID\t\t姓名\t\t\t年龄\t\t地址");
for (int i =0;i<students.size();i++){
Student student = students.get(i);
System.out.println(student.getID()+"\t\t"+student.getName()+"\t\t"+student.getYear()+"\t\t\t"+student.getAddress());
}
}
}
————————
后续将继续更新!
内有不足请指教