如何使用"<"或">"将Java中的两个对象进行比较,例如
MyObject<String> obj1= new MyObject<String>(“blablabla”, 25);
MyObject<String> obj2= new MyObject<String>(“nannaanana”, 17);
if (obj1 > obj2)
do something.
Run Code Online (Sandbox Code Playgroud)
我把MyObject类标题设为
public class MyObject<T extends Comparable<T>> implements Comparable<MyObject<T>>
并且创建了方法Comp但是我获得的所有增益现在我可以在对象列表上使用"sort",但是如何直接比较两个对象?是
if(obj1.compareTo(obj2) > 0)
do something
Run Code Online (Sandbox Code Playgroud)
唯一的办法?
我有一个这样的课:
private static class Num {
private int val;
public Num(int val) {
this.val = val;
}
}
Run Code Online (Sandbox Code Playgroud)
是否可以使用"+" - 运算符添加到类的对象?
Num a = new Num(18);
Num b = new Num(26);
Num c = a + b;
Run Code Online (Sandbox Code Playgroud) 根据我在java中的知识,我知道,Java语言中没有运算符重载.那么,为什么这段代码会两次打印'true'?
String s1 = "abc";
String s2 = "abc";
System.out.println(s1==s2);
Integer i1 = 1;
Integer i2 = 1;
System.out.println(i1==i2);
Run Code Online (Sandbox Code Playgroud) 我试图创建一个无符号整数类.
public class UnsignedInteger extends Number implements Comparable<UnsignedInteger>
{
...
}
Run Code Online (Sandbox Code Playgroud)
有没有办法实现运营商,如; +, - ,*,/,<<,>>,|,^,>>>,<<
可能重复:
Java运算符重载
在c ++中,我们可以执行运算符重载.但Java也是一种面向对象的语言.那么为什么java不支持重载?
在Java中,如果要检查两个字符串是否相等,在它们的值相同的意义上,他/她需要使用该equals方法.例如:
String foo = "foo";
String bar = "bar";
if(foo.equals(bar)) { /* do stuff */ }
Run Code Online (Sandbox Code Playgroud)
如果想要检查参考相等性,他需要在两个字符串上使用==运算符.
if( foo == bar ) { /* do stuff */ }
Run Code Online (Sandbox Code Playgroud)
所以我的问题是==运算符是否用于String类?为什么要比较字符串引用?
编辑:
我不问:如何比较字符串?==如何工作?该equals方法如何工作?
我要问的是==运算符对Java中的String类有什么用处?不重载它的理由是什么,以便进行深入的比较?
假设我们有一个课程如下:
public class Time{
int hour;
int min;
Time(int hour,int m){
hour=h;
min=m;
}
public String toString(){
return hour+":"+min;
}
}
Run Code Online (Sandbox Code Playgroud)
我想写一些像这样的代码,主要是结果,如评论中所示:
Time t1 = new Time(13,45);
Time t2= new Time(12,05);
System.out.println(t1>=t2); // true
System.out.println(t1<t2); // false
System.out.println(t1+4); // 17:45
System.out.println(t1-t2); // 1:40
System.out.println(t1+t2); // 1:50 (actually 25:50)
System.out.println(t2++); // 13:05
Run Code Online (Sandbox Code Playgroud)
我可以通过接口等来做到这一点,或者我唯一能做的就是编写方法而不是使用运算符?
提前致谢.
从语言设计的角度来看,什么类型的实践支持运算符重载?
有什么利弊(如果有的话)?
我想知道是否有可能比较字符串就好像它们是数字一样.例如,你有什么方法可以做到这一点"Cat" > "Dog"
所以我感兴趣的是有没有办法在Java 8中重载运算符?是否存在类似的东西
void operator(){ }
Run Code Online (Sandbox Code Playgroud)
在C++?