1,命名空间与包
C#为了把实现相似功能的类组织在一起,引入了命名空间的概念(namespace)
Java中与此对应的东西叫做包(package)
2,类的访问控制方面的不同
C#只有两种:public和默认(同internal)
public能被所有的类(同项目中和不同项目中)访问
internal(在class关键字前不加控制符时默认为internal),表明类只能在同一项目中访问
Java也只有两种:public和默认
public能被所有的类访问
默认(在class关键字前不加控制符时)只能被同一包中的所有类访问
3,类成员的访问控制
C#中有四种:public,protected,private(默认),internal(注意这里internal和默认是不同的)
public能被所有的类访问
protected只能被子类访问
private(也即不写任何控制符时的默认情况下)只能类内部访问
internal能被同一项目中的类访问
Java也有四种:public,protected,private和默认
public能被所有的类访问
protected既能被同一个中的其他类访问,也可以被不同包中的子类访问
private只能在类内部使用
默认可以被这个包中的其他类访问,如果一个子类与父类位于不同的包中,子类也不能访问父类中的默认访问控制成员
4,C#中类的继承用通过冒号:实现,在Java中用extends
C#中实现接口通过冒号:实现,在Java中用implements
C#中密封类用sealed实现,在Java中用final
C#中常数用const实现,在Java中用final
C#中属性用set,get代码块实现,在Java中一般用类似于C#中的字段代表属性,或者用setter,getter构造器实现
C#中有部分类(partial)的概念,Java中没有
C#中有readonly修饰属性只读,Java中没有
C#中有virtual和override修饰虚方法和重写方法,Java中没有,Java中默认父类中的方法都是virtual的
Java中有static{},synchroized{}代码块的概念,C#中没有
Java中有标签(如labelA:)的概念,C#中没有
C#中子类调用父类的方法用base.method(),Java中用super.method()
C#中用is来判断一个实例是否是某一个类的,Java中用instanceof
C#中用foreach(int i in array)来对数组中每一个元素的遍历,Java中用for(int i : array)

~~~~~~~~~~~~~~~~~~~~~

1. C#命令输入和输出语法是:Console.ReadLine()和Console.WriteLine()(当然不换行的话就去掉Line,这些想必大家都知道,所以文章中只提供比较常用的)。

Java命令输入和输出语法是:System.In.Read()和System.Out.Println()

心得:其实两个语言语法本质都一样就是名字不一样。

2. C#中在一个.cs文件中可以存在多个Public修饰符修饰的类。

Java中在一个.java文件中有且仅能存在一个Public修饰符修饰的类。

心得:目前还不知道为啥java会有这样的限制,不过这一点很容易范错误。

3. C#中Switch语句接受的类型是byte、char、string.

Java中Switch语句接受类型是byte、char、string、int

心得:java语言貌似支持的多一点。

4. C#中存在属性与字段是两个概念,属性是属性访问器,是对字段的封装。

Java中貌似没有属性访问器,属性和字段是一个概念,通过自己实现方法来封装属性的访问,一般是getxxx()和setXXX()方法

心得:这点我还是比较赞同C#的做法,毕竟从编程的角度来说,C#将属性作为语法通用的,不需要用户手动去实现,省去了大量的重复编码。

5. C#中构造函数调用基类或者当前重载构造函数语法是直接在构造函数后面:base()和:this()就可以实现。

Java中相同原理语法是在构造函数模块中的第一条语句使用this()或者super()。

心得:这个我个人觉得c#设计的比较好,因为从程序的可读性方面,这样也容易使得读者容易读懂代码,对于程序员来说也容易区分,比较容易知道运行顺序;而Java的实现方式必须使得使用者记住在第一条语句,有的时候在编写一个大的程序的时候,很有可能会忽略这个。

6. C#中存在静态构造函数,即在类运行时,只执行一次。

Java中是不存在静态构造函数的。

心得:这点我也不知道为啥Java中不存在,不过在网上查了下,有网友说是因为这违背了面向对象的思想,后面也跟了一大堆理由,不过我总看都觉得该网友没有很好理解面向对象思想。这个问题我觉得也值得深入研究,有兴趣的可以跟我一起研究下,至于C#中出现这个,我也没仔细深入研究为什么会出现这个情况,我只知道有的时候在类构造的时候,有些参数是执行一次的,但是细想这些也可以通过其他方法实现,所以暂时也说不出C#中静态构造函数的优点,不过竟然微软定义了该语法,而且是在3.5定义的我相信必有它的用处。

7. C#中继承接口和抽象类都是使用:符号的。

Java中继承用Extends标识符,实现用Implements,且如果同时存在,Extends必须在Implements之前。

心得:C#相对来说是比较自由,直接用:就实现继承和实现。

可是Java中区别比较明确,这点我觉得还是java比较好,这样写的代码比较直观,可读性比较好,虽然写的字数多。

8. C#中用Sealed修饰符表示密封,即不可继承,用Const表示常量。

Java中使用Final修饰符表示密封和常量。

心得:Java中用一个修饰符代表2个功能,从设计角度说,不怎么符合功能单一原则,所以我个人觉得必要的时候还是拆分表示,可读性和区别性会好点。

9. C#的Is运算符可以用于类型的判别。

Java中用Instanceof进行类型的判别。

10. C#中存在Internal修饰符,表示程序集的访问级别。

Java中存在类似的修饰符Default,表示同一类和同一包中的访问级别。

心得:C#中访问修饰符大概有以下几种:

Public:公共的,最大的访问权限。

Internal:程序集的,命名空间级别的访问权限。

Protected:受保护的,类以及子类的访问级别权限。

Private:私有的,只能在该类中访问级别权限。

Java访问修饰符有以下几种:

Public:公共的,最大访问级别。

Protected:受保护的,同一类,同一包中的类和子类访问级别。

Defalut:同一类,同一包中的类访问级别。

Private:私有的,同一类中访问级别。

纵观,其实都差不多,但是平时必须注意,细节决定成败。

11. C#中异常直接用Throw抛出。

Java中如果要抛出异常,貌似必须现在方法或者类定义后面用Throws进行声明。

心得:这点也没深入研究,所以不发表观点。

12. C#中有命名空间,用Using关键字引入。

Java中有包,类似命名空间定义,用Import引入包。

13. C#中同步锁定,用Lock关键字。

Java中同步锁定,用Synchronized关键字。

14. C#基本数据类型中有string,且有包装类String。

Java基本数据类型是没有string,用String取代。

http://blog.csdn.net/kingmax54212008/article/details/49623235

http://blog.csdn.net/kingmax54212008/article/details/49623001

Java的常用包

  • java.lang:  这个包下包含了Java语言的核心类,如String、Math、Sytem和Thread类等,使用这个包无需使用import语句导入,系统会自动导入这个包中的所有类。
  • java.util: 这个包下包含java的大量工具类/接口和集合框架类/接口。如Arrays和List、Set等。
  • java.net: 这个包下包含了一些Java网络编程相关的类/接口。
  • java.io: 这个包含了一些Java输入/输出编程相关的类/接口。
  • java.text: 这个包下包含一些Java格式化相关的类。
  • java.sql: 这个包下包含了java进行JDBC数据库编程的相关类/接口。
  • java.awt: 这个包下包含了抽象窗口工具集(Abstract Window Toolkits) 的相关类/接口,这些类主要用于构建图形用户界面(GUI)程序。
  • java.swing:这个包下包含了Swing图形用户界面编程的相关类/接口,这些可用于构建平台无关的GUI程序。

java与c#的语法对比的更多相关文章

  1. Java, C#, Swift语法对比速查表

    原文:Java, C#, Swift语法对比速查表   Java 8 C# 6 Swift 变量 类型 变量名; 类型 变量名; var 变量名 : 类型; 变量(类型推断) N/A var 变量名= ...

  2. Python3 与 C# 面向对象之~继承与多态 Python3 与 C# 面向对象之~封装 Python3 与 NetCore 基础语法对比(Function专栏) [C#]C#时间日期操作 [C#]C#中字符串的操作 [ASP.NET]NTKO插件使用常见问题 我对C#的认知。

    Python3 与 C# 面向对象之-继承与多态   文章汇总:https://www.cnblogs.com/dotnetcrazy/p/9160514.html 目录: 2.继承 ¶ 2.1.单继 ...

  3. Java中两个List对比的算法

    Java中两个List对比的算法:   // 测试数据 // tdcsDdt.add("Z"); // tdcsDdt.add("B"); // tdcsDdt ...

  4. Java基础之基础语法

    前言:Java内功心法之基础语法,看完这篇你向Java大神的路上又迈出了一步(有什么问题或者需要资料可以联系我的扣扣:734999078) 一个Java程序可以认为是一系列对象的集合,而这些对象通过调 ...

  5. 【转】Spring学习---Bean配置的三种方式(XML、注解、Java类)介绍与对比

    [原文]https://www.toutiao.com/i6594205115605844493/ Spring学习Bean配置的三种方式(XML.注解.Java类)介绍与对比 本文将详细介绍Spri ...

  6. Java的12个语法糖【转】

    本文转载自公众号  Hollis 原创: 会反编译的 Hollis 侵权删 本文从 Java 编译原理角度,深入字节码及 class 文件,抽丝剥茧,了解 Java 中的语法糖原理及用法,帮助大家在学 ...

  7. Java同C#的语法不同之处

    Java同C#的语法不同之处... [注:转载而来但原出处不详:若是您原创请联系我]1,命名空间与包 C#为了把实现相似功能的类组织在一起,引入了命名空间的概念(namespace) Java中与此对 ...

  8. Java中的标签语法(类似于C语言goto循环体)

    Java中的标签语法(少用) 101到150的质数 此法类似于C语言中的GOTO循环 public static void main(String[] args) { int count=0; //标 ...

  9. Python学习笔记:与Java 基础语法对比

    闲着无聊学习下Python 的语法.由于我目前主要编程语言还是Java ,所以针对Python 的学习我主要是通过与Java 进行对比.我使用的是Python3,因此语法上也会遵循Python3 的规 ...

随机推荐

  1. HLJU 1046: 钓鱼(数据增强版) (贪心+优化)

    1046: 钓鱼(数据增强版) Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 11  Solved: 3 [id=1046">Subm ...

  2. 前端 JS,localStorage/sessionStorage、cookie 及 url 等实现前台数据共享、传输

    需求是这样的:需要统计用户公司某款产品用户的回馈情况,美工给的设计多个psd,每个页面里面都有一个选择题,让用户选择自己的答案,最后经过几次选择之后在最后一个页面统一提交到后台!所以这里引出的技术需求 ...

  3. Jmeter常见用法

    Jmeter (底层语言是Java)  单进程 Loadrunner (底层语言是C) 多进程 性能更好,更稳定 Tomcat  线程模式(与Java有关的都是单进程) lr的支持最大并发  跟lic ...

  4. python学习之str.lstrip()

    str.lstrip([chars]) 删除从开头开始指定的字符串,然后返回结果字符串. >>> '://www.example.com'.lstrip('w://') '.exam ...

  5. 【ActiveMQ】ActiveMQ在CentOS的搭建与使用

    下载 到ActiveMQ官网,找到下载点. 目前, 官网为http://activemq.apache.org/. 我们下载目前最新的版本吧,当前的Linux版本下载地址之一为:http://apac ...

  6. 【转】linux configure报错configure: error: C++ preprocessor “/lib/cpp” fails sanity 的解决办法

    /lib/cpp fails sanity check的解决 在某些软件的时候,运行./configure 会报错,错误提示为: configure: error: C++ preprocessor ...

  7. web.xml 基本配置

    session timeout 配置 <session-config> <session-timeout>5</session-timeout> </sess ...

  8. emWin教程目录汇总

    目录 第一章: 当前主流的小型嵌入式 GUI 第2章 初学 emWin 的准备工作及其快速上手

  9. 基于jQuery点击圆形边框弹出图片信息

    分享一款基于jQuery点击圆形边框弹出图片信息.这是一款鼠标经过图片转换成圆形边框,点击可弹出文字信息.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div id=&q ...

  10. 一款html5和css3实现的小机器人走路动画

    之前介绍了好多款html5和css3实现的动画,今天要给大家带来一款html5和css3实现的小机器人走路动画.该实例的人物用html5绘画的,动画效果是html5和css3实现的.一起看下效果图. ...