数据类型的问题
double d;声明的是一个 double 型变量。不论你给它赋什么值,只要合法,它总是 double。
而 1.23 是 double,1.23f 是 float。这是常量类型的约定。
常量浮点型不加 f 是 double,加 f 是 float。
常量整类型不加 l 是 int,加 l 是 long。常量类型再小的类型如果不溢出自动截短。
c#与 java 的区别:
1. 源文件方面。C#可以在一个.cs 文件中。出现多个 name sapce(命名空间,有些类似
于 pacakage),并定义多个类。 C#包含有预处理指令。
2. 数据类型方面。
a) C#定义了 struct(结构),不能是抽象的,也不能被继承,是值类型的。
b) C#没有基本类型的概念,全部是面向对象的类型,int 是 Int32 的简写。
c) 在 Java 中 const 是保留字,final 与 C#中的 const 意思相同,C#中还有 readonly 允许运行
时赋初值。
d) 字符串比较,C#中可以用=比较值,与 Java 一样用 StringBuffer 来减少内存开销。
3. 运算符方面。C#增加了 Checked 和 Unchecked 以绕过编译错误。比如“把一个 long 付给
int32 ,如果高 32 为零 则不会出错,否则会有溢出错误,unchekced 就是告诉编译器不要
去管溢出,尽你可能转化”
4. 分支语句方面。在 Java 中 goto 是保留字。C#中 switch 中的 case 不会顺序执行,末尾必
须有 break 或者 goto 关键字。
5. 循环语句好像没有什么不同的。
6. 访问修饰符方面。在范围放 main,C#增加了 internal 和 protected internal,前者表示只
能从当前程序集内可见,即可以在编译时可 Assembly 的 DLL 或 EXE,类似于 JAR;后者
表示对当前程序集或者从此包含类继承的类可见。Sealed 相当于 Java 中的 final 关键字。
7. 方法方面。与 Java 相同,只有基本类型通过值传递,其他都是传递引用。不过 C#也可
以以引用的方式传递基本类型,利用 ref 关键字。而 out 关键字有些类似于 Oracle 存储过程,
与 ref 的区别在于:方法忽略 out 参数初始值,方法必须为 out 参数赋值。
8. 属性方面。Getter 和 Setter 的写法不太一样。
9. 继承方面。C#增加了 base 关键字以指向父类。C#中父类方法中具有 virtual 关键字的才
可以被子类重写,重写时还需要声明 override。与抽象类相同,abstract 关键字也必须被
override 重写。C#中的接口不能声明常量,接口的属性只是表示 Getter 或 Setter。
10. 事件。Java 中没有(Java 通过实现自定义侦听器类执行事件)。C#定义了类似于函数指
针的委托来实现事件。
11. 运算符重载。Java 中无。运算符重载必须为类的静态方法,重载==,其他判等操作也
必许重载。
12. 异常方面。与 Java 非常相似,只是没有 throws 关键字,无须截获异常(当然要在程序
主入口去截)。
13. C#增加了索引器,可以象访问数组一样访问类或结构。个人感觉就是少些几个字而已,
还造成一定的困扰。
14. C#的 Attribute 要比 Java 的 Annotation 强很多。不过加上 AOP 后,这种动态功能 Java
也不错了。
15. 在 C#中也可以直接使用指针,开辟或者回收内存,只是要使用两个关键字 unsafe 和 fi
Java`C#(控制台)`C 的数据输入输出问题总结:
输入:
评论1