C# 与 Java的不同点

0.

Java   一个Java源码只能定义一个public类型的class,并且class名称和文件名要完全一致;

C#    没有限制

 

1.

java   方法名首字母小写

C#     方法名首字符大写

 

2.

java  

溢出

整数运算在除数为0时会报错,而浮点数运算在除数为0时,不会报错,但会返回几个特殊值:

  • NaN表示Not a Number
  • Infinity表示无穷大
  • -Infinity表示负无穷大

2.java

多行字符串输出

"""..."""

 

1.常量修饰符

C#    const    

Java   final     并且final修饰的field必须在创建对象时初始化,随后不可修改。

 

2.控制台输入和输出

C# 输出 Console.Writ()

C# 输入 Console.ReadLine()

Java提供的输出包括:System.out.println() / print() / printf(),其中printf()可以格式化输出;

Java提供Scanner对象来方便输入,读取对应的类型可以使用:scanner.nextLine() / nextInt() / nextDouble() / ...

 

3.迭代器

C# foreach(var item in items)

Java for(var item : items)

 

4.字符串关键字

C# string

Java String

 

5.继承关键字 和  接口实现

C#    class1:class2     class:interface   interface1:interface2

Java  class1 extends class2        class   implements interface       interface1 extends interface2

 

6.子类访问超类

C#   Base

Java  super

 

7.判断一个实例究竟是不是某种类型

C#  instance is class

Java instance instanceof class

 

8.重写关键字

C#    public override string ReWrite_Get()  要求父类方法必须声明为virtual或者是abstract类型

Java   @Override(不必须)    如果父方法被final修饰则不可重写  如果类被final修饰则不可继承

          public  string ReWrite_Get()

C#  有重写和覆盖的概念,可重写的叫虚方法,覆盖的叫实方法,当父类的方法子类有一个重写,有一个覆盖,子类赋给父类之后,调用这两个方法,重写的会执行子类,覆盖的会执行父类。被virtual声明才可以重写

Java  父类方法不需要特殊标记,都可以被重写,不区分重写和覆盖。

 java interface 有一种default方法  实现类可以不必覆写default方法。default方法的目的是,当我们需要给接口新增一个方法时,会涉及到修改全部子类。如果新增的是default方法,那么子类就不必全部修改,只需要在需要覆写的地方去覆写新增方法。

default方法和抽象类的普通方法是有所不同的。因为interface没有字段,default方法无法访问字段,而抽象类的普通方法可以访问实例字段。

 C# interface 只能有虚方法

Java interface 可以有静态字段,要使用final修饰 public static final int MALE = 1;

 

9.名字空间

C# 命名空间 using 项目名.类名 在一个项目中也遵循访问修饰原则

Java 包 import 包名.类名 在同一个包里面如果成员不被修饰符修饰则全包可访问 在写import的时候,可以使用*,表示把这个包下面的所有class都导入进来(但不包括子包的class)

还有一种import static的语法,它可以导入可以导入一个类的静态字段和静态方法

// 导入System类的所有静态字段和静态方法:

import static java.lang.System.*;

 

10.final

用final修饰局部变量可以阻止被重新赋值

用final修饰field可以阻止被重新赋值

用final修饰method可以阻止被子类覆写

用final修饰class可以阻止被继承

java中final同时拥有C#中const[常量修饰]和readonly[只读修饰]两种特性

 

11.访问修饰符

C# public private protected internal protected

Java public private protected

最后,java有一个包作用域[package]是指一个类允许访问同一个package的没有publicprivate修饰的class,以及没有publicprotectedprivate修饰的字段和方法。

,包名必须完全一致,包没有父子关系,com.apachecom.apache.abc是不同的包。

 

嵌套类

C#和java都支持嵌套类

 

文件与类关系限制

C#    一个文件中可以随便创建多个public的类

java   一个.java文件只能包含一个public类,但可以包含多个非public类。如果有public类,文件名必须和public类的名字相同。

 

 

12.编译集合

C# 应用程序集  模块

Java Jar包 模块

 

13.属性

C# private int age;public int Age get{return age};public int Age set{age = value};

Java private int age;public int getAge(){return age;};public int setAge(int age){this.age=age};

 

 

14.布尔

C# bool

Java boolean

 

15.枚举

Java 可以为enum编写构造方法、字段和方法,enum的构造方法要声明为private,字段强烈建议声明为final;

posted @ 2019-10-22 13:09  chen-hehe  阅读(326)  评论(0编辑  收藏  举报