一、byte,short,char数据类型的隐式转换成int的注意点
-
在运算符(包括算术运算符、关系运算符、赋值运算符、位运算符、三目运算符、逻辑运算符)左右的byte、short、char类型的操作数都会隐式的转换成int类型,然后再做相应的计算,其结果为int类型。
short a = 1; short b = 2; short c = a + b;//报错,c的类型应该为int
-
int类型的数组中,不仅可以放int类型的元素,还可以放byte、short、char类型的元素。
short a = 1; byte b = 2; char c = 'a'; int[] arr = {a,b,c,98};
二、运算符的优先级
-
要想全部记住全部运算符的优先级,还是比较难的。但是我们得记住几个重要的
分隔符优先级最高
-
赋值运算符优先级最低
[图片上传失败...(image-7eff02-1561022043690)]
int a = 2; a *= 3 + 2; //a为10
三、水仙花数
-
什么是水仙花数
所谓的水仙花数就是指一个三位数,其各位数字的立方和等于该数本身。
-
解析
取一个数的个位上的数:
int ge = num % 10;
取一个数的十位上的数:
int shi = num / 10 % 10;
更一般化地,取某位上的数,就是拿这个数除以这个位上的权重,再模一个周期;
对于十进制的数:
int digit = num / weight % 10;
-
代码实现
//打印所有的水仙花数 public void printNarcissisticNumber(){ for(int i = 100; i < 999; i++) { int ge = i % 10; int shi = i / 10 % 10; int bai = i / 100 % 10; if(Math.pow(ge,3) + Math.pow(shi,3) + Math.pow(bai,3) == i) { System.out.print(i+" "); } } }
-
取一个整数的所有位上的数
public static void getDigits(int num) { int factor = 0; int digit = 0; System.out.print(num % 10 + " "); while((num /= 10) != 0) { System.out.print(num % 10 + " "); } }
四、100以内的质数
质数:一个数的因数只有1和它本身
-
代码实现
private void printPrime() { boolean isPrime = false; for(int i = 2; i < 100; i ++) { if(i % 2 == 0 && i != 2) continue; isPrime = true; for(int j = 2; j <= Math.sqrt(i); j ++) { if(i % j == 0) { isPrime = false; } } if(isPrime) { System.out.print(i+" "); } } }
五、百文买百鸡
-
描述
有100文钱,正好要买100只鸡,公鸡5文一只,母鸡3文一只,小鸡三只1文,公鸡,母鸡,小鸡分别有多少只?
public void getChicken() { for(int gong = 0; gong < 20; gong ++) { for(int mu = 0; mu < 33; mu ++) { int xiao = 100-gong-mu; if((xiao % 3 == 0) && (gong*5 + mu*3 + xiao/3 == 100)) { System.out.println("公鸡:"+gong+",母鸡:"+mu+",小鸡"+xiao); } } } }
六、整形变量的交换
-
引入第三方变量
int a = 1; int b = 2; int temp = a; a = b; temp = b;
-
加减法(不引入第三方变量)
int a = 1; int b = 2; a = a+b; b = a-b; a = a-b;
-
异或运算符
int a = 1; int b = 2; a = a^b; b = a^b; a = a^b;