Day03
一、运算符
1.算术运算符:
理解:
符号:+、-、*、/、%(求余)、++(自增)、–(自减)
使用:
ps:自增分先后:
//++a:先自增1,再使用
int a = 10;
System.out.println(++a);//11
System.out.println(a);//11
//b++:先使用,再自增1
int b = 10;
System.out.println(b++);//10
System.out.println(b);//11
特殊点:
//特殊点1:byte类型做运算,会先向上转型成int类型
//注意1:向上转型使用最高位补位(补到高位)
//注意2:向下转型从高位开始舍弃
byte b1 = 10;
byte b2 = 20;
//b1 - byte:0000,1010
// int:0000,0000,0000,0000,0000,0000,0000,1010
//b2 - byte:0001,0100
// int:0000,0000,0000,0000,0000,0000,0001,0100
//结果 - int:0000,0000,0000,0000,0000,0000,0001,1110
// (byte):0001,1110
byte result = (byte)(b1 + b2);
System.out.println(result);
//特殊点2:short类型做运算,会先向上转型成int类型
short s1 = 10;
short s2 = 20;
//s1 - short:0000,0000,0000,1010
// int:0000,0000,0000,0000,0000,0000,0000,1010
//s2 - short:0000,0000,0001,0100
// int:0000,0000,0000,0000,0000,0000,0001,0100
//结果 - int:0000,0000,0000,0000,0000,0000,0001,1110
// (short):0000,0000,0001,1110
short result = (short)(s1 + s2);
System.out.println(result);
//特殊点3:除了byte和short类型做运算会向上转型成int,其余的类型会按照取值范围大的类型进行转型
byte b = 10;
short s = 10;
int i = 10;
long l = 10;
float f = 10;
double d = 10;
System.out.println(b + b);//结果的类型:int
System.out.println(s + s);//结果的类型:int
System.out.println(b + s);//结果的类型:int
System.out.println(b + i);//结果的类型:int
System.out.println(b + l);//结果的类型:long
System.out.println(i + l);//结果的类型:long
System.out.println(i + f);//结果的类型:float
System.out.println(l + d);//结果的类型:double
//特殊点4:char类型可以做算数运算,获取的是字符的Unicode码
char c = 'a';//Unicode - 97
int j = c+1;
System.out.println(j);//98
//特殊点5:小数做运算可能损失精度,后续会学习大数值的运算类(BigDecimal),去解决小数运算损失精度问题
double d1 = 0.5;
double d2 = 0.4;
System.out.println(d1 - d2);//0.099999999999998
//特殊点6:++a;和b++;效果都是一样的,分号表示执行语句的结果,不管先加还是后加都给我加
int a = 10;
++a;
System.out.println(a);//11
int b = 10;
b++;
System.out.println(b);//11
//特殊点7:
byte num = 10;
//底层实现:num = (byte)(num + 1);
++num;
System.out.println(num);//11
面试题
//经典面试题一:输出结果为?
int a = 8;
int b = (a++)+(++a)+(a*10);
//a = 10
//b = 8 + 10 + 10*10
System.out.println(b);//118
//经典面试题二:输出结果为?
int i = 0;
//底层实现:
//i = (int)(i+1);
//i = i;
i = ++i;
System.out.println(i);//1
//经典面试题三:输出结果为?
int i = 0;
//底层实现:
//int temp = i;//temp记录了i最初的值 - 0
//i = (int)(i+1);//i - 1
//i = temp;//i = 0
i = i++;
System.out.println(i);//0
2.赋值运算符:
理解:
符号:=、+=、-=、*=、/=、%=
赋值规则:
s += 1 s = (short)((s) + (1))
复合赋值 E1 op= E2等价于简单赋值 E1 = (T)((E1) op (E2)),其中T是E1的类型。注意:
=为赋值号,将赋值号右边的值赋值给左边的变量
使用:
ps:
int num = 10;
num += 5;//num = (int)(num+5);
面试题:
//经典面试题一:输出结果为?
int a,b;//一次性声明多个变量
a = b = 100;//将100赋值给变量b,再将变量b赋值给变量a
System.out.println(a);//100
System.out.println(b);//100
//经典面试题二:下面的两种写法结果分别是?
/* short s = 1;
s = s+1;//s+1的结果为int类型,如果直接赋值给short类型的变量s就会报错!!!
short s=1;
s += 1;*/
3.关系运算符(比较运算符):
理解:
用于比较两个值之间的关系,返回布尔类型的结果
符号:==、!=、>、>=、<、<=
注意:
1.==判断两个值是否相等
2.!=判断两个值是否不相等
3.!=里的感叹号是英文符号
4.关系运算符的结果都是boolean
使用:
ps
boolean bool = 10 == 20;
System.out.println(bool);//false
System.out.println(10 != 20);//true
面试题:
//经典面试题一:输出结果为?
int x = 10;
int y = 10;
boolean flag = (x == y);
System.out.println(flag);//true
//flag = (x = y);//报错 -- boolean不能与其他类型兼容
System.out.println(flag);
//经典面试题二:输出结果为?
boolean b1 = true;
boolean b2 = false;
boolean b3 = (b1 == b2);
System.out.println(b3);//false
boolean b4 = (b1 = b2);
System.out.println(b4);//false
二、Scanner
理解:
Java给我们提供的专门用于在控制台(黑窗口/cmd)输入数据的类
使用步骤:
1.创建Scanner类的对象 – Scanner scan = new Scanner(System.in);
2.导包 - import java.util.Scanner;
3.调用功能(输入int值、double值、字符串值)
//导包
import java.util.Scanner;
public class Test05{
public static void main(String[] args){
//创建Scanner类的对象
//理解:人类 奇男子 = new 人类(System.in);
Scanner scan = new Scanner(System.in);
System.out.println("请输入int类型的数据:");
int i = scan.nextInt();//在控制台输入数据赋值给程序中的变量i
System.out.println("请输入double类型的数据:");
double d = scan.nextDouble();
System.out.println("请输入字符串类型的数据:");
String str = scan.next();
System.out.println(i);
System.out.println(d);
System.out.println(str);
scan.close();//关闭资源
}
}

5043

被折叠的 条评论
为什么被折叠?



