下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

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

作者:课课家教育     来源: http://www.kokojia.com点击数:747发布时间: 2016-01-29 18:37:47

标签: java语言java编程java应用程序

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

  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 位小数

赞(0)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程