大家好,今天小编关注到一个比较有意思的话题,就是关于java语言运算的问题,于是小编就整理了4个相关介绍Java语言运算的解答,让我们一起看看吧。
- 用Java实现计算文件的SHA256值?
- 求java编程题:计算1到100累加的和?
- java语言编写。定义一个“学生”类,然后创建10个学生对象,计算他们的平均成绩、最高分和最低分?
- 为什么Java不支持运算符重载?
用JAVA实现计算文件的SHA256值?
请参考
importj***a.security.MessageDigest;
importj***a.security.NoSuchAlgorithmException;
publicclassBenchmarkSha256{
publicstaticvoidmain(String[]args)throwsNoSuchAlgorithmException{
intsize=*******;
byte[]bytes=newbyte[size];
MessageDigestmd=MessageDigest.getInstance("SHA-256");
longstartTime=System.nanoTime();
for(inti=0;i
求j***a编程题:计算1到100累加的和?
publicstaticvoidGetSum(){intsum=0;for(inti=1;i<=100;i++){sum+=i;}System.out.println("和为:"+sum);}
j***a语言编写。定义一个“学生”类,然后创建10个学生对象,计算他们的平均成绩、最高分和最低分?
for(j=0;jdata[i 1])
{
temp=data[i];
data[i]=data[i 1];
data[i 1]=temp;
}
}
}
★最大值为data[9]
★最小值为data[0]
为什么J***a不支持运算符重载?
J***a的确不支持运算符重载,然后历史原因觉得和J***a起初的设计思想有关(严格的“OOP”思想),然后反驳下楼上说J***a里面的String可以使用“+”进行连接的问题,藐视看起来像是重载了运算符,其实这个只是JVM做的语法糖。
来,看下这个例子。
看到效果如下::
是不是发现多了些什么?
没错,JVM编译的时候自动给你搞出了个StringBuilder,然后invokevirtual调用了下生成的StringBuilder对象的append方法,紧接着又调了toString方法。。。剩下自己脑补吧,反正就这么几句,把Constant pool也截图给你:
所以说啊,这个String的“+”操作符并没有进行什么重载,这个根本就是一个语法糖。
要说为什么J***a不支持操作符重载,我觉得楼上说的很好 (引用下)-----------------“个人觉得从项目管理和代码质量的角度来看,运算符重载可能导致代码的可读性降低,不宜维护。J***a中去掉这个特性也没什么不好的。”的确,个人也认为(引用自网络)----“操作符重载增加了复杂性,这与J***A最初的设计思想不符,它并不实用,反而增加了程序的阅读性”。严格的“OOP”思想可能是这个问题的历史原因。
J***a不支持运算符重载,具体为什么,我可能说的不太完美,但J***a就是这么实用,热门,
与C++、C#不同,不支持多重继承,没有指针,没有引用传递,就少了很多功能,下面我讲一下J***a不支持运算符重载的优点,实用性。
一、清晰性。
清晰性是J***a设计者的目标之一。设计者是希望有一种清晰,真正面向对象的语言。如果有运算符重载的话,肯定会比没有运算符重载设计更加复杂,甚至会减慢编译器的速度。
二、可以有效避免程序错误。
用运算符重载的话,可能会使整个项目的开发人员处于特别紧张的状态,运算符重载将为同一运算符赋予多种含义,这样会增加很多编程错误,可以说这样会增加整个项目的难度,会让开发人员陷入一种无奈,到最后要去学习,去研究导致最后交付不了。因此没有太大的意义,所以这点好处是有的。
三、让开发处理更容易。
and
可能很多人用过C++,就会发现,其实运算符重载也挺方便,但是在J***A中就不这样用,J***a的目标之一就是清晰性。
到此,以上就是小编对于j***a语言运算的问题就介绍到这了,希望介绍关于j***a语言运算的4点解答对大家有用。