Java基础语法(类型转换、运算符、分支语句、随机数)
一、类型转换
隐式转换
小范围向大范围转换,为自动转换(隐式转换)
byte/short/char---->int---->long----->float----->double
强制转换
(目标数据类型)值或变量
byte/short/char 在参加运算时会转换为int参与运算
常量优化机制:首先把二个常量的数值计算出来,如果没有超过前面类型的范围就不会报错,当出现小转大的错误时,会直接编译出错
例:在字符串中遇到的常量优化机制
public class Test3 {
public static void main(String[] args) {
String s1 = "abc";
String s2 = "ab";
String s3 = "ab" + "c";
System.out.println(s1 == s3);//true
}
}
二、运算符
算术运算符>关系运算符>逻辑运算符
赋值运算符
赋值运算符:+=,-=,*=,/=,%=
赋值运算符底层自带强转功能
例如:
short i=5;
i+=1;//不会报错,底层自带强转,i=(short)(i+1);
i=i+1;//会报错,小转大,需要强转
逻辑运算符
&: 不短路,不管左边是否为假,右边都执行
&&:短路与,有假为假,短路
|: 不短路,不管左边是否为真,右边都执行
|| :短路或,有真为真,会短路
^ (异或): 相同为假,相异为真
三目运算符
数据类型 变量名= 比较表达式 ? 表达式1 : 表达式2;
纯粹的格式:
布尔表达式 ? 表达式1 : 表达式2;
先判断布尔表达式的结果,如果结果为true三元表达式的结果就是表达式1,否则就是表达式2
位运算符
小思考:
借助异或实现数值互换(不借助第三个变量)
a=a^b;
b=b^a;
a=a^b;
三、分支语句、循环语句
分支语句(if)
1.定义格式
if(比较表达式) {
语句体;
}
2.执行流程
判断比较表达式。如果是true,就执行语句体
如果是false。就不执行语句体了
3.示例代码
public class Demo02If {
public static void main(String[] args) {
System.out.println("今天天气不错,正在压马路……突然发现一个快乐的地方:网吧");
int age = 16;
if(age >= 18) {
System.out.println("进入网吧,开始high!");
}
System.out.println("回家学习");
}
}
4.注意事项
如果大括号中的语句体只有一行代码的时候可以把大括号省略.但是墙裂建议永远不要省略
循环语句(for)
for(初始化语句;比较表达式;步进语句){
循环体;
}
执行流程:
先执行初始化语句,然后看条件判断的结果,如果为false 循环结束,如果为true 执行循环体.循环体执行完后执行条件控制语句.然后继续执行条件判断(PS:注意,不是初始化语句)如果结果为false,结束循环,结果为true则继续循环体,然后条件控制语句以此类推.
思考:
①初始化语句会执行几次?
只有在最开始的时候执行了一次
②什么情况下循环体一次都执行不了?
如果第一次进行条件判断的时候结果为false则循环体一次都执行不了
循环语句(while)
基本格式:
while(比较表达式){
循环体;
}
执行流程:
看判断表达式的结果,如果为false循环结束,如果为true,则执行循环体.循环体执行完后继续看判断表达式的结果以此类推
完整格式:
初始化语句;
while(比较表达式){
循环体;
步进语句;
}
1, 执行初始化语句
2, 执行判断表达式, 看其结果为 true 还是 false
如果为 false , while 循环结束;
如果为 true ,继续执行循环体;
3, 执行条件控制语句
4, 回到2步骤继续
循环语句(do while)
格式:
do{
循环体;
}while(比较表达式);
执行流程:
先执行循环体,然后看判断表达式的结果如果为true则继续执行循环体如果判断表达式的结果为false则循环结束,如此反复。
跳转控制循环的语句
break
在循环过程中,碰到break整个循环就直接结束了
应用场景:break只能出现在循环中或者switch中
continue
如果在循环过程中碰到了continue,则跳过本次循环,继续下次循环
问题:
下面代码会输出哪些数字
代码:
for(int i=1;i<10;i++){
if(i%2==0){
continue;
}else{
break;
}
System.out.println(i);
}
因为最后的输出语句永远执行不到,这个时候编译的时候就会报错
标号(不常用)
四、Random
A. 导入包 import java.util.Random;
B. 创建对象 Random r = new Random();
C. 获取随机数 int num = r.nextInt(10);//取值范围是[0,9]
获取一个范围在1-10之间的随机数(包含10)
r.nextInt(10)+1;
获取一个范围在1-100之间的随机数(包含100)
r.nextInt(100)+1;
获取一个范围在20-80之间的随机数(包含80)
r.nextInt(61)+20;
(80-20)+1,作为nextInt()方法的参数,在+上起始范围值
小技巧: + 号 后边加上的数值就是 取值范围的 起始值;
括号里的数值 用 结束值减去起始值 就是最终的数值;
(如果需求还要包含结束值的话,那么括号里的数值还需要+1)