Java与其他语言的对比

一、Java的优点:

(1)可移植性好

(2)垃圾收集

(3)支持多线程

(4)没有麻烦的指针

(5)支持分布式开发

(6)面向对象

(7)安全、简单

Java与C#对比的好处:

(1)c#中有static constructor(静态构造函数),而java中包含静态块。

详细介绍一下:在java中使用“{}”称为代码块,根据代码块的定义位置及声明的关键字不同,代码块可以分成以下四部分:

a.普通块;b.构造块;c.静态块;d.同步块;

a.普通块:一个方法中出现的"{}",如:

public static void main(String args[]){

     //普通代码块

     {

          .....

     }

}

b.构造块:直接在类中定义的代码块,构造块优于构造方法先执行,如:

class Demo{

    //构造块

    {

         ......

    }

    public Demo(){//构造方法

    }

}

c.静态块:关键字 static声明的代码块,用来静态属性初始化,静态块用于主方法执行,静态块优于构造块执行,并且只执行一次,如:

public class CodeDemo{

     static{

         //静态块

     }

     public static void main(String args[]){

     }

}

d.同步块:介绍一下,java同步的实现有两种:d1.同步代码块块(就是我们要讲的同步块);d2.同步方法

d1.同步代码块:使用synchronized关键字进行同步代码块的声明,但是在使用此操作时必须明确的指出到底要锁定的是哪个对象,一般都是以当前对象为主:synchronized(对象this或者类.class){//需要同步的代码,一般是将this锁定},保证在synchronized(this)控制的这一段代码中只有一个线程在执行,不会有多个线程同时执行。如:

for(int i=0;i<50;i++){

       synchronized(this){

         if(this.ticket>0)

         {

               try{

                         Thread.sleep(10000);

                    }catch(InterruptedException e)

                    {

                          e.printStackTrace();

                    }

         }

    }

}

d2.同步方法:

public void run(){

      for(int i=0;i<50;i++)

        {

                 this.sale();//调用的同步方法

         }

}

public synchronized void sale(){

          if(this.ticket>0){

                 try{}

                 catch(){}//同上

          } 

}

(2)java中的main函数时必须是public static void main(String args[]){},否则JVM拒绝运;在C#中,main函数可以是private类型,protected也可以,可以没有参数,返回值int类型。

(3)java在继承、多态方面比C#强,java默认多态,而C#要求加上virtual(在父类上)和override(在子类上),而且C#要求不能改变原来的访问修饰符。

(4)c#中防止一个类被继承,要用到关键字sealed,而定义一个变量要用const;java则统一使用final.

(5)c#中要比较两个引用变量是否指向同一个对象,不能用java中的==,而要用object里的ReferenceEquals方法。如下:

a1==a2;object.RefereceEquals(a1,a2)。

(6)C#中没有原始类型的包装类,但是C#提供了自动装箱,拆箱需要强制转换。而java在jdk1.5以后就完全是自动拆装箱了。

java和C#还有很多区别,我只是列举了其中的一小部分,仅供大家参考。


你可能感兴趣的:(java,C#,分布式)