一、字符串
1.1 API
API(Application Programming Interface):应用程序编程接口
Java API :指JDK中提供的各种功能的Java类,这些类将底层的实现封装了起来,我们不需要关 心这些类是如何实现的,只需要学习这些类如何使用即可。
调用方法的时候,如果方法有明确的返回值,我们用变量接收,可以手动完成,也可以使用快捷键的方式完成(Ctrl+Alt+V)。
1.2 String
String类在java.lang包下,所以在使用时不需要导包。
String类代表字符串,java程序中的所有字符串文字(例如:“abc")都被实现为此类的实例,也就是说,在java程序中所有的双引号字符串,都是String类的对象。
字符串不可变,他们的值在创建后不能被更改。虽然String的值不可改变,但可以被共享。字符串效果上相当于字符数组(char[ ]),但是底层原理时字节数组(byte[ ])。
1.3 String构造方法
方法名 | 说明 |
public String() | 创建一个空白字符串对象,不含有任何内容 |
public String(char[] chs) | 根据字符数组的内容,来创建字符串对象 |
public String(byte[] bys) | 根据字节数组的内容,来创建字符串对象 |
String s = "abc"; | 直接赋值的方式创建字符串对象,内容就是abc |
1.4 String对象的特点
通过new创建的字符串对象,每一次new都会申请一个内存空间,虽然内容相同,但是地址值不同。以" "方式给出的字符串,只要字符序列相同(顺序和大小),无论在程序代码中出现几次,JVM都只会建立一个String对象,并在字符串池中维护。
1.5 字符串的比较
使用==做比较:基本类型比较的是数据值是否相同;引用类型比较的是地址值是否相同。
字符串是对象,它比较内容是否相同,是通过一个方法来实现的:equals()
public boolean equals(Object anObject):将此字符串与指定对象进行比较。由于我们比较的是字符串对象,所以参数直接传递一个字符串。
public class StringCompare {
public static void main(String[] args) {
char[] chs={'a','b','c'};
String s1 = new String(chs);
String s2 = new String(chs);
String s3 = "abc";
String s4 = "abc";
System.out.println(s1==s2); //false
System.out.println(s1==s3); //false
System.out.println(s3==s4); //true
System.out.println(s1.equals(s2)); //true
System.out.println(s1.equals(s3)); //true
System.out.println(s3.equals(s4)); //true
}
}
1.6 字符串的遍历
import java.util.Scanner;
public class StringBianli {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入字符串:");
String s1=sc.nextLine();
for(int i=0;i<s1.length();i++){
System.out.println(s1.charAt(i));
}
}
}
1.7字符串拼接
1.public class HelloWorld {
public static void main(String[] args) {
int [] arr={1,2,3};
String s=ConnectString(arr);
System.out.println(s);
}
public static String ConnectString(int[] arr) {
String s="";
s +="[";
for (int i=0;i<arr.length;i++){
if(i==arr.length-1){
s+=arr[i];
}else{
s+=arr[i];
s+=", ";
}
}
s+="]";
return s;
}
}
2.public class HelloWorld {{
public static void main(String[] args) {
int [] arr={1,2,3};
String ss=Connect(arr);
System.out.println(ss);
}
public static String Connect(int[] a){
StringBuilder sb= new StringBuilder();
sb.append("[");
for(int i=0;i<a.length;i++){
if(i==a.length-1){
sb.append(a[i]);
}else{
sb.append(a[i]);
sb.append(",");
}
}
sb.append("]");
String s=sb.toString();
return s;
}
}
1.8 字符串反转
public class HelloWorld {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入字符串:");
String line=sc.nextLine();
String s=reverse(line);
System.out.println(s);
}
public static String reverse(String s){
String ss="";
for(int i=s.length()-1;i>=0;i--){
ss+=s.charAt(i);
}
return ss;
}
}
2.StringBuilder
2.1区别:String内容是不可变的,StringBuilder内容是可变的
2.2 构造方法
方法名 | 说明 |
public StringBuilder() | 创建一个空白可变字符串对象,不含有任何内容 |
public StringBuilder(String str) | 根据字符串内容来创建可变字符串对象 |
2.3StringBuilder的添加和反转方法
方法名 | 说明 |
public StringBuilder append(任意类型) | 添加数据,并返回对象本身 |
public StringBuilder reverse() | 返回相反的字符序列 |
public class HelloWorld {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
sb.append("hello").append("world").append(1016);
System.out.println("sb:"+sb);
sb.reverse();
System.out.println("sb:"+sb);
}
}
输出:
sb:helloworld1016
sb:6101dlrowolleh
3.3StringBuilder和String相互转换
StringBuilder转换为String:public String toString()
String转换为StringBuilder:public StringBuilder(String s)
public class HelloWorld {
public static void main(String[] args) {
//StringBuilder转换为String
StringBuilder sb = new StringBuilder();
sb.append("hello");
String s=sb.toString();
System.out.println(s);
//String转换为StringBuilder
String s="hello";
StringBuilder sb=new StringBuilder(s);
System.out.println(sb);
}
}
二、集合基础
1.概述:提供一种存储空间可变的存储模型,存储的数据容量可以发生改变
ArrayList<E>:ArrayList<String>,ArrayList<Student>,在出现E的地方使用引用数据类型替换
2.ArrayList构造方法和添加方法
方法名 |
说明 |
public ArrayList() | 创建一个空的集合对象 |
public boolean add(E e) | 将指定元素追加到此集合的末尾 |
public void add(int index,E element) | 在此集合中的指定位置插入指定的元素 |
import java.util.ArrayList;
public class HelloWorld {
public static void main(String[] args) {
ArrayList<String > array = new ArrayList<>();//创建一个空的集合对象
array.add("hello");
array.add("world");//添加指定元素至集合末尾
array.add(1,"hi");//添加指定元素至集合指定位置
}
}
3.ArrayList集合常用方法
方法名 | 说明 |
public boolean remove(Object o) | 删除指定元素,返回删除是否成功 |
public E remove(int index) | 删除指定索引处的元素,返回被删除元素 |
public E set(int index,E element) |
修改指定索引处的元素,返回被修改元素 |
public E get(int index) | 返回指定索引处的元素 |
public int size() | 返回集合中的元素的个数 |
import java.util.ArrayList;
public class HelloWorld {
public static void main(String[] args) {
ArrayList<String > array = new ArrayList<>();//创建一个空的集合对象
array.add("hello");
array.add("world");//添加指定元素至集合末尾
array.add(1,"hi");//添加指定元素至集合指定位置
//System.out.println(array.remove("hi"));//删除指定元素,返回删除是否成功,返回true
//System.out.println(array.remove("haha"));//返回false
//System.out.println(array.remove(1));//删除指定索引处的元素,返回被删除元素,即返回hi
//System.out.println(array.set(1,"yeah"));//将1索引位置元素改为yeah,返回修改前元素hi
//System.out.println(array.get(2));//返回指定索引处元素
//System.out.println(array.size());//返回集合中的元素个数
System.out.println("array:"+array);
}
}
4.案例
4.1ArrayList存储字符串并遍历
import java.util.ArrayList;
public class HelloWorld {
public static void main(String[] args) {
ArrayList<String> array = new ArrayList<>();
array.add("Pig");
array.add("Cat");
array.add("Dog");
for(int i=0;i<array.size();i++){
String s = array.get(i);
System.out.println(s);
}
}
}
4.2存储学生对象并遍历
//学生类
public class Student {
private String name;
private int age;
public Student(){}
public Student(String name,int age){
this.name = name ;
this.age = age ;
}
public void setName(String name){
this.name = name ;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age=age;
}
public int getAge(){
return age;
}
}
1.存储
import java.util.ArrayList;
public class HelloWorld {
public static void main(String[] args) {
//创建集合对象
ArrayList<Student> array = new ArrayList<Student>();
//创建学生对象
Student s1 = new Student("陈尤里",8);
Student s2 = new Student("陈猪猪",18);
Student s3 = new Student("陈大狗",21);
//添加学生对象到集合中
array.add(s1);
array.add(s2);
array.add(s3);
//遍历集合,采用通用遍历格式
for(int i=0;i<array.size();i++){
Student s = array.get(i);
System.out.println(s.getName()+","+s.getAge());
}
}
}
2.键盘录入
mport java.util.ArrayList;
import java.util.Scanner;
public class HelloWorld {
public static void main(String[] args) {
ArrayList<Student> array = new ArrayList<>();
addStudent(array);
addStudent(array);
addStudent(array);
for (int i = 0; i < array.size(); i++) {
Student s = array.get(i);
System.out.println(s.getName() + "," + s.getAge());
}
}
public static void addStudent(ArrayList<Student> array) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入学生姓名:");
String name = sc.nextLine();
System.out.println("请输入学生年龄:");
String age = sc.nextLine();
Student s = new Student();
s.setName(name);
s.setAge(age);
array.add(s);
}
}
4.3学生管理系统
//定义学生类
public class Student {
private String sid;
private String name;
private String age;
private String address;
public Student(){}
public Student(String sid,String name,String age,String address){
this.sid=sid;
this.name = name ;
this.age = age ;
this.address=address;
}
public void setSid(String sid){
this.sid = sid ;
}
public String getSid(){
return sid;
}
public void setName(String name){
this.name = name ;
}
public String getName(){
return name;
}
public void setAge(String age){
this.age=age;
}
public String getAge(){
return age;
}
public void setAddress(String address){
this.address = address ;
}
public String getAddress(){
return address;
}
}
//学生管理系统
import java.util.ArrayList;
import java.util.Scanner;
public class HelloWorld {
public static void main(String[] args) {
ArrayList<Student> array = 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.退出");
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的选择:");
String line = sc.nextLine();
switch (line) {
case "1":
System.out.println("1.添加学生");
addStudent(array);
break;
case "2":
System.out.println("2.删除学生");
deleteStudent(array);
break;
case "3":
System.out.println("3.修改学生");
updateStudent(array);
break;
case "4":
System.out.println("4.查看所有学生");
findAllStudent(array);
break;
case "5":
System.out.println("谢谢使用");
System.exit(0);//JVM退出
}
}
}
public static void addStudent(ArrayList<Student> array) {
Scanner sc = new Scanner(System.in);
String sid;
while (true) {
System.out.print("请输入学号:");
sid = sc.nextLine();
boolean flag = isUsed(array, sid);
if (flag) {
System.out.println("你输入的学号已经被占用,请重新输入");
} else {
break;
}
}
System.out.print("请输入姓名:");
String name = sc.nextLine();
System.out.print("请输入年龄:");
String age = sc.nextLine();
System.out.print("请输入住址:");
String address = sc.nextLine();
Student s = new Student();
s.setSid(sid);
s.setName(name);
s.setAge(age);
s.setAddress(address);
array.add(s);
System.out.println("添加成功");
}
public static void deleteStudent(ArrayList<Student> array) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入要删除学生的学号:");
String sid = sc.nextLine();
int index = -1;
for (int i = 0; i < array.size(); i++) {
Student s = array.get(i);
if (s.getSid().equals(sid)) {
index = i;
break;
}
}
if (index == -1) {
System.out.println("该信息不存在,请重新输入");
} else {
array.remove(index);
System.out.println("删除成功");
}
}
public static void updateStudent(ArrayList<Student> array) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你要修改的学生学号:");
String sid = sc.nextLine();
int index = -1;
for (int i = 0; i < array.size(); i++) {
Student student = array.get(i);
if (student.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 s = new Student();
s.setSid(sid);
s.setName(name);
s.setAge(age);
s.setAddress(address);
array.set(index, s);
System.out.println("修改成功");
}
}
public static void findAllStudent(ArrayList<Student> array) {
if (array.size() == 0) {
System.out.println("无信息,请先添加信息再查询");
return;
}
System.out.println("学号\t\t\t姓名\t\t年龄\t\t住址");
for (int i = 0; i < array.size(); i++) {
Student s = array.get(i);
System.out.println(s.getSid() + "\t\t" + s.getName() + "\t" + s.getAge() + "岁\t" + s.getAddress());
}
}
public static boolean isUsed(ArrayList<Student> array,String sid){
boolean flag = false;
for(int i=0;i<array.size();i++){
Student s = array.get(i);
if(s.getSid().equals(sid)){
flag=true;
break;
}
}
return flag;
}
}