Java几个小问题

来源:百度知道 编辑:UC知道 时间:2024/05/24 13:01:40
第一个问题:
public class OperatorsAndExpressions {
void equalsMethod2() {
String s1=new String("Hello");
String s2=new String("Hello");
System.out.println(s1==s2);
System.out.println(s1.equals(s2));

class MyValue {
int i;
}

MyValue v1=new MyValue();
MyValue v2=new MyValue();
v1.i=v2.i=2003;
System.out.println(v1.equals(v2));
}
public static void main(String args[]) {
OperatorsAndExpressions OperAndExp=new OperatorsAndExpressions();
//用于对象比较的相等运算符
OperAndExp.equalsMethod2();
}
}

我想请问:上面这里例子中的v1.i=v2.i=2003是什么意思(实在看不懂)?还有就是为什么最后一个是false?

第二个问题:
public class OperatorsAndExpressions
void priorityOfBitOperator(){
int a=-67,b=116,c=78;
//a=10111101,b=01110100,c=01001110
int d=~a|b&c;
int e=~c>>2&(a|~b);
int f=a^b&c;

第1个问题,你的代码有错误,修改后代码如下
class MyValue {
static int i=0;
static MyValue v1 = new MyValue();
static MyValue v2 = new MyValue();

public static void main(String args[]) {
OperatorsAndExpressions OperAndExp = new OperatorsAndExpressions();
//用于对象比较的相等运算符
OperAndExp.equalsMethod2();
v1.i=v2.i=2003;
}
}

class OperatorsAndExpressions {
void equalsMethod2() {
String s1 = new String("Hello");
String s2 = new String("Hello");
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
}
}
//输出结果为 false true
v1.i=v2.i=2003 这段代码意思是把2003赋给v1.i和v2.i 用equals判定输出是true不是false

第3个问题首先Math*random(26)是生成随机数区间为[0,26) 'A'是阿斯科码中的大写A c=(char)('A'+(int)(Math.random()*26))就是随机选择一个大写英文字母

第4个问题 (i+"×"+j+"="+i*j+" ") i是被乘数 j是乘数 i*j是计算后的结果
"×" "=" 是要打印符号 例如 i=1