Chinaunix首页 | 论坛 | 博客
  • 博客访问: 135388
  • 博文数量: 46
  • 博客积分: 126
  • 博客等级: 民兵
  • 技术积分: 186
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-12 17:57
文章分类

全部博文(46)

文章存档

2016年(2)

2015年(2)

2014年(17)

2013年(8)

2012年(12)

2011年(5)

分类: Java

2014-01-20 23:49:10

原文地址:Java与C++之点滴比较 作者:scq2099yt

        尽管以C++为基础,但Java是一种更纯粹的面向对象程序设计语言,对于Java来说一切皆对象。
、数据类型
        Java数据类型大小与机器结构无关,这也正是其可移植的原因之一。
        基本数据类型与C++差不多,包括boolean(1)、char(16)、byte(8)、short(16)、int(32)、long(64)、float(32)、double(64)、void。
        与C++的差异在于红色部分,自己体会。
        此外,数据类型全部是有符号的,没有无符号数据类型。

二、作用域
        与C++一样,Java的作用域也由花括号的位置决定,但是Java不存在变量覆盖,一切覆盖都是不允许的,比如:
        {
            int x = 10;
            {
                int x = 100;    /* illegal */
            }
        }       

三、垃圾回收
        C++中new出来的对象必须delete,否则会内存泄露,但是Java中的垃圾收集器能自动查找不再被引用的new出来的对象,并自动释放内存,因此,这等低级操作就不劳您大驾了,忘记内存泄露吧。

四、命名空间
        C++中用using namespace来解决命名冲突问题,而Java采用与Internet域名类似的方式来解决此问题,只不过Java设计者鼓励码农们反转使用自己的“Internet域名”,比如:com.scq.utility.logs。

五、前向声明
        在C++中如果要引用一个未出现的类,必须前向声明class xxx或者包含头文件#include "xxx.h",而Java不需要,只需要用import关键字告诉编译器希望使用的类即可:
        import java.util.Vector
        当然,如果想使用util中的几个类,也可以使用通配符*来包含util中所有的类,而不必逐一声明,比如:
        import java.util.*

六、数值转换
        在往屏幕输出或者写日志时,通常都会将一串各种类型转换为字符串,如果是C++就会伴随着各种格式化字符,比如:%d,在Java中,一切都如此简单,只需在字符串和int之间用+连接即可,这样Java会自动将int转换为字符串并与之前的字符串连接在一起,比如:
        System.out.println("Total Memory=" + rt.totalMemory() + "Free Memory=" + rt.freeMemory());
        
七、类与文件
        如果创建一个独立的程序,文件中的类名必须与文件名相同,且类里必须包含一个名为main()的方法,形式如下:
        public static void main(String[] args) {}
        举例说明如下:
        // HelloWorld.java
        import java.util.*
        public class HelloWorld {
            public static void main(String[] args) {
                System.out.println("Hello, World");
            }
        }
        注意类中大括号}后面无;,这点Java不同于
C++。

八、注释文档
        Java与C++一样都支持//和/* ... */,但是Java提供了用于提取注释的工具javadoc,javadoc采用了部分来自Java编译器的技术,查找程序中的特殊注释标记,以提取标记指示的信息和毗邻注释的类名或方法名,以生成专业程序文档,avadoc的输出是一个HTML文件。
        所有javadoc命令都只能出现于/**注释中,注释结束于*/,注释文档有一些隐性规则,即一个类注释正好位于一个类定义之前,一个变量注释正好位于变量定义之前,一个方法注释正好位于方法定义之前,举例说明如下:
        /** 一个类注释 */
        public class DocTest {
            /** 一个变量注释 */
            public int iVariant;
            /** 一个方法注释 */
            public void isPrime() {}
        }
         需要注意的是:javadoc只能处理public和protected成员注释文档,其它都被忽略。
        

阅读(773) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~