目录

  • 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、数组复制、双色球练习与酒店管理系统相关推荐

  1. Java 双色球和简单酒店管理系统

    Java 双色球和简单酒店管理系统 1.练习1 双色球 2.练习2 酒店管理系统 1.练习1 双色球 题目: 生成一套双色球号码 红球: 1~33 随机, 不能重复, 生成5个号 按照升序排序 蓝球: ...

  2. 内置对象的API Array数组对象 String字符串对象 json字符串 JSON对象 js作用域及变量预解析 引用类型与值类型区别 共享引用 基本包装类型 数组去重

    01-内置对象的API a.Date对象获取时间 b.Array对象数组加工 c.String对象字符串加工 d.json字符串的语法格式 e.JSON对象的字符串与对象转换应用 02-JS作用域 a ...

  3. java中常用API、Scanner类、匿名对象、Random类、ArrayList类、对象数组

    java中常用API: API:Application Programming Interface,应用程序编程接口.Java API是JDK中提供给我们使用的类的说明文档.这些类将底层的代码实现封装 ...

  4. Js常用数组常用API

    JS对数组进行操作的常用API JS中提供了非常多的对数组进行操作的API,这里给出一些个人用到的API,仅供参考. 能够对原数组进行修改的API共有7个: shift,pop , unshift,p ...

  5. JavaScript基础(四)对象、数组、对象与数组的常用API

    目录 一.对象 1. 对象的创建 2. 对象属性的访问 3. 遍历对象属性 4. 检测属性是否存在 5. 对象的方法 二.数组对象 1. 数组的创建 2. 访问数组 3. 数组长度 4. 数组的遍历 ...

  6. JavaSE_提高--static关键字、多态、部分常用API

    JavaSE提高 JavaSE提高 static关键字 static访问 static内存机制 static的使用 工具类 代码块 静态代码块 构造代码块 static单例模式 什么是设计模式(Des ...

  7. Object类、常用API

    # [Object类.常用API] ## 主要内容 * Object类 * Date类 * DateFormat类 * Calendar类 * System类 * StringBuilder类 * 包 ...

  8. 一、Java 面向对象高级——Object类、常用API

    day01[Object类.常用API] 主要内容 Object类 Date类 DateFormat类 Calendar类 System类 StringBuilder类 包装类 教学目标 -[ ] 能 ...

  9. 01-object类,常用API

    声明:此博客来自于黑马程序员学习笔记,并非商用,仅仅是为了博主个人日后学习复习用,如有冒犯,请联系qq208820388立即删除博文,最后,来跟我一起喊黑马牛逼黑马牛逼黑马牛逼 01[Object类. ...

最新文章

  1. flume学习(四):Flume Interceptors的使用
  2. java生成word 框勾_Java 使用模板生成 Word 文件---基于 Freemarker 模板框架
  3. python编译成dll文件_用vc生成可被python调用的dll文件
  4. 2021爱智先行者—(2)零基础APP开发实例
  5. 互联网日报 | 7月31日 星期六 | 小米手机销量晋升全球第二;苏宁易购上半年亏损31.9亿元;亚马逊被欧盟罚款8.88亿美元...
  6. Azure Services Platform
  7. PIMPL(private implementation或者pointer to implementation)
  8. 一个简单的实现了智能虚拟女友—图灵机器人
  9. android分享数据到不同平台组件化
  10. UBUNTU14.0.4安装eclipse
  11. 年度最具特色生活类APP
  12. 厦门大学计算机考研复试线2021,2021浙江大学、中科大、厦门大学考研复试分数线公布!...
  13. 企业路由器和办公室局域网无线路由器设置
  14. 《一年学完mit计算机课程》,用了这种学习方法,他一年学完了33门MIT计算机课程...
  15. 中国电信9月在京推5G新号段,资费199元至599元?
  16. Java 调用Google Map Api解析地址,解析经纬度实例
  17. python微信图片dat转码(整理版)
  18. 工程经济—价值工程在工程建设中的应用
  19. [网络篇]ESP8266-SDK教程(三)之TCP通信Server-Client
  20. Python+opencv学习记录8:边缘保留滤波(EPF)

热门文章

  1. 在VisualBasic6.0中实现0.5数值修约
  2. C语言的函数是什么?
  3. 登录网络计算机提示用户名错误,局域网访问共享时提示登录失败:未知的用户名或错误密码 怎么回事...
  4. java毕业设计大学生能力建设项目管理系统Mybatis+系统+数据库+调试部署
  5. 英语单词复数到底读s还是z?
  6. 云原生时代,OAM模型加持下的应用交付与管理实践
  7. 华为是一家怎样的企业?
  8. 如何用代码画出一幅好看的画
  9. php 正方,用php的CURL模拟登录正方教务系统
  10. 服务器共享cad修改不了,CAD图纸打开后无法编辑无法修改怎么办