一篇文章带你了解JAVA面对对象应用
常用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 { /** The value is used for character storage. */ 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); //创建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("您输入错误次数过多,请联系管理员"); } else { System.out.println("输入失败,您还有"+(2-i)+"尝试机会"); } } } } }
StringBuilder类
一、基本内容:
StringBuilder 是一个可变的字符串类,我们可以把它看成是一个容器,这里的可变指的是 StringBuilder 对象中的内容是可变的
二、构造方法:
常用:
代码展示:
StringBuilder s1 = StringBuilder(hello); s2 = s1.append("world"); (s1 == s2) //
结果为true
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类概述
- 什么是集合
提供一种存储空间可变的存储模型,存储的数据容量可以发生改变
- ArrayList集合的特点
底层是数组实现的,长度可以变化
- 泛型的使用
用于约束集合中存储元素的数据类型
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.定义学生类,包含以下成员变量 :
private String sid
// 学生id
private String name
// 学生姓名
private String age
// 学生年龄
private String address
// 学生所在地
2.学生管理系统主界面的搭建步骤 :
首先用输出语句完成主界面编写, 接着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; } } } }
3.学生管理系统的添加学生功能实现步骤 :
定义一个方法,接收ArrayList集合 ,方法内完成添加学生的功能 : 最后调用添加学生方法
a.键盘录入学生信息
b.根据录入的信息创建学生对象
c.将学生对象添加到集合中
d.提示添加成功信息
4.学生管理系统的查看学生功能实现步骤 :
定义一个方法,接收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("修改成功"); } }
退出系统
总结
本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注猪先飞的更多内容!
相关文章
- 这篇文章主要介绍了如何利用java语言实现经典《复杂迷宫》游戏,文中采用了swing技术进行了界面化处理,感兴趣的小伙伴可以动手试一试...2022-02-01
java 运行报错has been compiled by a more recent version of the Java Runtime
java 运行报错has been compiled by a more recent version of the Java Runtime (class file version 54.0)...2021-04-01- 这篇文章主要介绍了在java中获取List集合中最大的日期时间操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-15
- 这篇文章主要介绍了教你怎么用Java获取国家法定节假日,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下...2021-04-23
- 这篇文章主要介绍了Java如何发起http请求的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-31
- 说起C#和Java这两门语言(语法,数据类型 等),个人以为,大概有90%以上的相似,甚至可以认为几乎一样。但是在工作中,我也发现了一些细微的差别...2020-06-25
- 这篇文章主要介绍了解决Java处理HTTP请求超时的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-29
- 这篇文章主要介绍了java 判断两个时间段是否重叠的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-15
- 这篇文章主要介绍了超简洁java实现双色球若干注随机号码生成(实例代码),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-04-02
- 这篇文章主要介绍了Java生成随机姓名、性别和年龄的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-01
java 画pdf用itext调整表格宽度、自定义各个列宽的方法
这篇文章主要介绍了java 画pdf用itext调整表格宽度、自定义各个列宽的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-31- 这篇文章主要介绍了java正则表达式判断前端参数修改表中另一个字段的值,需要的朋友可以参考下...2021-05-07
Java使用ScriptEngine动态执行代码(附Java几种动态执行代码比较)
这篇文章主要介绍了Java使用ScriptEngine动态执行代码,并且分享Java几种动态执行代码比较,需要的朋友可以参考下...2021-04-15- 这篇文章主要介绍了Java开发实现人机猜拳游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-08-03
- 这篇文章主要介绍了Java List集合返回值去掉中括号('[ ]')的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-29
Java中lombok的@Builder注解的解析与简单使用详解
这篇文章主要介绍了Java中lombok的@Builder注解的解析与简单使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-01-06- 下面小编就为大家带来一篇java中String类型变量的赋值问题介绍。小编觉得挺不错的。现在分享给大家,给大家一个参考。...2016-03-28
Java 8 Stream 的终极技巧——Collectors 功能与操作方法详解
这篇文章主要介绍了Java 8 Stream Collectors 功能与操作方法,结合实例形式详细分析了Java 8 Stream Collectors 功能、操作方法及相关注意事项,需要的朋友可以参考下...2020-05-20- 这篇文章主要介绍了Java线程池中的各个参数如何合理设置操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-06-19
- 在Java中,我们可以利用多线程来最大化地压榨CPU多核计算的能力,下面这篇文章主要给大家介绍了关于java中多线程与线程池基本使用的相关资料,需要的朋友可以参考下...2021-09-13