java到底有多强?
我用c很多年了,java就做过applet,在用java跟c的sock通讯中,数据类型的转换一直不知道怎样实现,怎样将byte[]转换为Integer或Double?为什么在java中做个类型转换这么难? 问题点数:100、回复次数:28Top
1 楼interpb(曾曾胡,深怕情多累美人!)回复于 2006-03-16 09:49:49 得分 0
一个OO, 一个OP ,转换思想是最重要的!
是不是要在java中转换
String s = new String(b);
int i = Integer.parseInt(b);
double d = Double.parseDouble(s);
Top
2 楼interpb(曾曾胡,深怕情多累美人!)回复于 2006-03-16 09:50:12 得分 0
double d = Double.parseDouble(b); //SRY
Top
3 楼tomuno(特别行动组)回复于 2006-03-16 09:53:21 得分 0
java相对于c 无法直接处理底层,还有就是速度可能会慢些,很微小,但在网络上更有优势Top
4 楼sswater(光杆兵)回复于 2006-03-16 09:57:11 得分 0
java 很强
不,是 "相当" 的强Top
5 楼sswater(光杆兵)回复于 2006-03-16 10:00:42 得分 0
类型转换请参阅:java.io.DataInputStream
在 java 中,一个头疼的问题就是编码,字符,字节等问题
如果搂主要深入 java 的话,推荐2篇基础文章:
http://www.regexlab.com/zh/encoding.htm
http://www.regexlab.com/zh/regref.htm
Top
6 楼haizhiyu(海之鱼)回复于 2006-03-16 14:54:18 得分 0
interpb(曾曾胡):我希望转换的是binary数据而不是字符串数据。Top
7 楼wizardblue()回复于 2006-03-16 15:03:22 得分 0
binary的话,估计麻烦就大了,c++是随着平台和cpu,它的原生类型不同的编译器有不同的实现,java的integer全是32bits的Top
8 楼treeroot(旗鲁特)回复于 2006-03-16 15:04:26 得分 100
很简单呀(4个字节的数组
static int bytes2int(byte[] b)
{
//byte[] b=new byte[]{1,2,3,4};
int mask=0xff;
int temp=0;
int res=0;
for(int i=0;i<4;i++){
res<<=8;
temp=b[i]&mask;
res|=temp;
}
return res;
}
static byte[] int2bytes(int num)
{
byte[] b=new byte[4];
//int mask=0xff;
for(int i=0;i<4;i++){
b[i]=(byte)(num>>>(24-i*8));
}
return b;
}
Top
9 楼treeroot(旗鲁特)回复于 2006-03-16 15:08:31 得分 0
long和int类似,至于dobule就更简单了
八个字节的数组 byte[]先转为long
然后
Double.longBtisToDouble(long bits) 就可以了
java对字节和位的处理实际上比c更强一些(多了一个无符号右移>>>)
虽然java不存在无符号数,丝毫不影响它的字节处理能力,如果我们只当作字节,有没有符号实际上
没有意思.Top
10 楼treeroot(旗鲁特)回复于 2006-03-16 15:09:49 得分 0
另外一点,java中的数字存储都是高位在前的!
在java中不存在不确定因素,没有平台依赖型Top
11 楼haizhiyu(海之鱼)回复于 2006-03-16 15:10:20 得分 0
谢谢了“treeroot(旗鲁特) ”。这个方法倒是知道,但是不是会很慢,大数据量的时候?Top
12 楼treeroot(旗鲁特)回复于 2006-03-16 15:16:13 得分 0
不过c语言确实更简洁
char[] bs={2,23,3,3};
int a= *((int *)bs);
可那这也是指针的魅力吧Top
13 楼treeroot(旗鲁特)回复于 2006-03-16 15:21:42 得分 0
to: haizhiyu(海之鱼)
这种是java中唯一的实现方式,当然也是最快的实现方法,这种位操作当然不会很慢.
所有的java序列化实现(包括DataInputStream)都是这样实现的.
我也很认同这种方式会比c语言慢一些(因为c语言是作为一个字长来处理的,java至少要
设计到几次移位操作,实际上java中把这些数字的连续存储信息丢弃了)
这也和内存模型有关,c是静态非配内存,java是动态分配内存,当然不可能像c那样知道
每个字节的存储位置了.
Top
14 楼treeroot(旗鲁特)回复于 2006-03-16 15:24:40 得分 0
对了,如果你是在写网络程序,瓶颈是在网络传输,完全不用java处理的效率问题.
相对于网络传输,再慢几十倍也是可以忽略不计的.Top
15 楼chyx413332087()回复于 2006-03-16 16:46:16 得分 0
哎,又学了点东西Top
16 楼yy1361(孤狼)回复于 2006-03-16 18:58:07 得分 0
java能让公鸡下蛋!母牛产奶!Top
17 楼kingofworl(良辰美景虚度)回复于 2006-03-16 19:50:57 得分 0
跨平台上有绝对优势Top
18 楼crazyguo007(浪迹天涯)回复于 2006-03-16 20:02:47 得分 0
据说jre6执行效率提高了好多,不知道是不是真的。很期待。Top
19 楼wangjinwang(王者之疯)回复于 2006-03-16 20:06:56 得分 0
Java的优势:
1 跨平台
2 应用服务器
3 设计模式
4 其他Top
20 楼supersunyi(赖赖虫)回复于 2006-03-16 22:20:19 得分 0
java强不强,我不知道,因为我毕业到现在一直用java,所以也无从比较,但我只知道java很慢,而且是相当慢,程序越大,outofmemory的机会越大,不过也不错,我可以在运行程序的时候休息会,不管java怎么样,早晚有一天会有一个新的打败它,只是我怕我退休都看不到了,因为我快不想写程序了……Top
21 楼cuizhanjun1981(城市稻草人)回复于 2006-03-17 07:19:42 得分 0
http://www.jiuso.com/freeweb/?=cuizhanjun1981@163.com
免费个人空间
磁盘空间:300M,支持语言:ASP,ASP.NET,FTP,FSO,IIS并发数:300,数据库:ACCESSTop
22 楼Albert_1030()回复于 2006-03-17 07:53:40 得分 0
5。0自动装箱,都不用显式转换。Top
23 楼woolceo(努力升仙)回复于 2006-03-17 08:35:33 得分 0
java强在他的思想...Top
24 楼wmzsl(王明哲)回复于 2006-03-17 08:53:55 得分 0
顶!Top
25 楼LoveXiaoShuang()回复于 2006-03-17 09:01:32 得分 0
Java想做什么软件就做什么软件,就是强。Top
26 楼haizhiyu(海之鱼)回复于 2006-03-17 11:05:47 得分 0
谢谢treeroot(旗鲁特),java是一门很优美的语言,从语法上我很喜欢它。而且java也越来越强大,但是java已经越来越滞重。当然,跨平台是它最大的优势,而且它的思想以及对oop的体现确实是让人喜欢的一种语言。Top
27 楼wls12342004(青青子木)回复于 2006-03-17 14:56:41 得分 0
只是工具而也,如果够强的话用汇编来,还觉得不过瘾的话用二进制代码来Top
28 楼Jeremyzhou(Jeremy)回复于 2006-03-17 15:29:01 得分 0
这个问题 是2种语言的差异产生的,任何人都没有错。
至于转换,2楼已经说得很清楚。
2种语言有本质不同,首先是编程的思维方式问题。
面向过程的语言 是顺序式的思维逻辑
面向对象的语言 想问题都是对象,我们看到的都是 抽象、继承、封装、多态……,所以我们说他们2个有很大不同
Top




