📃个人主页:个人主页
🔥系列专栏:JAVASE基础
目录
🍊前言:
🍉类型转换
1.自动类型转换
什么是自动类型转换,为什么要学习自动类型转换?
byte a = 12 ;
int b = a;
System.out.println(b); // 12
自动类型转换的其他形式
public class base {
public static void main(String[] args) {
char a='a';
int b=a;
System.out.println("a:"+a);
System.out.println("b:"+b);
byte c = 12 ;
int d = c;
System.out.println("d:"+d); // 12
}
}
2.表达式的自动类型转换
在表达式中,小范围类型的变量会自动转换成当前较大范围的类型再运算。
public static void main(String[] args) {
byte a=10;
int b=20;
double c=1.0;
double sum=a+b+c;
System.out.println(sum);
byte i=100;
byte j=120;
int k=i+j;
System.out.println(k);
}
之所以 2个byte类型相加是int类型,是因为2个byte类型相加后 其值可能会越界 所以用int来接收
3.强制类型转换
场景:
问题
类型范围大的数据或者变量,不能直接赋值给类型范围小的变量,会报错。
强制类型转换
可以强行将类型范围大的变量、数据赋值给类型范围小的变量。
强制类型转换底层原理
注意事项
- 强制类型转换可能造成数据(丢失)溢出;
- 浮点型强转成整型,直接丢掉小数部分,保留整数部分返回。
🥦运算符
1.基本算数运算符
公式总结:个位 :数值 % 10十位 :数值 / 10 % 10百位 :数值 / 10 / 10 % 10千位 :数值 / 10 / 10 / 10 % 10;...
2.+符号做连接符
“+” 做连接符
“+”符号与字符串运算的时候是用作连接符的,其结果依然是一个字符串。
public static void main(String[] args) {
int a = 5 ;
System.out.println("abc"+'a');// abca
System.out.println("abc" + a); // abc5
System.out.println(5 + a); // 10
System.out.println("abc" + 5 + 'a');
System.out.println(15 + "abc" + 15);
System.out.println(a + 'a');
System.out.println(a + "" +'a');
System.out.println(a + 'a'+"itheima");
System.out.println("itheima"+ a + 'a');
System.out.println("itheima"+ ( a + 'a' ));
}
3.自增自减运算符
自增自减运算符
- ++ 和 -- 既可以放在变量的后边,也可以放在变量的前边。
- ++ 、-- 只能操作变量,不能操作字面量的。
自增自减的使用注意事项
++、--如果不是单独使用(如在表达式中、或者同时有其它操作),放在变量前后会存在明显区别
- 放在变量的前面,先对变量进行+1、-1,再拿变量的值进行运算。
int a = 10;
int rs = ++a;
- 放在变量的后面,先拿变量的值进行运算,再对变量的值进行+1、-1
int b = 10;
int rs = b++;
4.赋值运算符
基本赋值运算符
就是“=”。
int a = 10; // 先看“=”右边,把数据10赋值给左边的变量a存储。
符号 | 作用 | 说明 |
+= | 加后赋值 | a+=b 等价于 a = (a的数据类型)(a+b); 将a + b的值给a |
-= | 减后赋值 | a-=b 等价于 a = (a的数据类型)(a-b); 将a - b的值给a |
*= | 乘后赋值 | a*=b 等价于 a = (a的数据类型)(a*b); 将a * b的值给a |
/= | 除后赋值 | a/=b 等价于 a = (a的数据类型)(a/b); 将a / b的商给a |
%= | 取余后赋值 | a%=b 等价于 a = (a的数据类型)(a%b); 将a % b的商给a |
5.关系运算符
关系运算符
是对数据进行条件判断的符号,最终会返回一个比较的布尔结果(false,true)。
符号 | 说明 |
== | a==b,判断a和b的值是否相等,成立为true,不成立为false |
!= | a!=b,判断a和b的值是否不相等,成立为true,不成立为false |
> |
a>b, 判断a是否大于b,成立为true,不成立为false
|
>= | a>=b,判断a是否大于等于b,成立为true,不成立为false |
< | a<b, 判断a是否小于b,成立为true,不成立为false |
<= | a<=b,判断a是否小于等于b,成立为true,不成立为false |
6.逻辑运算符
符号 | 介绍 | 说明 |
& | 逻辑与 | 必须都是true,结果才是true; 只要有一个是false,结果一定是false。 |
| | 逻辑或 | 只要有一个为true、结果就是true |
! | 逻辑非 | 你真我假、你假我真。 !true=false 、 !false= true |
^ | 逻辑异或 | 如果两个条件都是false或者都是true则结果是false。两个条件不同结果是true。 |
&& | 短路与 |
判断结果与“&”一样。过程是
左边为
false
,右边则不执行。
|
|| | 短路或 | 判断结果与“|”一样。过程是左边为 true, 右边则不执行。 |
7.三元运算符
8.运算符优先级
// 目标:看看Java是否存在优先级,大家以后需要注意优先级问题
System.out.println(10 > 3 || 10 > 3 && 10 < 3); // true
System.out.println( (10 > 3 || 10 > 3 ) && 10 < 3); // false
🍒程序流程控制
分支结构
If分支
根据判定的结果(真或假)决定执行某个分支的代码
格式1:
if (条件表达式) {
语句体; }
格式2:
if (条件表达式) {
语句体1;
} else {
语句体2;
}
格式3:
if (条件表达式1) {
语句体1;
} else if (条件表达式2) {
语句体2;
} else if (条件表达式3) {
语句体3;
}
. . .
else {
语句体n+1;
}
执行流程:
① 首先判断条件表达式的结果,如果为true执行语句体,为 false 就不执行语句体。
注意事项:
if 语句中,如果大括号控制的只有一行代码,则大括号可以省略不写。
if 第二种格式
执行流程:
① 首先判断条件表达式的结果,如果为true执行语句体1,为 false 就执行语句体2。
格式:if (条件1) {语句体1;} else if (条件2) {语句体2;} else if (条件3) {语句体4;}. . .else {语句体n+1;}
switch分支
switch(表达式){
case 值1:
执行代码...;
break;
case 值2:
执行代码...;
break;
…
case 值n-1:
执行代码...;
break;
default:
执行代码n;
}
循环结构
for 循环
控制一段代码反复执行很多次。
格式:for ( 初始化语句 ; 循环条件 ; 迭代语句 ) {循环体语句 ( 重复执行的代码 );}
示例
// 输出3次HelloWorld
for (int i = 0; i < 3; i++) {
System.out.println("Hello World");
}
for 循环案例详细流程说明
while循环
while 循环格式与执行流程
初始化语句;
while ( 循环条件 ) {循环体语句 ( 被重复执行的代码 );迭代语句 ;}
示例
int i = 0;
while (i < 3) {
System.out.println("Hello World");
i++;
}
do-while循环
先执行再判断循环条件。
初始化语句 ;do {循环体语句 ;迭代语句 ;} while ( 循环条件 );
示例
int i = 0;
do {
System.out.println(“Hello World!");
i++;
} while( i < 3);
do-while循环的特点:一定会先执行一次循环体。
- for循环 和 while循环(先判断后执行)
- do...while (第一次先执行后判断)
- for循环和while循环的执行流程是一模一样的。
- 如果已知循环次数建议使用for循环,如果不清楚要循环多少次建议使用while循环。
- for循环中,控制循环的变量只在循环中可以使用。While循环中,控制循环的变量在循环后还可以继续使用。
死循环
一直循环的执行下去,如果没有干预不会停止下来。
for(;;) {
System.out.println("Hello World");
}
// 经典做法
while(true) {
System.out.println("Hello World");
}
do {
System.out.println("Hello World");
} while (true);
循环嵌套
循环中又包含循环
跳转关键字:break、continue
跳转控制语句介绍
break : 跳出并结束当前所在循环的执行。
continue: 用于跳出当前循环的当次执行,进入下一次循环。
注意事项
案例技术:随机数Random类
案例 :猜数字游戏
import java.util.Random;
import java.util.Scanner;
public class base {
public static void main(String[] args) {
// 需求:
// 随机生成一个1-100之间的数据,提示用户猜测,猜大提示过大,猜小提示过小,直到猜中结束游戏。
// 分析:
// 随机生成一个1-100之间的数据
// 使用死循环让用户不断提示用户猜测,猜大提示过大,猜小提示过小,猜中结束游戏。
Random random = new Random();
int number=random.nextInt(100)+1;
System.out.println("随机生成一个1-100之间的数据,请输入你猜测的数字:");
Scanner num = new Scanner(System.in);
boolean flag=true;
while (flag){
int i = num.nextInt();
if (i>number){
System.out.println("猜大了");
}
else if (i<number){
System.out.println("猜小了");
}
else {
System.out.println("恭喜猜对了");
flag=false;
}
}
}
}