二维数组的使用
1.1、使用foreach遍历二维数组
package com.wlx.day04;
public class TwoArrayDemo
{
/**
*
* @param args
*/
public static void main(String[] args)
{
//声明二维数组,并静态初始化
int[][] a = new int[][]{{22,23,25,26},{32,35,33,36,37,38}};
//使用foreach遍历数组a
//第一个foreach循环是循环的二维数组中的每一个一维数组
for(int[] ar:a)
{
//对二维数组中的每一个一维数组再次进行遍历
for(int arr:ar)
{
//输出二维数组中的元素值
System.out.println(arr);
}
}
}
}
复制数组
使用System类中的arraycopy()方法,可以复制指定数组中元素到目标数组中。
package com.wlx.day04;
public class Demo
{
public static void main(String[] args) {
int[] a = new int[]{2,3,5,6,7,8};
int[] b = new int[3];
/*//按照b数组的长度将数组a中的元素遍历出来,并复制给b数组
for(int i = 0;i < b.length;i++)
{
b[i] = a[i];
}
//遍历数组b
for(int j = 0;j < b.length;j++)
{
System.out.println("b["+j+"] = "+b[j]);
}*/
/*
使用System类中的arraycopy()方法从数组a中复制元素到数组b中
srcPos2是从数组a中的那个下标/索引位置开始复制元素
destPos0是从数组b中的那个下标位置开始复制元素
length 3表示从数组a中复制3个元素到数组b中
*/
System.arraycopy(a,2,b,0,3);
//遍历数组b
for(int j = 0;j < b.length;j++)
{
System.out.println("b["+j+"] = "+b[j]);
}
}
}
数组工具类
数组工具类是java.util.Arrays;
1.1、复制数组
使用Arrays工具类中的copyOf()方法复制指定数组中的元素到目标数组中,copyOfRange()可以指定复制的下标位置。
package com.wlx.day04;
import java.util.Arrays;
public class Demo
{
public static void main(String[] args) {
int[] a = new int[]{2,3,5,6,7,8};
int[] b = new int[3];
/*//按照b数组的长度将数组a中的元素遍历出来,并复制给b数组
for(int i = 0;i < b.length;i++)
{
b[i] = a[i];
}
//遍历数组b
for(int j = 0;j < b.length;j++)
{
System.out.println("b["+j+"] = "+b[j]);
}*/
/*
使用System类中的arraycopy()方法从数组a中复制元素到数组b中
srcPos2是从数组a中的那个下标/索引位置开始复制元素
destPos0是从数组b中的那个下标位置开始复制元素
length 3表示从数组a中复制3个元素到数组b中
*/
// System.arraycopy(a,2,b,0,3);
//遍历数组b
/*for(int j = 0;j < b.length;j++)
{
System.out.println("b1["+j+"] = "+b[j]);
}*/
//int[] b1 = Arrays.copyOf(a,16);
/*
从数组a中下标为2的地方开始复制(包括起始点2),到下标位置5结束复制(不包括结束点),如果超出了数组a
的长度,同样使用int的默认值填充
*/
int[] b1 = Arrays.copyOfRange(a,2,5);
//遍历数组b1
for(int j = 0;j < b1.length;j++)
{
System.out.println("b1["+j+"] = "+b1[j]);
}
//遍历数组b1
for(int j = 0;j < b1.length;j++)
{
System.out.println("b1["+j+"] = "+b1[j]);
}
}
}
1.2、比较两个数组是否相等
package com.wlx.day04;
import java.util.Arrays;
public class ArraysEqualsDemo
{
public static void main(String[] args) {
int[] a = new int[]{2,3,5,6,7,8};
int[] b = new int[]{2,5,3,6,7,8};
//比较数组a和数组b是否相等,如果相等返回true,如果不相等返回false
boolean bl = Arrays.equals(a,b);
System.out.println("bl = "+bl);
}
}
1.3、数组排序
使用工具类Arrays中的sort()方法将数组元素进行排序。
package com.wlx.day04;
import java.util.Arrays;
public class ArraysSortDemo
{
static int[] b;
public static void main(String[] args) {
int[] a = new int[]{62,13,35,63,17,68};
//使用Arrays工具类对数组a进行排序,自然排序(从小到大排序)
Arrays.sort(a);
//遍历数组a
/*for(int i = 0;i < a.length;i++)
{
System.out.println(a[i]);
}*/
//使用数组工具类,直接输出数组中排序后的元素字符串表达形式
System.out.println(Arrays.toString(a));
System.out.println(Arrays.toString(b));//输出结果是"null"
int[] c = new int[]{};
System.out.println(Arrays.toString(c));//输出的结果是[]
}
}
1.4、二分搜索法
使用Arrays类中的binarySearch()方法可以完成二分搜索。
package com.wlx.day04;
import java.util.Arrays;
public class ArraysSortDemo
{
public static void main(String[] args) {
int[] a = new int[]{62,13,35,63,17,68};
//使用Arrays工具类对数组a进行排序,自然排序(从小到大排序)
Arrays.sort(a);
//使用二分搜索法,查找数组a中是否存在16这个元素
int num = Arrays.binarySearch(a,16);
System.out.println("数组a中16的下标是:"+num);
}
}
1.5、数组练习
package com.wlx.day04;
import java.util.Scanner;
public class HotelSystem
{
/**
* 练习:
* 写一个完整的酒店住宿管理系统,
* 即如果有客户入住,则能够进行入住操作,如果有客户退房,
* 能够为客户办理退房手续,如果有客户换房间,同样也能够换房间;
* 能够根据客户姓名查找该客户所住房间号。
* @param args
*/
public static void main(String[] args) {
String[][] roomInfo = new String[][]{
{"张国伟","刘翔","全红婵"},
{"空","邓紫棋","空","迪丽热巴"},
{"空","成龙","沈晨"},
{"马嘉祺","刘耀文"}
};
while(true)
{
System.out.println("---欢迎使用Xxx酒店管理系统---");
System.out.println("---1、办理入住---");
System.out.println("---2、办理退房---");
System.out.println("---3、办理换房---");
System.out.println("---4、查找客户---");
System.out.println("---5、退出系统---");
System.out.println("---欢迎使用Xxx酒店管理系统---");
Scanner s = new Scanner(System.in);
String num = s.next();
if(num.equals("1"))
{
//办理入住
System.out.println("请输入您的姓名:");
String username = s.next();
bh:for(int i = 0;i < roomInfo.length;i++)
{
for(int j = 0;j < roomInfo[i].length;j++)
{
//判断房间是否为空房间
if(roomInfo[i][j].equals("空"))
{
//入住
roomInfo[i][j] = username;
System.out.println(username+"成功入住"+(i+1)+"0"+(i+j)+"房间");
break bh;
}
}
}
System.out.println("入住后的信息如下:");
for(int i = 0;i < roomInfo.length;i++)
{
for(int j = 0;j < roomInfo[i].length;j++)
{
System.out.println((i+1)+"0"+(i+j)+"房间"+roomInfo[i][j]+"在住");
}
}
}
else if(num.equals("2"))
{
//办理退房
System.out.println("请输入要退房间的姓名:");
String username = s.next();
bh:for(int i = 0;i < roomInfo.length;i++)
{
for(int j = 0;j < roomInfo[i].length;j++)
{
//判断房间是否为要退房间的用户
if(roomInfo[i][j].equals(username))
{
//退房
roomInfo[i][j] = "空";
System.out.println(username+"办理退房"+(i+1)+"0"+(i+j)+"房间成功");
break bh;
}
}
}
System.out.println("退房后的信息如下:");
for(int i = 0;i < roomInfo.length;i++)
{
for(int j = 0;j < roomInfo[i].length;j++)
{
System.out.println((i+1)+"0"+(i+j)+"房间"+roomInfo[i][j]+"在住");
}
}
}
else if(num.equals("3"))
{
//办理换房
System.out.println("请输入要换房间的姓名:");
String username = s.next();
bh:for(int i = 0;i < roomInfo.length;i++)
{
for(int j = 0;j < roomInfo[i].length;j++)
{
//判断房间是否为要换房间用户
if(roomInfo[i][j].equals(username))
{
//置空该房间
roomInfo[i][j] = "空";
for(int k = 0;k < roomInfo.length;k++)
{
for(int h = 0;h < roomInfo[k].length;h++)
{
if(roomInfo[k][h].equals("空"))
{
roomInfo[k][h] = username;
System.out.println(username+"办理换房"+(k+1)+"0"+(k+h)+"房间成功");
break bh;
}
}
}
}
}
}
System.out.println("换房后的信息如下:");
for(int i = 0;i < roomInfo.length;i++)
{
for(int j = 0;j < roomInfo[i].length;j++)
{
System.out.println((i+1)+"0"+(i+j)+"房间"+roomInfo[i][j]+"在住");
}
}
}
else if (num.equals("4"))
{
//查找客户
System.out.println("请输入您要查询的姓名:");
String username = s.next();
bh:for(int i = 0;i < roomInfo.length;i++)
{
for(int j = 0;j < roomInfo[i].length;j++)
{
//判断房间是否为要查询用户的房间
if(roomInfo[i][j].equals(username))
{
System.out.println(username+"住在"+(i+1)+"0"+(i+j)+"房间");
break bh;
}
}
}
}
else if(num.equals("5"))
{
System.out.println("您已退出系统");
return;
}
else
{
System.out.println("输入错误,请重新输入!");
}
}
}
}
面向对象
1.1、面向对象和面向过程
想吃纸包鱼。
想吃钵钵鸡。
面向过程:
去菜场买鱼—>杀鱼—>准备材料(蒜香/包鱼的纸)—>做纸包鱼—>先放材料—>用纸把材料和鱼包在一起—>等待时间—>吃到纸包鱼。
面向对象:
点外卖。
去饭店吃。
1.2、package
package包.
一个类文件中只能有0~1个package包的声明,并且在除注释以外的第一行 。
包声明规则:
1、所有包名都全部小写。
2、包与包之间的分隔符是英文的点。
3、如果是公司或组织,包名是域名或组织倒过来写,不包括www。
包的作用:
1、区分同名的类。
2、划分模块。
3、分割属性或方法的访问权限。
1.3、方法/函数
方法用于指定一个类的行为或功能。
方法用于指定一个类的行为或功能。
方法声明的格式:
[访问权限修饰符] [修饰符] 返回值类型 方法名(参数列表)[抛出的异常]
{
方法体/函数体;
}
备注:1、参数列表,该方法可以有多个参数,参数其实就是定义一个变量,并且没有初始化的参数,参数与参数之间使用英文的逗号分割,参数列表可以有0~n个变量参数。
2、方法体中主要写的是行为的具体实现过程或功能的具体实现过程。
3、void表示该方法什么也不返回
Infinity表示正无穷大
-Infinity表示负无穷大
NaN not an number 表示不是一个数值
package com.wlx.day04;
public class MethodDemo
{
/**
* 声明一个方法/函数
* static表示修饰符,修饰该方法method是一个静态的方法
* 此处的int表示使用/调用method方法时,返回int类型的数据
* String s表示该method方法有一个String类型的参数,参数名叫s
* return 6表示调用/使用method方法时,返回一个int类型的6给调用者
*/
static int method(String s)
{
return 6;
}
/**
* void表示该方法method2没有返回值类型,即什么都不返回
* @param a
* @param b
*/
static void method2(int a ,int b)
{
//使用形参(形式上的参数,即只有定义没有初始化的变量)a和b
System.out.println("a = "+a);
System.out.println("b = "+b);
}
public static void main(String[] args) {
//使用method方法
System.out.println(method("hello"));
//使用method2方法
method2(3,6);
}
}