第一题:
/*
需求:
1、计算5 个月的生活大概开销(spending), 比如
rent(房租)=800.00
mealCost(吃饭)=900.00
clothingCosts(买衣服)= 300.00
otherCosts(其他费用)= 300.00
*/
public class dome1
{
publicstatic void main(String[] args)
{
doublerent = 800.00 ;
doublemealCost = 900.00 ;
doubleclothingCosts = 300.00 ;
doubleotherCosts = 300.00 ;
doublespending = rent + mealCost + clothingCosts + otherCosts ;
System.out.println(spending); //结果为:2300.0
}
}
第二题:
/*
需求:2、计算 12 个月贷款利息之和(totalInterest)。假如学费(tuition) 10000.00,每月利率(rate)1%。(不考虑复利)
*/
public class dome2
{
publicstatic void main(String[] args)
{
doubletuition = 10000.00 ;
doublerate = 0.01 ;
doublemonth = 12.0 ;
doubletotalInterest = tuition / month * rate * month ;
System.out.println(totalInterest);
}
}
第三题:
/*
需求:定义一个 int 变量(unfinishedCount)存放当前你作业未完成次数,定义一个String 变量(result)存放三元元算法返回的结果,达到 3 次或以上就存放“开除”,否则存放“还在”。
*/
public class dome3
{
publicstatic void main(String[] args)
{
for(inti=0;i<=3;i++)
{
intunfinishedCount = i ;
String result = unfinishedCount >= 3 ? "开除": "还在" ;
System.out.println(result);
}
}
}
第四题:
int x = 10;
int a= x + x++; //从左往右计算(结合性的原因): 第一个x直接被x=10赋值,变成了10,后面的x++再进行运算, x++ = 10(取原来的值进行计算) , 结果为20 ;
System.out.println("a=" + a); //20
System.out.println("x=" + x);//11
int b = x + ++x; //11 + 12 = 23 ;
System.out.println("b=" + b); //23
System.out.println("x=" + x);//12
int c = x + x--;// 12 + 12 = 24 ;
System.out.println("c=" + c); //24
System.out.println("x=" + x); //11
int d = x + --x; //11 + 10 = 21 ;
System.out.println("d=" + d); //21
System.out.println("x=" + x);//10
int a = 15;
int b = 2;
int x = a &b;
/*
a二进制: 00001111
b二进制: 00000010
&
__________________________
00000010------->2的原码;
*/
int y = a | b;
/*
a二进制: 00001111
b二进制: 00000010
|
__________________________
00001111------->15的原码;
*/
int z = a ^ b;
/*
a二进制: 00001111
b二进制: 00000010
^
__________________________
00001101------->13的原码;
*/
System.out.println(a+ "&" + b + "=" + x); // x = 2 ;
System.out.println(a+ "|" + b + "=" + y);// y = 15 ;
System.out.println(a+ "^" + b + "=" + z);// z = 13 ;
第五题:
/*
计算程序输出结果:
int a = 3, b = 5;
boolean c = a++ >10 & b++ > 10;
System.out.println("a="+ a + ",b=" + b + ",c=" + c);
*/
/*
因为a++ 和 b++ 所以最后 a 和 b肯定都自加1, a = 4 , b = 6 ;
1)a++> 10
a++ 先自增,自增完成之后,再返回a自增之前原来的值进行运算,a原来的值为3,自增完成之后的值为4 , 所以 3>10为false.
a++ > 10为 false ;
2)b++> 10
b++ 先自增,自增完成之后,再返回b自增之前原来的值进行运算,b原来的值为5,自增完成之后的值为6 , 所以 5>10为false.
b++ > 10为 false ;
3)因为a++>10为false , b++>10为false ,所以a++>10 & b++>10 为 false ,所以c为false.
最后结果为: a = 4 , b = 6 , c = false ;
*/
public class dome5
{
publicstatic void main(String[] args)
{
inta = 3, b = 5;
booleanc = a++ > 10 & b++ > 10;
System.out.println("a="+ a + ",b=" + b + ",c=" + c);//a = 4 , b = 6 , c = false ;
}
}
第六题:
/*
需求:
- 扩展:
1. 0xaa | 0x55
2. 15 & 240
3. 10 ^ 12
4. -2>> 1 //右移补齐用的是符号位上的符号;
5. -2>>> 1 //右移补齐用的是'0';
*/
/*
1).0xaa | 0x55:
0x为十六进制;
十六进制取值范围: 0~9 a b c d e f ;
十六进制数:aa 转换成 二进制的数:10101010
十六进制数:55 转换成 二进制的数:01010101
10101010
| 01010101
---------------
11111111 ----> 十进制数:255;
2).15 & 240
15的二进制数为: 00001111 ;
240的二进制数为: 11110000 ;
00001111
& 11110000
-------------
00000000----> 十进制数为:0 ;
3).10 ^ 12
10的二进制数为: 00001010
12的二进制数为: 00001100
1010
^ 1100
----------------
0110-----------> 十进制为:6
4) -2 >> 1
-2的原码:?10000000_00000000_00000000_00000010;
反码为:11111111_11111111_11111111_11111101;
补码为:11111111_11111111_11111111_11111110;
向右移1位:11111111_11111111_11111111_1111111
再从最左边补齐与符号位相同的符号:111111111_11111111_11111111_1111111 -----> (-1的原码)
5) -2 >>> 1
-2的原码:?10000000_00000000_00000000_00000010;
反码为:11111111_11111111_11111111_11111101;
补码为:11111111_11111111_11111111_11111110;
向右移1位:11111111_11111111_11111111_1111111
再从最左边补齐'0':011111111_11111111_11111111_1111111 -----> 2147483647的原码
*/
public class dome6
{
publicstatic void main(String[] args)
{
System.out.println(0xaa|0x55);//255
System.out.println(15& 240); //0
System.out.println(10^ 12); //6
System.out.println(-2>> 1);//-1
System.out.println(-2>>> 1);//2147483647
}
}