欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java困惑

程序员文章站 2022-03-06 15:47:51
...
一,重复的类型申明

User user=new User();

说明:Java是静态语言,为了这一点,声明变量的时候必须明确告诉编译器该变量的类型。Java编译器就不能智能点吗?

二,临时变量

       int total=0;

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

       {

           total+=i;

       }

说明:total和i变量,造成局部代码臃肿,代码有更多的状态,多线程控制非常困难。

三,static对面向对象的冲击

      public class Person {

          public static int total=0;

      }

说明:static把不属于对象模板的东西硬生生的塞进去,使得模板不伦不类。

四,不支持高阶函数和闭包

     public void loan(operate)

    {

       BufferedReader in = null;

        try{

           in=new BufferedReader(new FileReader(filename));

           operate

        }catch(Exception e)

        {

            e.printStackTrace();

        }finally{

            in.close();

        }

    }

说明:不能以函数作为参数,使得Java处理上面类似的需求时,最优雅的实现就是:先申明一个接口,写多个类实现这个接口中的方法,然后把这个接口作为这个函数的参数。结果便是,类的数量迅速增加,类也变成了只是一个方法的包装器!

五,switch只支持int和enum类型

   switch(name){//java不支持这样写

      case "zhangshan":...

      case "lisi":...

      case "wangwu":...

      default:...

    }

说明:相信有很多Java程序员质疑,Java的switch为什么只支持int和enum类型?

六,synchronized泛滥

    public synchronized void  getResouce()

    {

        ...

}

说明:Java编程中最难的要数多线程编程,synchronized是很多程序员迈不过的槛!

七,转义之痛

    String path="c:\\test\\test.java";

String content="hello ,\"Mr Right\"";

说明:转义,让优秀的程序员也不得不从流畅的编程中停下来,为编译器的无能做低级劳动。

  八,运算符重载

  public class Complex {

    private int real;

    private int imaginary;

    +(Complex complex){

  return new Complex(real+complex.real,

                         imaginary+complex.imaginary);

}

}

说明:运算符重载,多么优美的风景线,Java却无情的拉上了封条。

九,繁琐的多重循环

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

    {

        for(int j=0;j<m;j++)

        {

            ...

        }

}

说明:大家也许已经习惯了多重循环,但我们为什么要习惯这种笨拙的实现?

十,多余的字符

   public String getName()

{

  return this.name;

}

说明:()必须吗?String必须吗?return必须吗?.必须吗?;必须吗?