一篇文章帶你了解JAVA面對對象應(yīng)用
常用API
API理解
- 什么是API
API (Application Programming Interface) :應(yīng)用程序編程接口
- java中的API
指的就是 JDK 中提供的各種功能的 Java類,這些類將底層的實(shí)現(xiàn)封裝了起來,我們不需要關(guān)心這些類是如何實(shí)現(xiàn)的,只需要學(xué)習(xí)這些類如何使用即可,我們可以通過幫助文檔來學(xué)習(xí)這些API如何使用。
如何使用API幫助文檔
主要是以下幾步:
1. 打開幫助文檔
2. 找到選項(xiàng)卡中的索引框
3. 在輸入框中輸入你要查找類,例如Random
4. 看類在哪個(gè)包下
5. 看類的描述
6. 看構(gòu)造方法
7. 看成員方法
接下來講解String類,StringBuilder類
String類
一. 基本內(nèi)容:
String 類代表字符串,Java 程序中的所有字符串文字(例如“abc”)都被實(shí)現(xiàn)為此類的實(shí)例。也就是說,Java 程序中所有的雙引號(hào)字符串,都是 String 類的對象。String 類在 java.lang 包下,所以使用的時(shí)候不需要導(dǎo)包!
二. 特點(diǎn):
- 字符串不可變,它們的值在創(chuàng)建后不能被更改
- 雖然 String 的值是不可變的,但是它們可以被共享
- 字符串效果上相當(dāng)于字符數(shù)組( char[] ),但是底層原理是字節(jié)數(shù)組( byte[] )
關(guān)于String為啥不可改變
這里可以根據(jù) jdk 的源碼來分析。
字符串實(shí)際上就是一個(gè) char 數(shù)組,并且內(nèi)部就是封裝了一個(gè) char 數(shù)組。
并且這里 char 數(shù)組是被 final 修飾的:
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence {
/** The value is used for character storage. */
private final char value[];
并且 String 中的所有的方法,都是對于 char 數(shù)組的改變,只要是對它的改變,方法內(nèi)部都是返回一個(gè)新的 String 實(shí)例。
三. 構(gòu)造方法
常用:

代碼展示:
/*
登錄系統(tǒng)
*/
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); //創(chuàng)建sc為輸入類
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("您輸入錯(cuò)誤次數(shù)過多,請聯(lián)系管理員");
}
else {
System.out.println("輸入失敗,您還有"+(2-i)+"嘗試機(jī)會(huì)");
}
}
}
}
}
StringBuilder類
一、基本內(nèi)容:
StringBuilder 是一個(gè)可變的字符串類,我們可以把它看成是一個(gè)容器,這里的可變指的是 StringBuilder 對象中的內(nèi)容是可變的
二、構(gòu)造方法:
常用:

代碼展示:
StringBuilder s1 = StringBuilder(hello);
s2 = s1.append("world");
(s1 == s2) //
結(jié)果為true
StringBuilder類的其他知識(shí)點(diǎn):

拓展知識(shí)
String、StringBuffer 和 StringBuilder 的區(qū)別:
String:字符串常量,字符串長度不可變。Java中String 是immutable(不可變)的。用于存放字符的數(shù)組被聲明為final的,因此只能賦值一次,不可再更改。
StringBuffer:字符串變量(Synchronized,即線程安全)。如果要頻繁對字符串內(nèi)容進(jìn)行修改,出于效率考慮最好使用
StringBuffer,如果想轉(zhuǎn)成 String 類型,可以調(diào)用 StringBuffer 的 toString() 方法。Java.lang.StringBuffer 線程安全的可變字符序列。在任意時(shí)間點(diǎn)上它都包含某種特定的字符序列,但通過某些方法調(diào)用可以改變該序列的長度和內(nèi)容??蓪⒆址彌_區(qū)安全地用于多個(gè)線程。
StringBuilder:字符串變量(非線程安全)。在內(nèi)部 StringBuilder 對象被當(dāng)作是一個(gè)包含字符序列的變長數(shù)組。
基本原則 :
- 如果要操作少量的數(shù)據(jù)用 String ;
- 單線程操作大量數(shù)據(jù)用StringBuilder ;
- 多線程操作大量數(shù)據(jù),用StringBuffer。
ArrayList
1.1ArrayList類概述
- 什么是集合
提供一種存儲(chǔ)空間可變的存儲(chǔ)模型,存儲(chǔ)的數(shù)據(jù)容量可以發(fā)生改變
- ArrayList集合的特點(diǎn)
底層是數(shù)組實(shí)現(xiàn)的,長度可以變化
- 泛型的使用
用于約束集合中存儲(chǔ)元素的數(shù)據(jù)類型
1.2ArrayList類常用方法
構(gòu)造方法 :
public ArrayList() : 創(chuàng)建一個(gè)空的集合對象
成員方法 :

關(guān)于成員方法的具體操作 :

代碼展示:
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);
}
}
學(xué)生管理系統(tǒng)
案例需求 :
- 針對目前我們的所學(xué)內(nèi)容,完成一個(gè)綜合案例:學(xué)生管理系統(tǒng)!該系統(tǒng)主要功能如下:
- 添加學(xué)生:通過鍵盤錄入學(xué)生信息,添加到集合中
- 刪除學(xué)生:通過鍵盤錄入要?jiǎng)h除學(xué)生的學(xué)號(hào),將該學(xué)生對象從集合中刪除
- 修改學(xué)生:通過鍵盤錄入要修改學(xué)生的學(xué)號(hào),將該學(xué)生對象其他信息進(jìn)行修改
- 查看學(xué)生:將集合中的學(xué)生對象信息進(jìn)行展示
- 退出系統(tǒng):結(jié)束程序
具體界面 :

實(shí)現(xiàn)步驟 :
1.定義學(xué)生類,包含以下成員變量 :
private String sid // 學(xué)生id
private String name // 學(xué)生姓名
private String age // 學(xué)生年齡
private String address // 學(xué)生所在地
2.學(xué)生管理系統(tǒng)主界面的搭建步驟 :
首先用輸出語句完成主界面編寫, 接著Scanner鍵盤輸入, 然后switch語句完成選擇的功能, 最后循環(huán)完成功能結(jié)束后回到主界面
具體代碼:
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("------歡迎來到遠(yuǎn)遠(yuǎn)學(xué)生管理軟件------\n");
System.out.println(" 1 添加學(xué)生");
System.out.println(" 2 刪除學(xué)生");
System.out.println(" 3 修改學(xué)生");
System.out.println(" 4 查看所有學(xué)生");
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("確認(rèn)是否退出(Y/N):");
char isExit = Student.readConfirmSelection();
if (isExit == 'Y') {
isFlag = false;
break;
}
}
}
}
3.學(xué)生管理系統(tǒng)的添加學(xué)生功能實(shí)現(xiàn)步驟 :
定義一個(gè)方法,接收ArrayList集合 ,方法內(nèi)完成添加學(xué)生的功能 : 最后調(diào)用添加學(xué)生方法
a.鍵盤錄入學(xué)生信息
b.根據(jù)錄入的信息創(chuàng)建學(xué)生對象
c.將學(xué)生對象添加到集合中
d.提示添加成功信息
4.學(xué)生管理系統(tǒng)的查看學(xué)生功能實(shí)現(xiàn)步驟 :
定義一個(gè)方法,接收ArrayList集合, 方法內(nèi)遍歷集合,將學(xué)生信息進(jìn)行輸出, 在查看所有學(xué)生選項(xiàng)里調(diào)用查看學(xué)生方法
具體代碼:
public static void findStudent(ArrayList<Student> s) {
if (s.size()==0){
System.out.println("無數(shù)據(jù),請先錄入學(xué)生信息");
return;
}
System.out.println("學(xué)號(hào)\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());
}
}
學(xué)生管理系統(tǒng)的刪除學(xué)生功能實(shí)現(xiàn)步驟 :
定義一個(gè)方法,接收ArrayList集合, 方法中接收要?jiǎng)h除學(xué)生的學(xué)號(hào), 遍歷集合,獲取每個(gè)學(xué)生對象, 使用學(xué)生對象的學(xué)號(hào)和錄入的要?jiǎng)h除的學(xué)號(hào)進(jìn)行比較,如果相同,則將當(dāng)前學(xué)生對象從集合中刪除,最后在刪除學(xué)生選項(xiàng)里調(diào)用刪除學(xué)生的方法
學(xué)生管理系統(tǒng)的修改學(xué)生功能實(shí)現(xiàn)步驟 :
定義一個(gè)方法,接收ArrayList集合, 方法中接收要修改學(xué)生的學(xué)號(hào), 通過鍵盤錄入學(xué)生對象所需的信息,并創(chuàng)建對象, 遍歷集合,獲取每一個(gè)學(xué)生對象。并和錄入的修改學(xué)生學(xué)號(hào)進(jìn)行比較.如果相同,則使用新學(xué)生對象替換當(dāng)前學(xué)生對象, 在修改學(xué)生選項(xiàng)里調(diào)用修改學(xué)生的方法
具體代碼:
public static void setStudent(ArrayList<Student> s) {
Scanner sc = new Scanner(System.in);
System.out.println("請輸入你要修改的學(xué)生學(xué)號(hào):");
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("你輸入的學(xué)號(hào)不存在,請重新輸入");
} else {
System.out.println("請輸入學(xué)生新姓名");
String name = sc.nextLine();
System.out.println("請輸入學(xué)生新年齡");
String age = sc.nextLine();
System.out.println("請輸入學(xué)生新居住的");
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("修改成功");
}
}
退出系統(tǒng)
總結(jié)
本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Spring不能注入Static變量的原因及Spring注入靜態(tài)變量
這篇文章主要介紹了Spring不能注入Static變量的原因及Spring注入靜態(tài)變量,需要的朋友可以參考下2016-01-01
Java大批量導(dǎo)出Excel數(shù)據(jù)的優(yōu)化過程
幾十萬上百萬行的數(shù)據(jù)是很常見的。本文主要介紹了Java大批量導(dǎo)出Excel數(shù)據(jù)的優(yōu)化過程,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08
Java執(zhí)行cmd命令的舉例與注意事項(xiàng)
Java應(yīng)用程序主要是通過Runtime和Process兩個(gè)類來執(zhí)行cmd命令,下面這篇文章主要給大家介紹了關(guān)于Java執(zhí)行cmd命令的方法與注意事項(xiàng),文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-02-02
Java并發(fā)之異步的八種實(shí)現(xiàn)方式
本文主要介紹了Java并發(fā)之異步的八種實(shí)現(xiàn)方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
WIN10系統(tǒng)中添加bat腳本重啟jar服務(wù)
在bat腳本中執(zhí)行java服務(wù),命令與cmd中類似,下面這篇文章主要給大家介紹了關(guān)于WIN10系統(tǒng)中添加bat腳本重啟jar服務(wù)的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12

