CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

java到底有多强?

楼主haizhiyu(海之鱼)2006-03-16 09:30:48 在 Java / J2SE / 基础类 提问

我用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

相关问题

  • java到底有多少个关键字?
  • java,到底离你有多远。
  • 到底有多少人用J++开发java的??
  • Thinking in Java 到底好不好?
  • 到底java有几种
  • JAVA Beans到底是什么?
  • 至强到底比奔腾强多少?
  • J2EE到底包含多少东西?(各位Java爱好者进来聊聊)
  • Java 到底是不是跨平台的?
  • java sdk 与jdk到底有何区别?

关键词

  • 转换
  • 语言
  • java
  • 跨平台
  • 内存
  • 数据
  • 网络
  • 很慢
  • 实现
  • 存储

得分解答快速导航

  • 帖主:haizhiyu
  • treeroot

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo