仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1802|回复: 20
打印 上一主题 下一主题

[学习教程] JAVA编程:Java言语中字符的处置

[复制链接]
逍遥一派 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:55:06 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
什么时候上述的三种开发工具能和三为一,什么时候java的竞争力才更强,才有机会拉拢更多的程序员投入到对java的开发上,因为到时的开发工具将会比.net的更简单。还有一点也很关键,什么时候java推出的jsf能成为真正意义上的标准。山西省收集办理中央任军

----择要:本文次要会商了Java言语中字符的特别表达情势,特别是中文信息的表达处置,论述了字符处置的关头是要将十六位Unicode字符,转换为当地上层平台,也就是运转Java假造处置机的平台可以了解的字符情势。

----关头词:Java、字符、8位、16位、Unicode字符集

----Java是一种编程言语、一个运转体系、一套开辟工具和一个使用程序编程界面(API)。Java创建在C++的熟习、有效的特性之上,而作废了C++的庞大的、伤害的和过剩的元素。它是一个更平安、更复杂、更简单利用的言语。

1、Java的字符表达

----Java言语和C言语对字符举行了互不不异的形貌,Java利用16位的Unicode字符集(该尺度形貌了很多言语的各类分歧字符),因而Java字符是一个16位的无标记整数,字符变量用来寄存单个字符,而不是完全的字符串。

----一个字符(character),就是单个字母(letter),很多字母组成一个单词,一组单词构成句子,以此类推。可是关于含有诸如中文信息的字符,就不是那末复杂了。

----Java的基础的char范例被界说成无标记的16位,它是Java中独一的一个无标记范例。利用16位表达字符的次要缘故原由是要让Java可以撑持任何Unicode字符,因而而使得Java合用于形貌或显现任何被Unicode撑持的言语,可移植性也就会更好。可是,可以撑持某种言语的字符串显现,和可以准确打印某种言语的字符串,经常是两个分歧的成绩。因为Oak(Java最后的代号)开辟组的次要情况是Unix体系和某些源于Unix的体系,以是对开辟职员来讲,最为便利有用的字符集是ISOLatin-1。响应地,这一开辟组就带有Unix遗传性,也就招致了Java的I/O体系在很年夜水平上以Unix的流观点为模子,而在Unix体系中,每种I/O设备都是用一串8比特的流来暗示。这类在I/O体系方面取模于Unix的做法,使得Java言语具有16位的Java字符,而却只要8位的输出设备,如许就给Java带来了些不敷。因而在任何一处Java字符串按8位来读进或写出的中央,都得有一小段程序代码,被称为"劈(hack)",来将8位的字符映照成为16位Unicode,或将16位的Unicode劈成8位字符。

2、成绩及办理

----我们要完成从一个文件读失信息,特别是读取含有中文信息的文件,并将读取到的信息显现在屏幕上,一样平常我们利用FileInputStream函数翻开文件、readChar函数读进字符。以下:


importjava.io.*;
publicclassrf{
publicstaticvoidmain(Stringargs[]){
FileInputStreamfis;
DataInputStreamdis;
charc;

try{
fis=newFileInputStream("xinxi.txt");
dis=newDataInputStream(fis);
while(true){
c=dis.readChar();
System.out.print(c);
System.out.flush();
if(c==
)break;
}
fis.close();
}catch(Exceptione){}
System.exit(0);
}
}

----可是现实上,运转这一程序,所能失掉的输入了局是一堆无用的乱码。不克不及准确输入xinxi.txt文件内容,其缘故原由是readChar函数读进的是16位的Unicode字符,而System.out.print却将其看成八位的ISOlatin-1字符输入。

----Java1.1版本引进了一套全新的Readers和Writers接口来处置字符。我们能够使用InputStreamReader类而不是DataInputStream来处置文件。修正下面的程序以下:
importjava.io.*;


publicclassrf{
publicstaticvoidmain(Stringargs[]){
FileInputStreamfis;
InputStreamReaderirs;
charch;

try{
fis=newFileInputStream("xinxi.txt");
irs=newInputStreamReader(fis);
while(true){
ch=(char)irs.read();
System.out.print(c);
System.out.flush();
if(ch==
)break;
}
fis.close();
}catch(Exceptione){}
System.exit(0);
}
}

----如许才干准确输入xinxi.txt中的文本(特别是中文信息)。别的,当xinxi.txt文件来自分歧的呆板,即来自分歧操纵平台(或汉字内码分歧)的呆板,好比:文件来自客户端(客户端上传文件给服务器),而读取文中信息的操纵由服务器端实行。假如用下面的程序来完成这一功效,就有大概仍旧不克不及失掉准确的了局。其缘故原由就是输出编码转换失利,我们还必要举行以下的修改:


......
intc1;
intj=0;
StringBufferstr=newStringBuffer();
charlll[][]=newchar[20][500];
Stringll="";
try{
fis=newFileInputStream("fname.txt");
irs=newInputStreamReader(fis);
c1=irs.read(lll[1],0,50);
while(lll[1][j]!=){
str.append(lll[1][j]);
j=j+1;
}
ll=str.toString();
System.out.println(ll);
}catch(IOExceptione){
System.out.println(e.toString());}
......

----如许,输入的了局就准确了。固然,下面的程序是不完全的,只是申明了一下办理的办法。

----总之,Java言语中字符处置,特别是中文信息的处置,对照特别。在Java中,字符处置的关头是要将十六位Unicode字符,转换为当地上层平台也就是运转Java假造处置机的平台可以了解的字符情势。


关于第二点:俺问问你,如果是企业级项目的话,诸如RMI,EJB,等一些关键技术,这些难道都不需要学么?如果光是使用jsp,servlet,javabean的话。
莫相离 该用户已被删除
21#
发表于 2015-4-14 05:10:37 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
老尸 该用户已被删除
20#
发表于 2015-4-9 16:24:55 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
若相依 该用户已被删除
19#
发表于 2015-4-6 20:22:31 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
不帅 该用户已被删除
18#
发表于 2015-4-1 22:11:13 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
谁可相欹 该用户已被删除
17#
发表于 2015-3-31 14:46:45 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
冷月葬花魂 该用户已被删除
16#
发表于 2015-3-30 16:19:25 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
灵魂腐蚀 该用户已被删除
15#
发表于 2015-3-27 22:59:35 | 只看该作者
是一种使用者不需花费很多时间学习的语言
蒙在股里 该用户已被删除
14#
发表于 2015-3-27 08:08:09 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
再见西城 该用户已被删除
13#
发表于 2015-3-20 15:31:48 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
乐观 该用户已被删除
12#
发表于 2015-3-17 17:06:06 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
第二个灵魂 该用户已被删除
11#
发表于 2015-3-11 00:26:30 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
兰色精灵 该用户已被删除
10#
发表于 2015-3-11 00:20:31 | 只看该作者
是一种为 Internet发展的计算机语言
小女巫 该用户已被删除
9#
发表于 2015-3-7 13:00:57 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
金色的骷髅 该用户已被删除
8#
发表于 2015-2-24 19:45:54 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
透明 该用户已被删除
7#
发表于 2015-2-8 07:03:19 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
飘灵儿 该用户已被删除
6#
发表于 2015-2-2 21:42:15 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
深爱那片海 该用户已被删除
5#
发表于 2015-2-2 21:34:35 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
admin 该用户已被删除
地板
发表于 2015-2-1 12:33:31 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
再现理想 该用户已被删除
板凳
发表于 2015-1-30 21:26:47 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-16 00:18

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表