Java语言中基本数据类型之间的转换:自动类型转换和强制类型转换
自动类型转换:小类型到大类型
强制类型转换:大类型到小类型
例子:
byte b = 10;
short s = 15;
s = 128;
b = (byte)s;
sout(b);
128:0000 0000 1000 0000 2字节 16位
强制转换为1字节8位 (默认取出低8位) => 1000 0000 最高位为1 为负数
先减一 再取反 再加负号 0111 1111 -> 1000 0000 -> -128
Java语言中,两个整数相除,结果只保留整数部分,丢弃小数部分。
如何保留小数部分?
1.让其中一个数不是整数(强转为小数),结果就为小数
2.让其中一个数乘以1.0即可
“”双引号表示空字符串,加一个整数=字符串整数
例子:a +b + c = 1 + 1 + 6 = 8
sout(""+a+b+c) 116
sout(a+""+b+c) 116
sout(a+b+""+c) 26
sout(a+b+c+"") 8
后++表示先让变量的数值作为表达式结果,然后再让变量自身的数值+1
前++表示先让变量自身的数值+1,然后作为表达式结果
逻辑运算符
逻辑与&& 并且 同真为真,一假为假
逻辑或|| 或者 一真为真,同假为假
逻辑非! 取反 真为假,假为真
逻辑运算符的操作数均为boolean表达式
对于逻辑与来说,第一个表达式为假,则结果为假,直接跳过第二个表达式
对于逻辑或来说,第一个表达式为真,则结果为真,直接跳过第二个表达式
考点:+= 和 = + 这种方法有区别吗?什么区别
byte类型在做加法运算时会自动提升为int类型,优化机制
+=自带强转的功能
case穿透:只要后面没有break,无论下面的case分支匹不匹配,都会进去执行
continue和break关键字
continue语句在循环体中用于提前结束本次循环开始下一次循环(不继续执行i代码,去执行i++代码),只能在循环中使用
break用于退出当前代码块,在循环体中用于退出循环,既能在循环中使用,也能在switch case中使用
for(;;)这种没有循环条件的循环叫做无限循环,死循环
案例:
-
使用for循环打印5行5列*
for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print("*"); } System.out.println(); }
外层循环用于控制打印的行数
内层循环用于控制打印的列数 - 使用for循环打印三角
for (int i = 1; i <= 5; i++) { for (int j = 1; j <= i; j++) { System.out.print("*"); } System.out.println(); }
- 使用for循环打印倒三角
for (int i = 1; i <= 5; i++) { for (int j = 1; j <= 6 - i; j++) { System.out.print("*"); } System.out.println(); }
- 使用for循环打印正三角
for (int i = 1; i <= 5; i++) { for (int j = 1; j <= 5 - i;j++) { System.out.print(" "); } for (int j = 1; j <= (2 * i - 1);j++) { System.out.print("*"); } System.out.println(); }
提示用户输入一个任意位数的正整数然后反向输出
System.out.println("请输入一个正整数:"); Scanner scanner = new Scanner(System.in); int i = scanner.nextInt(); int num = i; while (num > 0){ System.out.print(num % 10); num /= 10; }