1.异或运算符的应用:
变量互换;
int i1 = 3; // i1 = 011 int i2 = 5; // i2 = 101 System.out.println("i1的值:" + i1); System.out.println("i2的值:" + i2); System.out.println("进行变量互换"); 用到了异或运算符 i1 = i1 ^ i2; // i1 = 110 i2 = i1 ^ i2; // i2 = 011 i1 = i1 ^ i2; // i1 = 101 System.out.println("i1的值:" + i1); System.out.println("i2的值:" + i2);
例题:
int a = 1, b = 2, c = 3; 是对的,但是格式不是很规范
int i = 1, j; j没有定义
float f1 = (float) 0.1; 小数默认的都是为double,所以要强转成float;
float f2 = 123; 一开始应该是为默认的int型,它的优先级小于float,所以是正确的;
long l1 = 12345678, l2 = 88888888888L;l2的形式不为long型,加一个L是为了强制转换为long型;
double d1 = 2e20,科学计数法; d2 = 124; 默认为int型,显示的是double.
byte b1 = 1, b2 = 2, b3 =(byte) 129; 这里面129已经超过了byte的范围,要强制转换一下
j = j + 10; j没有定义
i = i / 10; 得出i = 0;
i = i * 0.1; i = 0,因为i*0.1得出的结果最后还是int,所以只取小数点前面的0,不是四舍五入.
char c1 = 'a', c2 = 125;
float f3 = f1 + f2; 正确
float f4 = f1 + f2 * 0.1; 改成double.
double d = d1 * i + j; 正确
double f = d1 * 5 + d2; 正确
知识点:
分支与循环
作用域, 每一对{ }中间的部分叫作用域
while (逻辑表达式) {
}
do {
} while(逻辑表达式);
continue 终止当前循环, 继续下次循环
break 跳出当前循环
例子:
int i = 1; while (i <= 10) { i++; if (i == 5) { continue; } System.out.println("i: " + i);
总结: 分析一下,输出来的结果里没有1,是因为一开始 i 就加一,变为2,开始输出,当 i = 5时,终止当前循环,进行下次循环.
switch...case..default
1, 防止case穿透
2.同样的case条件可以合并
3, if分支和switch分支语句有什么区别(switch语句只能判断int和String)
for (表达式1; 表达式2; 表达式3) {
}
先执行表达式1
再执行表达式2(逻辑表达式)
当表达式2返回true, 执行{}代码
再执行表达式3
1. 1!+2!+3!+4!+5! 求的是阶乘.
int result = 0;//1!+2!+3!+4!+5! 求的是阶乘. int f = 1 ; for(int i = 1; i <= 5; i++ ){ f = f*i; result += f;//result = result + f;result = 0+1=1; result = 1+2; } //总结: f= f*i,f=1*1(1!); f=1*2(2!); f = 1*2*3(3!) System.out.println("result:"+result);
2.打印100以内前5个能被3整除的整数
int counter = 0; //计数器的作用,用来判断出现的被3整除的整数的个数 for ( int i = 1; i <= 100 ; i++ ){ if ( i%3 == 0 ){ counter = counter + 1; System.out.println("i:"+i); } if (counter == 5){ break; } }
3.打印4*5的矩形
for ( int i = 1; i<=5 ; i++ ){ for ( int j = 1; j<=4 ; j++ ){ System.out.print("*"); //控制的是列,其中println,如果去掉ln,就是不换行 } System.out.println(); // 控制的是行 }
4.打印101-200之间的质数
for ( int i = 101; i<=200 ; i++){ int k = 0; //定义的是能选出质数 for( int j = 2 ; j<i ; j++){ if( i%j == 0){ k = 1;//不是质数 break; //跳出这个循环 } } if( k == 0){ System.out.println(i); } }
这一步的目的是从这些数取出来,只要是能被除了1和本身之外,不能被其他的数整除的就是质数.