java 与其他语言的竞争_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#还有很多区别,我只是列举了其中的一小部分,仅供大家参考。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值