Java实例——为新员工分配部门

技术关键:
1、Switch多分支语句的使用,该语句只支持对常量的判断;
2、对字符串的哈希码进行判断,也就是把String类的hashCode()方法返回值作为Switch语法的表达式,case关键字之后跟随的是各种字符串常量的哈希码整数值。
 
知识点:
哈希码
    在Java中,哈希码代表对象的特征。可以根据的自己的需求,采用不同的算法产生的一个Int型数字。
几个常用的哈希码的算法:
    1、Object类的hashCode.返回对象的内存地址经过处理后的结构,由于每个对象的内存地址都不一样,所以哈希码也不一样。
    2、String类的hashCode.根据String类包含的字符串的内容,根据一种特殊算法返回哈希码,只要字符串所在的空间相同,返回的哈希码也相同。
    3、Integer类,返回的哈希码就是Integer对象里所包含的那个整数的数值。
 
实现过程:
 1 package test;
 2 import java.util.Scanner;
 3 public class Example {
 4     public static void main(String[] args) {
 5         Scanner scan = new Scanner(System.in);
 6         System.out.println("请输入新员工的姓名:");
 7         String name = scan.nextLine();        // 接收员工名称
 8         System.out.println("请输入新员工应聘的编程语言:");
 9         String language = scan.nextLine();  // 接收员工应聘的编程语言
10         
11         // 根据编程语言确定员工分配的部门
12         switch (language.hashCode()) {
13             case 3254818:                     // java的哈希码
14             case 2301506:                     // Java的哈希码
15             case 2269730:                     // JAVA的哈希码
16                 System.out.println("员工"+name+"被分配到Java程序开发部门。");
17                 break;
18             case 3104:                        // c#的哈希码
19             case 2112:                        // C#的哈希码
20                 System.out.println("员工"+name+"被分配到C#项目维护组。");
21                 break;
22             case -709190099:                  // asp.net的哈希码
23             case 955463181:                   // Asp.net的哈希码
24             case 9745901:                     // ASP.NET的哈希码
25                 System.out.println("员工"+name+"被分配到Asp.net程序测试部门。");
26                 break;
27             default:
28                 System.out.println("本公司不需要" + language + "语言的程序开发人员。");
29         }
30     }
31 }
 
依照书中所给代码敲入后,一开始我不能理解switch语句中case的值是哪里来的,百度后才明白,原来是先将各种语言罗列出不同的写法,比如java有JAVA、java、Java这三种写法,通过hashcode方法提前获取哈希码的值再注释掉,而书中并没有给出这一过程。注释掉的代码如下:
System.out.println("java".hashCode());
System.out.println("Java".hashCode());
System.out.println("JAVA".hashCode());
System.out.println("C#".hashCode());
System.out.println("c#".hashCode());
System.out.println("asp.net".hashCode());
System.out.println("Asp.net".hashCode());
System.out.println("ASP.net".hashCode());
通过运行,我们可以获取各种语言不同写法所对应的哈希码,并将其放到case中进行后续判断。
 
该实例中的扩展练习是为学生分配兴趣小组,我们可以依据前面为员工分配部门为例,先求出不同兴趣小组的哈希码,比如足球、田径、文学等等,然后放到Switch语句中进行匹配判断即可。

猜你喜欢

转载自www.cnblogs.com/luckyliulin/p/8972316.html