zoukankan      html  css  js  c++  java
  • java入门之从C#快速入门java

    Java  VS   C#.Net

    1

    常量:使用final关键字

    常量:使用const、readonly关键字

    2

    使用Eclipse导入已有工程

    使用VS直接打开各个项目的解决方案即可

    3

    没有属性,使用变量需要定义get,set方法

    存在属性{get;set;}

    4

    使用foreach(object o in objectList){}

    存在foreach(object o in list){}

    5

    无函数指针

    有专门的函数指针----委托

    6

    无var 关键字,类型不能动态匹配

    存在var 关键字

    Var x=new A();

    7

    一个.java文件只能有一个public class

    不存在此约束

    8

    不存在结构体一说,一般大家指的结构体就是指的class

    有结构体struct  ,属于值类型

    9

    List只是一个接口,需要ArrayList  或

    LiinkedList 实现

    IList 是接口,List<T>是实现

    10

    在linux上可以很好的运行

    在linux上运行起来比较麻烦,需要将.net平台移植到linux才可以。所以除非技术爱好者,一般很少有人这样做。

    11

    不存在使用关键字将值类型变成引用传递的情况

    可以使用 ref、out等关键字将值类型的引用传递

    12

    没有as 关键字的用法

    存在as ,用来转换类型的 a as List<string>

    13

    使用 instanceof 判断是否可以转换

    使用is 判断是否可以转换

    14

    GC:存在,但是全部托管,不能主动回收

    GC:存在,除去特殊指定外剩余全部托管。如果有需要,自己也可以主动对托管变量进行回收

    15

    用Extends进行继承

    类似于C++,使用“:”进行继承

    16

    使用final的类不能继承

    使用sealed 表示类不能被继承

    17

    无索引器

    有索引器,这个比较有用,想学.net的可以重点看下

    18

    生成的是字节码,在jvm(java 虚拟机)上运行

    生成IL语言在.NET CLR(公共语言运行时(.net虚拟机)上运行

    19

    生成是的.jar 文件

    生成结果是,exe 或者.dll文件

    20

    命名规范:

    常量:使用全部大写字母加下划线的组成

    类命名:Pascal 如:AppleFruit

    方法和变量:Camel 如:appleFruit

    命名规范:

    常量:使用全部大写字母加下划线的组成

    类命名:Pascal 如 AppleFruit

    变量:Camel 如:appleFruit

    方法:Pascal

    21

    无法折叠代码块,需要添加特殊的组件,研究了一下比较麻烦,性价比不高

    使用

    #region

    #endregion 折叠代码块

    22

    F(final int x,final int y)表示x,y不能被修改

    研究了一下,貌似没有很好的方法,如果有你有的话可以联系我

    23

    构造函数中使用super引用父类的构造函数

    使用():base引用父类的构造函数

    24

    Package in java

    (1)使用包 package来包含类的程序集

    (2)引用包时使用import

    (3)包之间是并列关系,不存在包含关系

    (4)包的物理结构和逻辑结构一定要一致

    (5)包不存在别名一说

    Namespace in C#

    (1)使用明明空间来包含程序集

    (2)引用命名空间using

    (3)命名空间可以存在包含关系

    (4)命名空只是一种逻辑结构,可以与物理结构不一致

    (5)允许使用命名空间的别名(当命名空间比较长时,引用的比较麻烦)

    25

    数值类型使用“==”比较

    字符串比较使用 equals比较

     

    数值类型比较使用==

    字符串使用equals比较和使用==比较差别不是非常大(当有比较的字符串是null时,两者还是存在区别的)

    26

    String.formate时(%s)与后面的变量保持一一对应

    String.formate时{0}使用索引来指示,使用后续的对应变量,如果需要格式化的话,使用“:”来指定

    27

    大部分工程都需要安装程序,然后debug模式下连接服务器,然后请求才会到达ide中,和php的调试请求差不多

    一般本地直接可以run起来,通过运行的UI来调用本地的代码

    28

    没有goto 语句

    保留了goto语句

    29

    没有指针的概念

    有指针,但是需要在unsafe的情况下使用

    30

    枚举:

    除了和C#一样的设置常量数值,java仍保留了特殊类的基本共跟你过,让玩家可以自己玩,而C#对此做了特殊限制

    枚举:

    使用enum枚举器来进行枚举,只能enum设置常量数值

    31

    多线程使用synchronized使代码同步

    使用lock{}来锁定代码

    32

    不能重载运算符

    可以重载运算符,但是不鼓励

    33

    可变参数:

    Void sum(int…list){}以“…”三个字为关键字

    可变参数:以params为关键字

     34

    对异常的描述:

    java中,异常分为两种,运行时异常(也就是uncheckException)和已检查异常checkException,但是checkException是必须要处理的,也就是不能抛出,必须通过try-catch来完成,在方法的定义上也必须写上 throws 某某异常,需要Check Exception如果不处理的话是不能进行编译的。对于运行时异常可以直接抛出,无需专门的try catch

    C#和 C++类似,不需要对代码强制trycatch ,也不需要在写出某种throw后,一定要在方法的定义上加上 throws...


            C#作为微软拿出来与java对抗的语言,在语法和特性上一定是要优于java 的,同事微软还提供了大量的语法来支持.net 和office、sqlserver、access等微软其他产品的契合。但是java作为开源产品中很重要的语言,如今已经快接近20岁了,有大量的成熟的插件和组件以及开源的框架来配合,这点是C#无法媲美的,所以无所谓孰优孰劣。貌似以前看过这样一句话,大意是,java 是开源的,有大量丰富的开源框架可以用,C#是闭源的,但是微软很给力(虽然微软现在已经开始拥抱.net平台了,但是C#可以有成熟的开源环境还需要非常长的路要走)。

             文本大致比较了一下java和C#的基本语法和基本概念以及他们的ide,其目的是:

    1、让程序员可以再熟悉一门语言的情况下,再学习另外一门语言可以快速的入门。

    2、对自己在工作后开始接触java做一个总结。

    不论怎么对比java和C#,毕竟他们是属于两个平台,两种完全不同的语言,所以语法上千差万别,本文也只是为了让大家快速的入门、上手而做了一些记录。如果文中哪里有差错,大家可以指出。如果还有一些重要的语法差异,被我忽略了,也可以指出来。


  • 相关阅读:
    Mac 安装brew的正确姿势
    Jmeter分布式压测及踩坑记录
    Jmeter录制脚本
    mitmproxy使用详解
    Python单元测试框架pytest常用测试报告类型
    基于Java+Spring Boot开源项目JeeSite的Jenkins持续交付介绍
    Maven入门
    Linux Shell 编程基础详解——吐血整理,墙裂推荐!
    使用Jenkins+Blue Ocean 持续构建自动化部署之安卓源码打包、测试、邮件通知
    使用Jenkins+Pipline 持续构建自动化部署之安卓源码打包、测试、邮件通知
  • 原文地址:https://www.cnblogs.com/jilodream/p/4219796.html
Copyright © 2011-2022 走看看