目录
一、类型转换
1.自动类型转换
概念:类型范围小的变量,直接赋值给类型范围大的变量
自动类型转换底层原理:
a存八位;b占32位,把a直接放在后面,前方补0;
/**
* 自动类型转换
*/
public class TypeDemo {
public static void main(String[] args) {
byte a = 20;
int b =a;
}
}
自动类型转换由小到大的顺序:
byte-->short(char)-->int-->long-->float-->double
char ch ='a';
int chq = ch;//97
System.out.println(ch+"and"+chq);//aand97
2.表达式的自动类型转换
表达式中,小范围类型会自动转换成当前较大范围类型再运算
byte、short、char-->int-->long-->float-->double
注意:
-
结果由最高类型决定
-
表达式中,byte、short、char直接转换为int参与运算
//面试题:计算中,byte直接当int,预防结果值过大
byte op=10;
byte opp=20;
// byte ropp = op+opp;
byte ropp = (byte) (op+opp);
int ropp2 = op+opp;
3.强制类型转换
大范围变量强行赋给小范围变量,有丢失精度风险;
/**
* 强制类型转换
*/
public class TypeDemo3 {
public static void main(String[] args) {
int a=5;
byte b = (byte) a;
int c = 1500;
byte d = (byte) c;
System.out.println(c+"and"+d);//1500 and -36
double c1 = 1500.2699;
int d1 = (int) c1;
System.out.println(c1+"and"+d1);//1500.2699 and 1500
}
}
强制类型转换底层原理:
-
整数:把后面的位数强行转给小范围变量;
-
小数:直接截断小数后位数,转成整数;
二、运算符
1.基本运算符
/**
* 基本加减乘除
*/
public class OperatorDemo1 {
public static void main(String[] args) {
int a=9;
int b=5;
System.out.println(a + b);
System.out.println(a - b);
System.out.println(a * b);
System.out.println(a / b);//1
System.out.println(a*1.0 / b);//1.8
System.out.println(3 / 2);//1
System.out.println(3*1.0 / 2);//1.5;该方法用来取小数
System.out.println(3 / 2*1.0);//1.0;
System.out.println(a % b);//余数:4
}
}
2.数值拆分
/**
* 基本数据拆分
*/
public class OperatorDemo2 {
public static void main(String[] args) {
int a=987;
int b,c,d;
b=a % 10;
c=a / 10 % 10 ;
d=a/100;
System.out.println(b);
System.out.println(c);
System.out.println(d);
}
}
3.连接符
/**
* 连接符
* ''字符在一定条件下参与运算
* “ ”字符串不参与运算
*/
public class OperatorDemo3 {
public static void main(String[] args) {
int a =5;
char b ='爱';
String china ="中国";
System.out.println(a+b+china);//29238中国
System.out.println(a+""+b+""+china);//5爱中国
System.out.println(5+a);//10
System.out.println("abc"+a);//abc5
System.out.println("afasdf"+'a'+a);//afasdfa5
System.out.println("afasdf"+('a'+a));//afasdf102
System.out.println('a'+a);//5+97=102
System.out.println('a'+""+a);//a5
System.out.println(a+""+'a');//5a
}
}
4.自增自减运算符
-
注意:
-
++和--,可以放在变量的前方和后方
-
只能操作变量,不能操作字面量
-
不是单独使用,前后意义不同
-
变量前,先+1,再运算
-
变量后,先运算,再+1
-
/**
* 自增自减
*/
public class OperatorDemo4 {
public static void main(String[] args) {
int a =5;
int rs = a++;//5
System.out.println(a+"and"+rs);//6and5
int b =5;
int rs2 =++b;//6
System.out.println(b+"and"+rs2);
}
}
4.1.自增自减扩展(面试)
System.out.println("===========扩展(面试)============");
int k=5;//6 7 6
int p=5;//4 3 4
// kp = 5 + 7 - 4 + 4 - 7 + 4 + 2
int kp = k++ + ++k - --p + p-- - k-- + ++p + 2;
System.out.println(k);//6
System.out.println(p);//4
System.out.println(kp);//11
5、赋值运算符
/**
* 赋值运算符
*/
int a=10;
int b=100;
a=a+b;
a+=b;
byte c=10;
byte d=20;
c= (byte) (c+d);
c+=d;//byte
6.关系运算符
7.逻辑运算符
/**
* 逻辑运算符
*/
int a=10;
int b=100;
System.out.println(a>20&b>100);//false
System.out.println(a<10&b<100);//false
System.out.println(a<=10|b<100);//true
System.out.println(!true);//false
System.out.println(false^true);//true
System.out.println(false^false);//false
/**
* 短路逻辑运算符
*/
System.out.println(a<10 && ++b>100);//false
System.out.println(a==10 && ++b>100);//true b101
System.out.println(a==10 || ++b>100);//true b101 前方正确,后方不执行
System.out.println(a<10 || ++b>100);//true b102
8.三元运算符
格式:条件表达式?值1:值2;
执行流程:计算表达式结果;true,返回值1;否则值2.
/**
* 三元运算符
*/
double score = 95.5;
String rs = score >=60 ? "通过":"挂科";
System.out.println(rs);
//输出较大的值
int a=5;
int b=15;
int c = a>b ? a:b;
System.out.println("较大值:"+c);
//三个值取最大
int q=5;
int w=15;
int e=88;
int tempMax = q>w ? q:w;
int Max = tempMax>e ? tempMax:e;
System.out.println("Max:"+Max);
//简化上式
Max = q>w ? q>e ? q:e :w>e ? w:e;
// Max = q>w ? (q>e ? q:e) :(w>e ? w:e);
System.out.println("Max:"+Max);
9.运算符:优先级
/**
* 运算符:优先级
*/
System.out.println(10>3 || 10>3 && 10<3 );//true.先执行&&,false || true
System.out.println((10>3 || 10>3) && 10<3 );//false.先执行(),true && false
10.API:键盘录入
-
API(Application Programming Interface)应用程序编程接口:
-
Java功能代码;
-
API文档(技术使用说明书);
/**
* 键盘输入API:Scanner
*/
Scanner scanner = new Scanner(System.in);
System.out.println("请输入您的姓名:");
//scanner.next();等待用户输入完成
String name = scanner.next();
System.out.println("请输入您的年龄:");
int age = scanner.nextInt();
System.out.println("身份录入成功姓名:"+name+" 年龄:"+age);