从头开始的Java学习Day03(上)
程序员文章站
2022-05-23 11:29:22
...
类型转换
默认转换
除了布尔类型不能转化,其他7个都可以转换
容量小的默认转换为容量大的数据类型
byte short char->int->long->float->double
byte short char 不能相互转换,默认转换为int类型
byte x=1;
short y=x;
char v=(char)y;
int i=v;
long p=i;
float f=p;
double d=f;
System.out.println(d);
强制转换
容量大的向容量小的转换
问题: 1.溢出装不下
2.精度降低
混合运算时,小容量的自动转换为容量大的
double d1=10.5;
int ii=(int)d1;
float f1=(float)d1;
System.out.println(ii);
System.out.println(f1);
运算符
算术运算符
算术运算符+,-,*,/,%,++,–
“+”表示一个整数
字符串的链接
加法运算
-,*,/,%只能进行算术运算,数值与数值(char)
int x=1;
System.out.println(x++);//先赋值,后+1
System.out.println(++x);//先+1,后赋值
String s="abc";
System.out.println(x+s);//字符串的连接
运行结果:
1
3
3abc
比较运算符
比较运算符 == !=
用于数值与数值
布尔类型间
引用类型之间
int x=10;
int y=5;
System.out.println(x == y);
System.out.println(x != y);
System.out.println("-------------------");
boolean x1=true;
boolean y1=false;
System.out.println(x1 == y1);
System.out.println(x1 != y1);
System.out.println("-------------------");
String x2="a";
String y2="b";
System.out.println(x2 == y2);
System.out.println(x2 != y2);
运行结果:
false
true
-------------------
false
true
-------------------
false
true
逻辑运算
&逻辑与 |逻辑或 ^异或 (还可以进行位运算)
&&短路与 ||短路或 !逻辑非
逻辑与& 和 短路与&& 区别在于
- 逻辑与(&) 会将两边的运算都会进行运算
- 短路与(&&) 如果第一个运算结果为false ,则会短路,后面的表达式不执行
- 逻辑或| 和 短路或|| 区别于其相同
/*
&和&& 有false则为false
| 和 || 有true则为true
*/
int a=5;
int b=10;
int c=15;
System.out.println(a<b & b<c);//true & true = true
System.out.println(a>b & ++b<c);//false & true =flase
System.out.println(b);
System.out.println("-------------------");
/*
* 逻辑与& 和 短路与&& 区别在于
* 逻辑与会将两边的运算都会进行运算
* 短路与 如果第一个运算结果为false ,则会短路,后面的表达式不执行
* 逻辑或| 和 短路或|| 区别于其相同
* */
int a1=5;
int b1=10;
int c1=15;
System.out.println(a1<b1 && b1<c1);//true && true = true
System.out.println(a1>b1 && ++b1<c1);//false && true =flase
System.out.println(b1);
System.out.println("-------------------");
boolean x=true;
System.out.println(!x);//结果取反
System.out.println("-------------------");
int m=5;
int n=10;
System.out.println(m>n ^ n>m);//相异为true
System.out.println(m>n ^ n<m);//相同为false
运行结果:
true
false
11
-------------------
true
false
10
-------------------
false
-------------------
true
false
赋值运算符
/*
赋值运算符=
+=,-=,*=,/=,%=
*/
short s=2;//s为short类型
s=(short)(s+3);//s+3转换为int,不能赋值给short
s+=3;//+=会自动转换数据类型
/*
区分== 和 = 的区别
*/
boolean x=false;
if (x=true){
System.out.println("结果为真");
}else{
System.out.println("结果为假");
}
运行结果:
结果为真
条件运算符
/*
条件运算符(三目运算符)
(条件表达式)?表达式1:表达式2
判断条件表达式的正确与否
若为真则将表达式1赋值给s,若为假则将表达式2赋值给s
条件语句与if-else的联系与区别
1.条件语句可以简化为if-else 语句
2.条件运算符要求必须返回一个结果
3.if可以有多个语句
*/
boolean s= 1>2? true:false;
System.out.println(s);
运行结果:
false
位运算
与& 或| 异或^ 非~
<< >> >>>
转换为二进制进行计算
int x=2;//0000 0010
int y=3;//0000 0011
/*
0000 0010
0000 0011
&---------
0000 0010 = 2
*/
System.out.println(x&y);
/*
0000 0010
0000 0011
|---------
0000 0011 = 3
*/
System.out.println(x|y);
/*
0000 0010
0000 0011
^---------
0000 0001 = 1
*/
System.out.println(x^y);
/*
0000 0010 =2 右移1位 相当于/2
0000 0001 =1
*/
System.out.println(x>>1);// 2/2=1
/*
0000 0010 =2 左移1位 相当于*2
0000 0100 =4
*/
System.out.println(x<<1);// 2*2=4
int z=128;
/*
1000 0000=128 右移一位,最高位无论0或1都用0补位
0100 0000 =64
*/
System.out.println(z>>>1);
运行结果:
2
3
1
1
4
64
表达式的运算顺序
控制台输入
在使用Scanner对象时,需要在文件头带入 java.util.Scanner;
写法为: import java.util.Scanner;
Scanner s=new Scanner(System.in);
System.out.println("请输入年龄");
int age=s.nextInt();
System.out.println("请输入姓名");
String name=s.next();
System.out.println("年龄:"+age);
System.out.println("姓名:"+name);
运行结果:
请输入年龄
20
请输入姓名
肖帆咪
年龄:20
姓名:肖帆咪
上一篇: 堆排序