C# 与 Java的不同点
0.
Java 一个Java源码只能定义一个public
类型的class,并且class名称和文件名要完全一致;
C# 没有限制
1.
java 方法名首字母小写
C# 方法名首字符大写
2.
java
溢出
整数运算在除数为0
时会报错,而浮点数运算在除数为0
时,不会报错,但会返回几个特殊值:
NaN
表示Not a NumberInfinity
表示无穷大-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
的没有public
、private
修饰的class
,以及没有public
、protected
、private
修饰的字段和方法。
,包名必须完全一致,包没有父子关系,com.apache
和com.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;