Java实例——为新员⼯分配部门
技术关键:
1、Switch多分⽀语句的使⽤,该语句只⽀持对常量的判断;
2、对字符串的哈希码进⾏判断,也就是把String类的hashCode()⽅法返回值作为Switch语法的表达式,case关键字之后跟随的是各种字符串常量的哈希码整数值。
知识点:
哈希码
在Java中,哈希码代表对象的特征。可以根据的⾃⼰的需求,采⽤不同的算法产⽣的⼀个Int型数字。
⼏个常⽤的哈希码的算法:
1、Object类的hashCode.返回对象的内存地址经过处理后的结构,由于每个对象的内存地址都不⼀样,所以哈希码也不⼀样。
2、String类的hashCode.根据String类包含的字符串的内容,根据⼀种特殊算法返回哈希码,只要字符
串所在的空间相同,返回的哈希码也相同。
3、Integer类,返回的哈希码就是Integer对象⾥所包含的那个整数的数值。
实现过程:
1package test;
2import java.util.Scanner;
3public class Example {
4public static void main(String[] args) {
5 Scanner scan = new Scanner(System.in);
6 System.out.println("请输⼊新员⼯的姓名:");
7 String name = Line(); // 接收员⼯名称
8 System.out.println("请输⼊新员⼯应聘的编程语⾔:");
9 String language = Line(); // 接收员⼯应聘的编程语⾔
10
11// 根据编程语⾔确定员⼯分配的部门
12switch (language.hashCode()) {
13case 3254818: // java的哈希码
14case 2301506: // Java的哈希码
15case 2269730: // JAVA的哈希码
16 System.out.println("员⼯"+name+"被分配到Java程序开发部门。");
17break;
18case 3104: // c#的哈希码
19case 2112: // C#的哈希码
20 System.out.println("员⼯"+name+"被分配到C#项⽬维护组。");
21break;
22case -709190099: // asp的哈希码
23case 955463181: // Asp的哈希码
24case 9745901: // ASP.NET的哈希码
25 System.out.println("员⼯"+name+"被分配到Asp程序测试部门。");
26break;
27default:
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());switch case判断字符串
System.out.println("C#".hashCode());
System.out.println("c#".hashCode());
System.out.println("asp".hashCode());
System.out.println("Asp".hashCode());
System.out.println("ASP".hashCode());
通过运⾏,我们可以获取各种语⾔不同写法所对应的哈希码,并将其放到case中进⾏后续判断。
该实例中的扩展练习是为学⽣分配兴趣⼩组,我们可以依据前⾯为员⼯分配部门为例,先求出不同兴趣⼩组的哈希码,⽐如⾜球、⽥径、⽂学等等,然后放到Switch语句中进⾏匹配判断即可。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论