常用API、static、数组复制、双色球练习与酒店管理系统
目录
- JDK中的类(API -> 应用程序接口,工具-类)
- 学习类
- 接触过的类
- 软件包package:
- 常用类[一]
- 1.Random: 构造方法 new Random()
- 2.String - 字符串 -
- 3.Scanner``
- static: 静态的
- 类什么时候会加载?
- 数组复制的方法
- 练习:
- 生成一套双色球号码
- 酒店管理系统 - 面向对象版本
- class Guest
- class Hotel
- Main
- Room
JDK中的类(API -> 应用程序接口,工具-类)
学习类
学习类:
就是学习 构造方法 -> 如何创建对象
成员变量 -> 基本可以忽略
成员方法 -> 功能
接触过的类
System: java.lang.System
Scanner: java.util.Scanner
Math: java.lang.Math
String: java.lang.String
Arrays: java.util.Arrays
程序中,默认import的软件包就是 java.lang
软件包package:
java.lang: 常用类
java.util: 工具类
java.io: 输入输出相关类
java.sql: 数据库相关
java.net: 网络相关
java.text: 格式化相关
常用类[一]
1.Random: 构造方法 new Random()
int nextInt(): 产生一个随机整数int nextInt(int n): 产生一个0~n的随机数
// 1.创建Random对象Random ran = new Random();// 2.使用方法int a = ran.nextInt();// 0~20之间随机数int b = ran.nextInt(20);
比较Math.random() 和 Random 的使用
1.Math.random() -> 不需要对象,直接调用
Random -> 需要创建对象
2.Math.random() -> 返回double, 范围固定0~1(0取的到,1取不到)
Random中的nextInt() -> 返回int, 范围可指定
2.String - 字符串 -
字符数组直接打印, 就是字符串 -> JVM转换的
字符串特点:
1.直接赋值的字符串, 都存在字符串常量池中, 优化
2.字符串本身不可变
3.字符串不能用 == 来比较
1.构造方法
String s = “hello”;
String()
String(String)
String(char[])
String(char[], int offset, int count)
String(byte[])
String(byte[], int offset, int length)
2.常用API
char charAt(int index)
char[] toCharArray()
boolean equals(String)
String substring(int start, int end)
String substring(int start)
boolean startsWith(String)
– 从offset位置开始, 是否以指定字符串打头
boolean startsWith(String, int offset)
boolean endsWith(String)
int indexOf(char)
int indexOf(String)
– 从fromIndex开始往后, 第一次出现char的位置
int indexOf(char, int fromIndex)
int indexOf(String, int fromIndex)
int length()
boolean equalsIgnoreCase(String)
– 去掉字符串左右两边的空白字符
String trim()
API(1):
public class Demo05StringAPI {public static void main(String[] args) {String s = "hello@qq.com";String s1 = new String("hello");// 1.获得某一个下标对应的字符char c = s.charAt(0);System.out.println("charAt: " + c);// 2.字符串比较不能用 s==s1 s1==sboolean b = s1.equals(s); // s.equals(s1)System.out.println("equals: " + b);// 3.将字符串s, 转换成字符数组char[] chs = s.toCharArray();System.out.println("toCharArray: " + Arrays.toString(chs));// 4.统计字符串中的字符个数, 长度int length = s.length();System.out.println("length: " + length);// 5.判断是否以xx开头 +86boolean b1 = s.startsWith("+86");System.out.println("startsWith: " + b1);// 6.判断是否以xx结尾 @qq.comboolean b2 = s.endsWith("@qq.com");System.out.println("endsWith: " + b2);// 7.获得字符串中指定字符第一次出现的位置, 没有字符, 返回-1int index = s.indexOf('@');System.out.println("indexOf: " + index);// 8.截取字符串, s本身没变String sub = s.substring(0, 5);System.out.println("substring: " + sub);}
}
API(2):
public class Demo06StringAPI2 {public static void main(String[] args) {String s = " \t hel lo \n ";// 1.截取字符串, 从指定位置截取到末尾String sub = s.substring(3);System.out.println("substring: " + sub);// 2.是否以指定字符串开始, 开始位置是offsetboolean b = s.startsWith("lo", 3);System.out.println("startsWith: " + b);// 3.获得指定字符串出现的位置int index = s.indexOf("qq");System.out.println("index: " + index);// 4.从指定下标开始往后, 指定字符串第一次出现的位置int index1 = s.indexOf("qq", 3);System.out.println("index: " + index1);// 5.忽略大小写比较boolean t = s.equalsIgnoreCase("Hello");System.out.println("equals: " + t);// 例子: 用户自己输入邮箱地址, 获得对应的用户名String trim = s.trim();System.out.println(trim);}
concat :将指定的字符串连接到该字符串的末尾。
例子: "cares".concat("s") returns "caress""to".concat("get").concat("her") returns "together"
toUpperCase:toUpperCase() 方法用于一个新的字符串,在其中 stringObject 的所有小写字符 全部被转换为了大写字符。
<script type="text/javascript">var str="Hello World!"
document.write(str.toUpperCase())</script>
toLowerCase:用于一个新的字符串,在其中 stringObject 的所有大写字符全部被转换为了小写字符。
contains:public boolean contains(CharSequence s)当且仅当此字符 串包含指定的char值序列时才返回true。
replace:
例子: "mesquite in your cellar".replace('e', 'o')returns "mosquito in your collar""the war of baronets".replace('r', 'y')returns "the way of bayonets""sparring with a purple porpoise".replace('p', 't')returns "starring with a turtle tortoise""JonL".replace('q', 'x') returns "JonL" (no change)
3.Scanner``
console对象的创建: Scanner console = new Scanner(System.in);
Scanner console = new Scanner(System.in);// 遇到回车, 才读取结束String s1 = console.nextLine();System.out.println("字符串: " + s1);int a = console.nextInt();System.out.println("整数: " + a);double d = console.nextDouble();System.out.println("小数: " + d);// 遇到空格或者回车, 就读取结束String s = console.next();System.out.println("next字符串: " + s);
有一些类的方法在使用时, 不需要创建对象
static: 静态的
1.修饰成员变量
属于类的, 所有对象共用
通过类名.调用
只有一个
2.修饰方法
3.修饰代码块
静态代码块 -> 给类初始化
在类加载时执行的
作用: 用来执行消耗比较大的代码
xx.java -> xx.class -> 类加载 -> JVM方法区中
静态的成员变量是和类一起加载到方法区中的
结论: 当使用静态成员变量时, 对象不一定存在
类什么时候会加载?
第一次使用类会加载, 并且只加载一次
使用类的情况:
创建对象
调用类的静态成员变量
调用类的静态方法
类加载会执行什么代码?
1.静态代码块
2.静态成员变量
java.lang.Math:
double Math.random(): 返回0.0~1.0 之间的随机数
double Math.pow(double a, double b): 返回 a 的 b 次幂
java.util.Arrays:
String Arrays.toString(数组): 以[元素1, 元素2]格式打印数组
int[] Arrays.copyOf(int[] src, int newLength)
void sort(int[] arr): 按照升序排序, 只支持基本数据类型和String
java.util.System:
static void arraycopy(int[] src, int srcPos, int[] dest, int destPos, int length )
long currentTimeMillis();
数组复制的方法
数组 [1,2,3,4,5], 添加一个 6
1.数组扩容: 创建新的数组
int[] arr = {1,2,3,4,5};
arr = new int[6]; // [1,2,3,4,5,0]
2.将原来的元素复制到新数组中
数组复制:
void System.arraycopy(src, srcPos, dest, destPos, count)
int[] arr = {1,2,3,4,5};// 1.数组扩容int[] b = new int[arr.length+1];// 2.数组复制/*参数1: 要复制的数组 - 源数组参数2: 从要源数组的哪个位置开始复制参数3: 要复制到哪个数组中 - 目标数组参数4: 要从b数组的哪个位置开始存放值参数5: 要复制几个元素*/System.arraycopy(arr, 0, b, 0, arr.length);// 3.再最后加一个6b[b.length - 1] = 6;// 4.将arr替换arr = b;
// 需求: 让arr变成 {1,2,3,4,5,6}int[] arr = {1,2,3,4,5};// 参数1: 要复制的数组 -> 源数组// 参数2: 要生成的新数组的长度// 返回值: 生成的新数组arr = Arrays.copyOf(arr, arr.length + 1);arr[arr.length - 1] = 6;
练习:
生成一套双色球号码
红球: 1~33 随机, 不能重复, 生成5个号
按照升序排序
蓝球: 1~16 随机, 1个 加到数组的最后
int[] red = new int[5];
扩容1位, 加蓝球
import java.util.Arrays;public class Exer01 {public static void main(String []args){int[] red =new int[5];int num1=(int)(Math.random()*33+1);red[0] = num1;for(int i=1;i<red.length;i++){int num2=(int)(Math.random()*33+1);//1~33的整数for(int j=i;j>=0;j--) {if (num2== red[j]) {i--;break;}else {red[i] = num2;}}}Arrays.sort(red);red=Arrays.copyOf(red,red.length+1);red[red.length-1]=(int)(Math.random()*16+1);System.out.println(Arrays.toString(red));}
}
酒店管理系统 - 面向对象版本
酒店类:
房间[][] rooms
功能/方法:
in(房间号, 客户名) - 入住
out(房间号) - 退房
show() - 查房
房间类:
房间号\客户-null
构造方法(房间号)
客户类:
客户名
class Guest
package com.zzxx.hotel;public class Guest {String name;Guest(String name){this.name = name;}
}
class Hotel
package com.zzxx.hotel;public class Hotel {Room[][] rooms;Hotel() {//构造方法rooms = new Room[8][6];for (int i = 0; i < rooms.length; i++) {for (int j = 0; j < rooms[i].length; j++) {rooms[i][j] = new Room((i + 1) * 1000 + j + 1);}}}void in(int roomNum, String name) {int i = roomNum / 1000 - 1;int j = roomNum % 1000 - 1;if (rooms[i][j].guest != null){System.out.println("该房间已有人, 请重新选择!");return;}rooms[i][j].guest = new Guest(name);System.out.println("入住成功, 房间号: " + roomNum);}void out(int roomNum) {int i = roomNum / 1000 - 1;int j = roomNum % 1000 - 1;if (rooms[i][j].guest == null) {System.out.println("该房间未住人!");return;}rooms[i][j].guest = null;System.out.println("退房成功");}void show() {for (int i = 0; i < rooms.length; i++) {for (int j = 0; j < rooms[i].length; j++) {System.out.print(rooms[i][j].roomNum + "\t");}System.out.println();for (int j = 0; j < rooms[i].length; j++) {if (rooms[i][j].guest != null) {System.out.print(rooms[i][j].guest.name + "\t");} else {System.out.print(rooms[i][j].guest + "\t");}}System.out.println();}}
}
Main
package com.zzxx.hotel;import java.util.Scanner;public class Main {public static void main(String[] args) {Hotel hotel = new Hotel();Scanner console = new Scanner(System.in);System.out.println("欢迎使用酒店管理系统!");loop:while (true) {System.out.println("请输入指令(show-查房,in-入住,out-退房,exit-退出系统):");String command = console.next();switch (command) {case "show":hotel.show();break;case "in":System.out.println("请输入房间号和入住人姓名,例如(1001 张三):");int num = console.nextInt();String name = console.next();hotel.in(num, name);break;case "out":System.out.println("请输入房间号:");int roomNum = console.nextInt();hotel.out(roomNum);break;case "exit":System.out.println("感谢使用,再见!");break loop;}}}
}
Room
package com.zzxx.hotel;public class Room {int roomNum;Guest guest;Room(int roomNum) {this.roomNum = roomNum;}
}
常用API、static、数组复制、双色球练习与酒店管理系统相关推荐
- Java 双色球和简单酒店管理系统
Java 双色球和简单酒店管理系统 1.练习1 双色球 2.练习2 酒店管理系统 1.练习1 双色球 题目: 生成一套双色球号码 红球: 1~33 随机, 不能重复, 生成5个号 按照升序排序 蓝球: ...
- 内置对象的API Array数组对象 String字符串对象 json字符串 JSON对象 js作用域及变量预解析 引用类型与值类型区别 共享引用 基本包装类型 数组去重
01-内置对象的API a.Date对象获取时间 b.Array对象数组加工 c.String对象字符串加工 d.json字符串的语法格式 e.JSON对象的字符串与对象转换应用 02-JS作用域 a ...
- java中常用API、Scanner类、匿名对象、Random类、ArrayList类、对象数组
java中常用API: API:Application Programming Interface,应用程序编程接口.Java API是JDK中提供给我们使用的类的说明文档.这些类将底层的代码实现封装 ...
- Js常用数组常用API
JS对数组进行操作的常用API JS中提供了非常多的对数组进行操作的API,这里给出一些个人用到的API,仅供参考. 能够对原数组进行修改的API共有7个: shift,pop , unshift,p ...
- JavaScript基础(四)对象、数组、对象与数组的常用API
目录 一.对象 1. 对象的创建 2. 对象属性的访问 3. 遍历对象属性 4. 检测属性是否存在 5. 对象的方法 二.数组对象 1. 数组的创建 2. 访问数组 3. 数组长度 4. 数组的遍历 ...
- JavaSE_提高--static关键字、多态、部分常用API
JavaSE提高 JavaSE提高 static关键字 static访问 static内存机制 static的使用 工具类 代码块 静态代码块 构造代码块 static单例模式 什么是设计模式(Des ...
- Object类、常用API
# [Object类.常用API] ## 主要内容 * Object类 * Date类 * DateFormat类 * Calendar类 * System类 * StringBuilder类 * 包 ...
- 一、Java 面向对象高级——Object类、常用API
day01[Object类.常用API] 主要内容 Object类 Date类 DateFormat类 Calendar类 System类 StringBuilder类 包装类 教学目标 -[ ] 能 ...
- 01-object类,常用API
声明:此博客来自于黑马程序员学习笔记,并非商用,仅仅是为了博主个人日后学习复习用,如有冒犯,请联系qq208820388立即删除博文,最后,来跟我一起喊黑马牛逼黑马牛逼黑马牛逼 01[Object类. ...
最新文章
- flume学习(四):Flume Interceptors的使用
- java生成word 框勾_Java 使用模板生成 Word 文件---基于 Freemarker 模板框架
- python编译成dll文件_用vc生成可被python调用的dll文件
- 2021爱智先行者—(2)零基础APP开发实例
- 互联网日报 | 7月31日 星期六 | 小米手机销量晋升全球第二;苏宁易购上半年亏损31.9亿元;亚马逊被欧盟罚款8.88亿美元...
- Azure Services Platform
- PIMPL(private implementation或者pointer to implementation)
- 一个简单的实现了智能虚拟女友—图灵机器人
- android分享数据到不同平台组件化
- UBUNTU14.0.4安装eclipse
- 年度最具特色生活类APP
- 厦门大学计算机考研复试线2021,2021浙江大学、中科大、厦门大学考研复试分数线公布!...
- 企业路由器和办公室局域网无线路由器设置
- 《一年学完mit计算机课程》,用了这种学习方法,他一年学完了33门MIT计算机课程...
- 中国电信9月在京推5G新号段,资费199元至599元?
- Java 调用Google Map Api解析地址,解析经纬度实例
- python微信图片dat转码(整理版)
- 工程经济—价值工程在工程建设中的应用
- [网络篇]ESP8266-SDK教程(三)之TCP通信Server-Client
- Python+opencv学习记录8:边缘保留滤波(EPF)
热门文章
- 在VisualBasic6.0中实现0.5数值修约
- C语言的函数是什么?
- 登录网络计算机提示用户名错误,局域网访问共享时提示登录失败:未知的用户名或错误密码 怎么回事...
- java毕业设计大学生能力建设项目管理系统Mybatis+系统+数据库+调试部署
- 英语单词复数到底读s还是z?
- 云原生时代,OAM模型加持下的应用交付与管理实践
- 华为是一家怎样的企业?
- 如何用代码画出一幅好看的画
- php 正方,用php的CURL模拟登录正方教务系统
- 服务器共享cad修改不了,CAD图纸打开后无法编辑无法修改怎么办