2.1 题目要求
2.2 代码呈现
2.3 问题展现
1、数组模拟栈数据结构
===========
1.1 题目要求
1)这个栈可以存储java中的任何引用类型的数据;
2)在栈中提供push方法模拟压栈;(栈满了,要有提示信息)
3)在栈中提供pop方法模拟压栈;(栈空了,要有提示信息)
4)编写测试程序,new栈对象,调用push pop方法来模拟压栈弹栈操作;
5)假设栈的默认初始化容量是10;
1.2 代码呈现
public class Text {
public static void main(String[] args) {
//创建一个栈对象,初始化容量是10个
Stack s = new Stack();
s.push(“12345ty”);
s.push(new Object());
s.push(new Object());
s.push(new Object());
s.push(new Object());
s.pop();
s.pop();
s.pop();
s.pop();
s.pop();
s.pop();
//可以使用for循环进行压栈和弹栈
}
}
class Stack{
//存储任何引用类型数据的数组
private Object[] elements;
//有参构造方法
public Stack(Object[] elements) {
this.elements = elements;
}
//无参构造方法
public Stack() {
//一维数组动态初始化
//默认初始化容量为10
this.elements = new Object[10];
}
//栈帧(永远指向栈顶元素)
private int index=-1;
//压栈方法
public void push(Object obj){
if(this.index >= this.elements.length-1){
System.out.println(“栈内存已满,压栈失败”);
return;
}
index++;
elements[index] = obj;
System.out.println(obj + “元素,压栈成功,栈帧指向” + index);
}
//弹栈方法
public void pop(){
if(this.index <= -1) {
System.out.println(“栈内存已空,弹栈栈失败”);
}
else
System.out.println(elements[index] + “元素,弹栈成功,栈帧指向” + --index);
}
//static实例变量的get方法
public Object[] getElements() {
return elements;
}
//static实例变量的set方法
public void setElements(Object[] elements) {
this.elements = elements;
}
//实例变量栈帧的get方法
public int getIndex() {
return index;
}
//实例变量栈帧的set方法
public void setIndex(int index) {
this.index = index;
}
}
1.3 问题展现
1)为什么选择Object类型数组?
因为这个栈可以存储java中任何引用类型的数据
new Animal( )对象和new Peaple( )对象包括字符串都可以放进去,因为Animal和Peaple的超级费雷都是Object;
Object [ ] 是一个万能的口袋,这个口袋可以装任何引用数据类型的数据
2)关于字符串
字符串其实是一个字符串对象,但在java中字符串有优待,不需要new也是一个对象
String s = “asdfghj”;
String s = new String(“asdfghj”);
3)关于set和get方法
在类中,大多采用封装机制,所以set和get方法有时候虽然用不到,但也需要写上
4)数组的初始化
数组的初始化可以在定义时直接初始化
this.elements = new Object [10];//赋值也是在构造方法调用的时候初始化
也可以在构造方法中初始化
public Stack() {
this.elements = new Object[10];
}
5)关于System.out.println()方法
所有的System.out.println()方法在执行时,如果输出引用,自动调用引用的toString()方法
e.g.:System.out.println(obj + “元素,压栈成功”);这里的obj其实调用了toString()方法
2、酒店管理系统
========
2.1 题目要求
为某酒店编写程序:酒店管理程序,模拟订房、退房、打印所有房间状态等功能
1)该系统的用户是:酒店前台
2)酒店使用一个二维数组来模拟"Room[ ] [ ] rooms;"
3)酒店中的每一个房间应该是一个java对象:Room;
4)每一个房间Room应该有:房间编号、房间类型属性、房间是否为空;
5)系统对外提供的功能:
可以预定房间:用户输入房间编号,订房
可以退房:用户输入房间编号,退房;
可以查看所有房间的状态:用户输入某个指令应该可以查看所有房间的状态
2.2 代码呈现
import java.util.Scanner;
public class HotelSystem {
public static void main(String[] args) {
//创建酒店对象
Hotel hotel = new Hotel();
Scanner s = new Scanner(System.in);
Scanner roomNo = new Scanner(System.in);
meau();
while(true){
int i = s.nextInt();
switch (i){
case 1:
hotel.print();break;
case 2:
System.out.println(“请输入预定的房间号”);
hotel.order(roomNo.nextInt());break;
case 3:
System.out.println(“请输入退订的房间号”);
hotel.exit(roomNo.nextInt());break;
case 0:
return;
}
}
}
public static void meau(){
//欢迎页面
System.out.println("_____________________________________________________________________ ");
System.out.println(“**********************┍------------------------┑ *******************”);
System.out.println(“********************** 欢迎使用酒店管理系统 ********************”);
System.out.println(“**********************┕------------------------┙ *******************”);
System.out.println(“xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx菜单xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”);
System.out.println(“====================================================================”);
System.out.println(“… 1.查看房间 … 2.表示订房 …”);
System.out.println(“… 3.表示退房 … 0.退出系统 …”);
System.out.println(“____________________________________________________________________”);
System.out.println(“请输入功能编号:”);
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
学习分享,共勉
这里是小编拿到的学习资源,其中包括“中高级Java开发面试高频考点题笔记300道.pdf”和“Java核心知识体系笔记.pdf”文件分享,内容丰富,囊括了JVM、锁、并发、Java反射、Spring原理、微服务、Zookeeper、数据库、数据结构等大量知识点。同时还有Java进阶学习的知识笔记脑图(内含大量学习笔记)!
资料整理不易,读者朋友可以转发分享下!
Java核心知识体系笔记.pdf
中高级Java开发面试高频考点题笔记300道.pdf
架构进阶面试专题及架构学习笔记脑图
Java架构进阶学习视频分享
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
、并发、Java反射、Spring原理、微服务、Zookeeper、数据库、数据结构等大量知识点。同时还有Java进阶学习的知识笔记脑图(内含大量学习笔记)!**
资料整理不易,读者朋友可以转发分享下!
Java核心知识体系笔记.pdf
[外链图片转存中…(img-XDEpzztB-1712693056011)]
中高级Java开发面试高频考点题笔记300道.pdf
[外链图片转存中…(img-HuHDSXYQ-1712693056012)]
架构进阶面试专题及架构学习笔记脑图
[外链图片转存中…(img-4OSXdYXv-1712693056012)]
Java架构进阶学习视频分享
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!