NET程序员如何转行为J2EE之java基础上(10)

    作者:课课家教育更新于: 2016-01-29 18:37:47

    大神带你学编程,欢迎选课

      java 语言与 C# 之比较

      下面让我们考察 Java 语言和 C# 之间的区别。这两种语言具有许多相似之处,因此我们将重点关注其区别所在。

    NET程序员如何转行为J2EE之java基础上(10)_java语言_java编程_课课家

      类型

      Java 语言和 C# 都是单继承的面向对象语言,它们都具有一个作为其他所有类的基类的类:C# 中的 System.object 和 Java 语言中的 java.lang.Object 。这意味着对于您开发的类层次,两种语言是相似的。如果沿着层次树往上,您最终会到达对应的根类。

      Java 语言使用了原始类型(primitive type)的概念,它们非常类似 C 和 C++ 中的对应概念。它们不是任何类层次的一部分,也不具有任何方法。此外,当使用它们作为参数时,它们总是按值传递。表 3 列出了 Java 语言中的原始类型和它们在 C# 中的等价类型:

      表 3 Java 语言中的原始类型和它们在 C# 中的等价类型

      Java 原始类型描述等价的 C# 类型描述

      int32 位有符号整数int32 位有符号整数

      long64 位有符号整数long32 位有符号整数

      short16 位有符号整数short16 位有符号整数

      char16 位无符号整数char16 位无符号整数

      byte8 位无符号整数byte8 位无符号整数

      boolean有效值是 true或者 falsebool有效值是 true或者 false

      float32 位浮点数float32 位浮点数

      double64 位浮点数double64 位浮点数

      在 Java 语言中,每种原始类型具有一个对应的包装类,可以使用它将该类型作为对象而不是作为原始类型来处理。每个包装类具有一个构造函数,允许您根据原始类型中的数据创建该包装类型的一个实例。 在 C# 中,您可以隐式地将对应的类型转换为 object 的一个实例,因此不需要在这种情形下使用包装类。清单 12 中的代码突出了它们之间的区别。

      清单 12. 原始类型和它们的包装类的例子

      C#                     Java

      public class Foo                 public class Foo

      {                        {

      private void someMethod(object arg) {      private void someMethod(Object arg) {

      // do something with arg             // do something with arg

      }                        }

      public static void Main(string[] args) {     public static void main(String[] args) {

      int i = 0;                        int i=0;

      Foo x = new Foo();                Foo x = new Foo();

      x.someMethod(i);                 x.someMethod(new Integer(i));

      }                        }

      }                         }

      清单 12 中的 Java 原始类型被显式地包装在 Object 的一个派生类中,而在 C# 中,这种转换是隐式的。(C# 中隐式的转换称为 装箱(boxing)。)

      注意在 Java 语言中,原始类型是按值传递的,对象类型在内部使用指针来表示,它们也是按值传递的。C# 中的默认行为是相同的,不过该语言还包括 ref 关键字来强制将值类型作为引用来传递。

      表 4 显示了一些等价于 C# 类型但是没有映射到 Java 原始类型的 Java 语言类型。

      表 4 C# 类型和它们的 Java 等价类型

      等价的 Java 类型描述C# 类型描述

      java.lang.Object任何非原始类型都是 Object 的派生类object每种类型都是 object 的派生类

      java.lang.StringUnicode 字符stringUnicode 字符

      java.math.BigDecimal可调整进位制的 32 位小数decimal可调整进位制的 32 位小数

课课家教育

未登录