.NET转JAVA之拼音组件

PS:做了4年,自我感觉.NET到瓶颈了,而且公司并没有深入运用.NET技术的项目,自我学习感觉也没太大动力(请骂我懒T_T)。再加上技术年限越往上走,了解到的.NET职业提升环境就越来越艰难(个人理解,喷子就不用喷了,喷了对我也没影响,哈哈哈)。于是于半月前开始学习JAVA技术。公司刚好成立了JAVA开发的小组,就申请调过去了。公司有很多组件都是.NET环境的,对于纯粹的JAVA攻城狮来说,对于.NET代码也比较头疼,因此,此类任务就扔了一个给我。

  • 组件的功能:

由于公司的业务需求,对于中文姓名中的生僻字(针对常用的GB2312来说,不是GBK),需要进行识别并转换成拼音。对于多个中文姓名,整个姓名拼音字符串出现重复的姓名,需要提示。

首先说说算法:

GB2312有自己的编码表以及拼音的索引表(我这里是网上找的) ,然后可以根据自己设计的查找算法制作相应的资源数组。

GB2312的16~55区的一级汉字由根据拼音排序的。将一级汉字转为字节数组,根据算法定位到前面的资源数组,即可找到相应的拼音。

GB2312的56~87区的二级汉字因为不是使用拼音排序,可以特殊处理,也可以设计兼容的算法(因此资源数组需要自行设计)。

对于生僻字:

超过GB2312中汉字区位的生僻字(当然字节数组依然是两位),目前使用的是直接导入GBK中的生僻字信息,做成索引器,然后进行索引匹配。

  • 不同点:

汉字字符串转字节数组:

.NET中,汉字字符串使用GB2312和GBK编码方式,对于生僻字,得到的字节都是GBK中的两位字节数组信息。

但是JAVA中,用GB2312得到的是一个“?”的ASCII码中的字节,只有使用GBK才能获取到相应的两位字节数组。(毕竟GBK对于GB2312是向下完全兼容的)

无符号整数:

由于使用的是索引资源,所以在进行相关的索引计算时,会用到无符号整数。

.NET中有自己定义的无符号整数,而JAVA中是不会存在有无符号整数的,所以需要进行升位的运算,以及存储(UInt16对应Int,UInt32对应Long)。

字节数组(两个字节)转无符号整形:

.NET中有直接的方法。需要注意的是,有些方法进行回转时,低位在前面,而高位在后面。

JAVA中需要自己写相应的方法。需要注意高低位的转换,以及Uint在JAVA中的表示形式。

文件读取:

由于需要读取生僻字,因此文件格式转成了UTF-8。在Windows系统中,MS会为非ASCII编码的文件的头部,加入一个BOM(Byte Order Mark),字节顺序标记。

JAVA在读取含有BOM的文件时,读取第一个字符会出现一个?,可能会影响到程序的后续处理。

解决方法也比较简单,用类似NOTEPAD++的软件转成无BOM的编码就可以了。

  • 总结:

语法大体相同,但是JAVA确实没那么多的内置语法,很多底层都需要自己编写(公司不让引用第三方的类库)。

感觉.NET虽然很方便,但是如果不主动,是不用也不会明白很多计算机底层的东西。(其实还是我懒T_T)

JAVA则需要了解很多底层的知识,才能正确的编程,虽然比较痛苦,但是个人感觉需要了解的东西会很多。

感觉入门的话,.NET确实是一门很不错的语言,但是如果没什么主动性的话,JAVA对于程序员对程序相关知识的了解,还是很有帮助的。

时间: 2024-10-15 16:11:45

.NET转JAVA之拼音组件的相关文章

java中解决组件重叠的问题(例如鼠标移动组件时)

java中解决组件覆盖的问题!     有时候在移动组件的时候会出现两个组件覆盖的情况,但是你想让被覆盖的组件显示出来或者不被覆盖! 在设计GUI时已经可以定义组件的叠放次序了(按摆放组件的先后顺序). 真正麻烦的是响应哪个组件,这就要创建一个链表,把组件对象按顺序存起来,响应事件时扫描这个链表,按 链表中的先后顺序选择响应组件对象.     所以要想满足自己的需求,那么在添加组件的时候就要注意顺序就好了! 另外如果不想用上面的方法,那么你就采用JLayeredPane这个类,分层面板可以帮助你

谈谈Java的集合组件

让我们一起谈谈Java的集合组件 我们在使用Java的时候,都会遇到并使用到Java的集合.在这里通过自己的理解和网上的资源对Java的集合方面的使用做一个简单的讲解和总结. Java主要分为3个集合组件:Set(集).List(列表).Map(映射). Collection接口:Collection是最基本的集合接口,声明了适用于Java集合的通用方法.Set和List都继承了Collection,Map. Collection接口的方法: boolean add(Object o):向集合中

Bean(描述Java的软件组件模型)

EJB是Enterprise Java Bean的缩写,一个Bean扮演着应用程序素材的角色.它包含有一个functional interface,一个life-cycle interface,以及一个实现它所支援的商业方法的类别. 外文名 Enterprise Java Bean 缩    写Bean   定义描述Java的软件组件模型 类    型    应用程序素材的角色 目    的  将可以重复使用的软件代码打包 应用范围  应用于服务器的部件 1定义 JavaBean是描述Java的

JACob实现java与com组件的相互操作

软件的互操作性是一个我们经常面临的问题,如果 Java 可以自由的调用其他语言和平台的成熟代码,可以充分利用您的 Java 技能,大大提高您的生产力.现有的 Java COM 互操作技术有很多种实现,JACOB 开源项目提供了一个简单方便的通用调用框架,本文就结合一个实例来介绍 JACOB 项目的使用和优点. 我们在实现复杂软件或者进行集成环境的测试时,往往要与各种应用程序打交道.理想情况下,如果能用一种编程语言实现所有功能是很令人憧憬的,但由于遗留代码.语言的能力和厂商的互操作性的策略不同,这

细说java平台日志组件

1. java.util.loggingJDK自带日志组件,使用方式简单,不需要依赖第三方日志组件.支持将日志打印到控制台,文件,甚至可以将日志通过网络打印到指定主机.相对于第三方独立日志框架来说,支持的日志级别比较少,功能也比较单一. 2. apache commons logginghttps://commons.apache.org/proper/commons-logging/index.htmlApache Commons Logging简称JCL.JCL提供了一个轻量级的日志抽象,为

java调用com组件操作word使用总结(jacob)

ava调用com组件操作word使用总结(jacob) 简单描述 在此处输入简单摘要 特别声明:使用java-com技术可以完成任何VBA可以完成的office文档操作; 一.准备工作 先了解一下概念,JACOB 就是 JAVA-COM Bridge的缩写,提供自动化的访问com的功能,也是通过JNI功能访问windows平台下的com组件或者win32系统库的.这是一个开始于 1999年的开源项目的成果,有很多使用者对该项目进行了修改,做出了自己的贡献. Jacob下载地址: http://s

java基础 常用组件

几个常用组件: 在图形用户界面编程中,我们常常会提供用户登陆界面,比如登陆到会员管理系统,登陆到工资管理系统,仓库管理系统等,如下图我们就会用到: 1. 文本框(JTextField) 2. 密码框(JPasswordField) 3. 便签(JLable) example code: 1 package demo7; 2 import java.awt.*; 3 4 import javax.swing.*; 5 6 /* 7 * 多种布局管理器 8 * */ 9 public class d

JAVA中用POI组件访问EXCEL文档

对于用JAVA访问EXCEL文件,常用的组件有jxl和POI, jxl因为目前已无版本更新,并且仅能访问EXCEL2007以前的文件格式,对xlsx文件格式目前不支持, 故而推荐使用POI, POI的官方下载地址为: http://poi.apache.org/ 本质上来说, EXCEL2007文档是一个XML文档, 所以POI对EXCEL文件读操作有两种方式,一种是DOM, 一种是SAX, DOM对EXCEL操作简单,易上手, 但是占用较多的内存,尤其是表格超过10000行, 经常会出现内存溢

Java EE JavaBean组件

一.简介 JavaBean组件是一些可移植.可重用并可组装到应用程序中的Java类,类必须是具体的和公共的. 符合下列设计规则的任何Java类均是以JavaBean: 1.对数据类型"protype"的每个可读属性,Bean下必须有下面签名的一个方法:public proptype getProperty(){} 2.对数据类型"protype"的每个可写属性,Bean下必须有下面签名的一个方法:public void setProperty(proptype x)