代码改变世界

Java初入门(from c++ 2 java)(一)

2009-03-27 17:09  ubunoon  阅读(269)  评论(0编辑  收藏  举报
开始学习java了!其实在写这篇文档之前的一两个月前就已经看了一小部分的java语言了,当时是一个朋友劝说下学习的,在本本的vista下面挂了个eclipse,然后就开始了,不过没有几天,vista系统因为各种原因,被我格式化了xp系统,一直也没有记录下来学习java的一些基本内容,今天稍微整理一下:
 
   java语言派生自c++语言,自然有许多地方与C++语言是类似的,最大的区别在于内存的管理,java内部的内存管理可以先不去理解,尽管thinking in java中有所介绍,不用手工管理内存使得编写程序更加安全一些。用new后,不需要显示调用delete方法(事实上也不存在)

   java的操作符与C++基本一致,有差别的是<<<符号,无符号左移,是在看《编程艺术》一书时看到该符号的,同时也看到它的需求非常实际。

   java没有C++的operator运算符重载,因此java内部要重载,只能够通过类方法,不知道java内部是否通过类似C++的虚函数实现每一个函数,我记得c#好像是那么实现的。

   java中方法内变量必须要在定义的时候就初始化,否则编译器将会报出错误,在类成员中的变量,java会自动给你初始化一个默认值,一般为0,null,false。

   java中的所有方式都是通过类来实现,因此java中需要一个全局访问时需要通过静态变量来实现,java的静态变量实现与C++有所差别。java中存在static语句块,如:
   static
   {
       static object o = new object();
   }
   static的初始化是在第一次调用的时候,依据声明的顺序进行初始化的。

   java中的构造函数可以通过this来调用自身的另外一个构造函数,但只能调用一次,且放置在构造函数中的第一条语句中。

   java中没有显示的析构函数,可以存在finalize方法,在垃圾收集器运行收集系统内存的时候,会被调用,但不如C++的delete语句那么可靠!

   java通过包方法来区别各个类,C++通过namespace来给类划分名字空间,java通过package来区分,package的查找位置一般通过JAVA_CLASSPATH来搜索,一般JAVA_CLASSPATH的第一个值为'.',表示当前路径。与C++中的namespace有些类似,但package是基于文档的路径来实现的,namespace是基于逻辑所在区域来实现的。

   java中每个package的后缀名为java,只能导出一个public类,其他类都是默认声明,即protected,对本package内部是可见的,对其他package是不可见的,非常类似C++语言总的static声明的函数。

   java中的修饰符为public、private,protected是默认的修饰符,每一个类,变量,方法都需要显示表明public,private修饰符,与C++的不同,C++是起始申明开始到下一个声明开始为止,都为同一个声明类型。

   java中的所有类都从object中继承下来的。每个类均由默认的功能,最简单的莫过于hashCode方法以及toString方法。

   java中有一个命名规范,即将所有的类以Title方式命名,类成员以及方法用骆驼法(camel)命名。