一、类型转换
在java代码编写中,数值的类型会有所不同,在数值的类型与定义变量类型不一致时需要我们进行类型转换的操作。下面是两种常见的类型转换方式。
1.低类型转高类型
默认转,byte->short->int->long->float->double
2.高类型转低类型
强转,double->float->long->int->short->byte
两种类型的转换方式代码示例如下:
public class TypeChange{
public static void main(String[] args){
//类型转换:有两种
//低类型转高类型---默认转 byte->short
byte a = 3;
short b = a; //byte转short--默认转
int c = b; //short转int--默认转
long d = c; //int转long--默认转
float e = d; //long转float--默认转
System.out.println(b); //3
System.out.println(e); //3.0
//高类型转低类型---强转
//强转: 数据类型 变量=(数据类型)值;
long dd = (long)e;
int cc = (int)dd;
short bb = (short)cc;
byte aa = (byte)bb;
System.out.println(aa); //3
}
}
注意:虽然可以将数据类型进行强转,但是在强转后可能会有隐患,高转低可能会产生数据丢失!(需转2进制,截断方式取值)
二、运算符
常见的算数运算符:
+、-、*、/、%、++、--
常见的赋值运算符:
=、 +=、 -=、 *=、 /= 、 %=
常见的关系运算符:
> 、>=、 <、 <=、==、 !=
常见的逻辑运算符:
&& 、 || 、!
(注意:&&、||是短路与和短路或,使用结果与&和|相同,但是判断方式不同,&&与||在第一个判断语句错误时跳出判断,而&和|需要全部判断完成)
三目运算符:
(关系表达式)?操作数1:操作数2。代码示例如下:
public class SanMu{
public static void main(String[] args){
//三目运算符:(关系表达式)?操作数1:操作数2
//执行流程:关系表达式成立则结果为操作数1;否则结果为操作数2
//表达式概念:由操作数和运算符组成的式子
//例如: 3+1->算数表达式 3>1 ->关系表达式 int a=1+2 ->不是表达式
String a = (5>3)?"操作数1":"操作数2";
System.out.println(a); //操作数1
//应用场景:求最大值和最小值
int b = 5;
int c = 3;
int max = (b>c)?b:c;
int min = (b<c)?b:c;
System.out.println("最大值max:"+max);
System.out.println("最小值max:"+min);
}
}
三、类型提升和控制台录入
类型提升
类型提升:1.算数运算的类型提升
a.最终的结果为操作数中最高的类型
b.操作数中都是byte或short类型,最终运算结果为int类型
控制台录入
1.导包 2.实例化控制台 3.调用方法获取值
实现代码如下:
import java.util.Scanner; //1.导包,xx包下的Scanner类
public class Console{
public static void main(String[] args){
//控制台录入:可以从DOS中输入内容,在程序中接收
//注意:本质是面向对象的操作,提前记住它的步骤
//步骤: 1.导包 2.实例化控制台对象 3.调用方法获取值
Scanner sc = new Scanner(System.in); //2.实例化对象 对象名为sc
System.out.print("请输入一个数:");
//int a = sc.nextInt(); //接收整数(常用) 阻塞函数(方法) 注意不要录入不匹配的值
//String a = sc.next(); //常用 接收字符串
//double a = sc.nextDouble(); //接收小数
char a = sc.next().charAt(0); //获取字符串的第1个字符
System.out.println("打印:"+a);
}
}
四、if分支
if判断语句分为单分支、双分支、多分支与嵌套等
单分支:
if(关系表达式){
语句;
}
执行流程:如果关系表达式成立,则执行里面的语句;不成立则不执行
双分支:
语法结构:
if(关系表达式){
语句1;
}else{
语句2;
}
执行流程:如果关系表达式成立,则执行语句1;否则执行语句2
多分支:
if(关系表达式1){
语句1;
}else if(关系表达式2){
语句2;
}else if(...){
语句N;
}else{
前面都不满足,则执行else里面的语句;
}
执行流程:如果满足其中一个关系表达式,则指令里面的内容;否则执行最后一个else
嵌套:
if(关系表达式){
if(关系表达式2){
}...
}
执行流程:先执行外层的if,满足条件再执行内层的if
五、switch分支
使用方法:
语法结构:
switch(变量){
case 值1:
语句1;
break; //跳出switch
case 值2:
语句2;
break;
...
case 值N:
语句N;
break;
default: 类似if多分支中的最后的else
前面都不满足,则执行default里面的语句
break;
}