java运算符重载
㈠ java中有没有像c++那样的运算符重载的功能
我觉得楼主的疑虑并不矛盾啊。或许是楼主误解了。java不允许运算符重载指的是用java来写代码的人吧。意思就是说用java不能像用c++那样给我们提供了重载运算符的方式。并不是说java里面就不存在运算符重载。 而这个字符串连接运算符 + 就是重载的。java对String类型重载了+操作符,可以直接使用+对两个字符串进行连接. 只不过这个重载方式被人已经写好了。我们直接用。至于在jvm里面怎么运行。额额,我只能淡淡的说,我也不清楚。java类
char a=37;
Object s2="12323"+a;
jvm编译后的class:
Object s2 = (new StringBuilder("12323")).append(a).toString();
个人觉的java根本就不支持操作符重载,只是在编译时做了处理。
额额。。。或许也有道理。把这种所谓的运算符重载理解成一种方法的重写,只是在方法体里面对参数做的处理。 我c++学的不是很好,所以我也不知道c++上所谓的运算符重载我们不是一样写一个重载函数,然后在函数体里面做对应的操作,然后通常将操作后的实例返回回去。我觉得一定程度上来说是差不多的。
㈡ JAVA怎样重载操作符
还是两个字符串相加 s1.name + s2.name 或者 s1.getName()+s2.getName
㈢ 运算符重载是什么
Java中已经不需要自己去实现运算符重载了。在C++等语言中,运算符重载主要是便于对象运算上的方面,使得对对象的“运算符操作”就如同对基本类型操作那样简单,这也体现了操作上的一致性。至于重载时需要注意到的事项,各种C++编程语言书中基本都会有所涉及,希望你亲自去参考下。
㈣ java 中有没有运算符重载的概念,字符串拼接“+”,算是怎么回事
java中没有运算符重载,你说的string+string,是java内置将String类特殊处理为和基本类型Integer,Double等相同的类型,字符串相加实际是调用方法append方法。
比如:
String x = "a1" + "a2"
其实在编译后,代码变为
String x = (new StringBuilder(String.valueOf("a1"))).append("a2").toString();
这就是为什么在操作String时建议采用StringBuffer了,上面的操作显然对多次String的相加不利。
㈤ java怎么实现自定义数值类型运算符重载
java是不能自己重载运算符的,唯一一个可以重载的运算符是+并且这个+还是库函数已经弄好了的。你可以用相应的函数替代就可以了,不一定非要运算符不可的。
㈥ 为什么Java不支持操作符重载
java也有运算符重载的,+就是。
至于为什么没有开放更多运算符重载,可能是因为这个本身语法糖嫌疑过大,并无一定存在的必要吧。对于初学者有时候甚至会造成混淆。
㈦ JAVA有运算符重载吗
其实是有的,就是字符串操作里的+和+=。但是不能自定义运算符重载,所以只有这个是重载的。它的代替实现实际上就是方法(函数)。比如BigDecimal类,可以用来表示很长的十进制数,这样的数相加并不用重载的+号而直接有一个叫做add(BigDecimal)的成员函数来实现。
㈧ java中重载与重写的区别
java中有两个东西,一个是 方法重载 一个是 成员覆写 ,
方法重载 是指 一个类里面可以有多个方法,而且方法名称相同,但是方法的参数类型或者参数个数不同,功能也可以不同。
成员覆写 是指子类继承父类后,可以覆盖掉父类的 方法 和 属性。子类的方法和属性名称类型与父类的一样,就覆盖掉父类的属性和方法。
重载只能是方法,在同一个类中。
覆写是子类与父类之间,属性与方法都可以覆写。
其实重写就是重载,而令一个是覆写。
㈨ 谁能告诉我Java为啥不能支持运算符重载啊
java并不支持这项特性,但是这样的功能也是可以直接使用方法进行实现,就是用起来比较的啰嗦,c++一个运算符搞定的事情,java需要写一个方法调用。
对面向对象的语言来说,运算符本身就不够“面向对象”,一切都可以用方法来实现
java中确实没有云运算符重载,唯一例外是String里面的=和+
String类的"=","+","+=",看似运算符重载,实际不是,只是在java编译器里做了一点手脚。
java编译器对String的运算符做了特殊处理。
java没有提供运算符重载的功能,程序员无法定义+ * 等运算符,没有给程序员自己重载运算符的权利。