常用API
API理解
什么是API
API (Application Programming Interface) :应用程序编程接口
java中的API
指的就是 JDK 中提供的各种功能的 Java类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可,我们可以通过帮助文档来学习这些API如何使用。
如何使用API帮助文档
主要是以下几步:
1. 打开帮助文档
2. 找到选项卡中的索引框
3. 在输入框中输入你要查找类,例如Random
4. 看类在哪个包下
5. 看类的描述
6. 看构造方法
7. 看成员方法
接下来讲解String类,StringBuilder类
String类
一. 基本内容:
String 类代表字符串,Java 程序中的所有字符串文字(例如“abc”)都被实现为此类的实例。也就是说,Java 程序中所有的双引号字符串,都是 String 类的对象。String 类在 java.lang 包下,所以使用的时候不需要导包!
二. 特点:
字符串不可变,它们的值在创建后不能被更改
虽然 String 的值是不可变的,但是它们可以被共享
字符串效果上相当于字符数组( char[] ),但是底层原理是字节数组( byte[] )
关于String为啥不可改变
这里可以根据 jdk 的源码来分析。
字符串实际上就是一个 char 数组,并且内部就是封装了一个 char 数组。
并且这里 char 数组是被 final 修饰的:
public final class String
implements java. io. Serializable, Comparable < String > , CharSequence {
private final char value[ ] ;
并且 String 中的所有的方法,都是对于 char 数组的改变,只要是对它的改变,方法内部都是返回一个新的 String 实例。
三. 构造方法
常用:
代码展示:
public class UserLogin {
public static void main ( String [ ] args) {
String username = "hxf1688" ;
String password = "2e5y8hxf" ;
for ( int i= 0 ; i < 3 ; i++ ) {
Scanner sc = new Scanner ( System . in) ;
System . out. println ( "请输入用户名:" ) ;
String user = sc. nextLine ( ) ;
System . out. println ( "请输入密码:" ) ;
String psw = sc. nextLine ( ) ;
if ( username. equals ( user) && password. equals ( psw) ) {
System . out. println ( "登录成功" ) ;
break ;
}
else {
if ( i== 2 ) {
System . out. println ( "您输入错误次数过多,请联系管理员" ) ;
}
else {
System . out. println ( "输入失败,您还有" + ( 2 - i) + "尝试机会" ) ;
}
}
}
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
StringBuilder类
一、基本内容:
StringBuilder 是一个可变的字符串类,我们可以把它看成是一个容器,这里的可变指的是 StringBuilder 对象中的内容是可变的
二、构造方法:
常用:
代码展示:
StringBuilder s1 = StringBuilder ( hello) ;
s2 = s1. append ( "world" ) ;
( s1 == s2)
StringBuilder类的其他知识点:
拓展知识
String、StringBuffer 和 StringBuilder 的区别:
String、StringBuffer 和 StringBuilder 的区别:
String:字符串常量,字符串长度不可变。Java中String 是immutable(不可变)的。用于存放字符的数组被声明为final的,因此只能赋值一次,不可再更改。
StringBuffer:字符串变量(Synchronized,即线程安全)。如果要频繁对字符串内容进行修改,出于效率考虑最好使用 StringBuffer,如果想转成 String 类型,可以调用 StringBuffer 的 toString() 方法。Java.lang.StringBuffer 线程安全的可变字符序列。在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。可将字符串缓冲区安全地用于多个线程。
StringBuilder:字符串变量(非线程安全)。在内部 StringBuilder 对象被当作是一个包含字符序列的变长数组。
基本原则 :
如果要操作少量的数据用 String ;
单线程操作大量数据用StringBuilder ;
多线程操作大量数据,用StringBuffer。
ArrayList
1.1ArrayList类概述
1.2ArrayList类常用方法
构造方法 :
public ArrayList() : 创建一个空的集合对象
成员方法 :
关于成员方法的具体操作 :
代码展示:
import java. util. ArrayList ;
public class Arraylist1 {
public static void main ( String [ ] args) {
ArrayList < String > al = new ArrayList < > ( ) ;
al. add ( "ding" ) ;
al. add ( "yu" ) ;
al. add ( "meng" ) ;
al. add ( 3 , "wo" ) ;
System . out. println ( al. remove ( "wo" ) ) ;
System . out. println ( al. remove ( 2 ) ) ;
System . out. println ( al. set ( 1 , "sun" ) ) ;
System . out. println ( al. get ( 0 ) ) ;
System . out. println ( al. get ( 1 ) ) ;
System . out. println ( al. size ( ) ) ;
System . out. println ( al) ;
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
学生管理系统
案例需求 :
针对目前我们的所学内容,完成一个综合案例:学生管理系统!该系统主要功能如下:
添加学生:通过键盘录入学生信息,添加到集合中
删除学生:通过键盘录入要删除学生的学号,将该学生对象从集合中删除
修改学生:通过键盘录入要修改学生的学号,将该学生对象其他信息进行修改
查看学生:将集合中的学生对象信息进行展示
退出系统:结束程序
具体界面 :
实现步骤 :
定义学生类,包含以下成员变量 :
private String sid // 学生id
private String name // 学生姓名
private String age // 学生年龄
private String address // 学生所在地
学生管理系统主界面的搭建步骤 :
首先用输出语句完成主界面编写, 接着Scanner键盘输入, 然后switch语句完成选择的功能, 最后循环完成功能结束后回到主界面
具体代码:
import java. util. ArrayList ;
import java. util. Scanner ;
public class Studenttext {
public static void main ( String [ ] args) {
boolean isFlag= true ;
ArrayList < Student > s = new ArrayList < > ( ) ;
while ( isFlag) {
System . out. println ( "------欢迎来到远远学生管理软件------\n" ) ;
System . out. println ( " 1 添加学生" ) ;
System . out. println ( " 2 删除学生" ) ;
System . out. println ( " 3 修改学生" ) ;
System . out. println ( " 4 查看所有学生" ) ;
System . out. println ( " 5 退出" ) ;
System . out. println ( " 请输入你的选择: " ) ;
char selection = Student . readMenuSelection ( ) ;
switch ( selection) {
case '1' :
addStudent ( s) ;
break ;
case '2' :
removeStudent ( s) ;
break ;
case '3' :
setStudent ( s) ;
break ;
case '4' :
findStudent ( s) ;
break ;
case '5' :
System . out. print ( "确认是否退出(Y/N):" ) ;
char isExit = Student . readConfirmSelection ( ) ;
if ( isExit == 'Y' ) {
isFlag = false ;
break ;
}
}
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
学生管理系统的添加学生功能实现步骤 :
定义一个方法,接收ArrayList集合 ,方法内完成添加学生的功能 : 最后调用添加学生方法
a.键盘录入学生信息
b.根据录入的信息创建学生对象
c.将学生对象添加到集合中
d.提示添加成功信息
学生管理系统的查看学生功能实现步骤 :
定义一个方法,接收ArrayList集合, 方法内遍历集合,将学生信息进行输出, 在查看所有学生选项里调用查看学生方法
具体代码:
public static void findStudent ( ArrayList < Student > s) {
if ( s. size ( ) == 0 ) {
System . out. println ( "无数据,请先录入学生信息" ) ;
return ;
}
System . out. println ( "学号\t\t姓名\t\t年龄\t\t居住地" ) ;
for ( int i = 0 ; i < s. size ( ) ; i++ ) {
Student a= s. get ( i) ;
System . out. println ( a. getSid ( ) + "\t\t" + a. getName ( ) + "\t\t" + a. getAge ( ) + "岁\t" + a. getAddress ( ) ) ;
}
}
学生管理系统的删除学生功能实现步骤 :
定义一个方法,接收ArrayList集合, 方法中接收要删除学生的学号, 遍历集合,获取每个学生对象, 使用学生对象的学号和录入的要删除的学号进行比较,如果相同,则将当前学生对象从集合中删除
,最后在删除学生选项里调用删除学生的方法
学生管理系统的修改学生功能实现步骤 :
定义一个方法,接收ArrayList集合, 方法中接收要修改学生的学号, 通过键盘录入学生对象所需的信息,并创建对象, 遍历集合,获取每一个学生对象。并和录入的修改学生学号进行比较.如果相同,则使用新学生对象替换当前学生对象, 在修改学生选项里调用修改学生的方法
具体代码:
public static void setStudent ( ArrayList < Student > s) {
Scanner sc = new Scanner ( System . in) ;
System . out. println ( "请输入你要修改的学生学号:" ) ;
String sid = sc. nextLine ( ) ;
int index = - 1 ;
for ( int i = 0 ; i < s. size ( ) ; i++ ) {
Student b = s. get ( i) ;
if ( b. getSid ( ) . equals ( sid) ) {
index = i;
break ;
}
}
if ( index == - 1 ) {
System . out. println ( "你输入的学号不存在,请重新输入" ) ;
} else {
System . out. println ( "请输入学生新姓名" ) ;
String name = sc. nextLine ( ) ;
System . out. println ( "请输入学生新年龄" ) ;
String age = sc. nextLine ( ) ;
System . out. println ( "请输入学生新居住的" ) ;
String address = sc. nextLine ( ) ;
Student a = new Student ( ) ;
a. setSid ( sid) ;
a. setName ( name) ;
a. setAge ( age) ;
a. setAddress ( address) ;
for ( int i = 0 ; i < s. size ( ) ; i++ ) {
Student b = s. get ( i) ;
if ( b. getSid ( ) . equals ( sid) ) {
s. set ( i, a) ;
break ;
}
}
System . out. println ( "修改成功" ) ;
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
退出系统