Java基础 类型转换 常用运算符 三元表达式
程序员文章站
2022-06-28 17:18:09
Java基础一、类型转换1.隐式转换数据类型大小关系:byte
Java基础
一、类型转换
1.隐式转换
- 数据类型大小关系:byte<short=char<int <long<float<double
- 把范围小的类型赋值给范围大的类型,会默认隐式转换
- 整数类型在运算的时候小类型(byte short char)会默认提升为int类型,然后再运算。
- 浮点类型在运算的时候小类型会默认提升为大类型(double)
例如:
public class Demo {
public static void main(String[] args) {
byte a = 10;//定义一个byte类型的变量a
int b = a;//把a赋值给int类型的b 小类型赋值给大类型(隐式转换)不会报错
// int c=10;//定义了一个int类型的变量c
// byte d=c;//把int类型的c赋值给byte类型的d 大类型给小类型 报错
int e=
}
}
public class Demo {
public static void main(String[] args) {
byte a = 10;
short b= 10;
int c =a+b;//此处运算时byte类型的a会自动提升为int类型 short类型的b会自动提升为int类型 然后再相加 再赋值给int类型的c
}
}
public class Demo {
public static void main(String[] args) {
int a = 10;
double b= 10.5;
double c =a+b;//此处运算时int类型的a会自动提升为double类型 然后再相加 再赋值给double类型的c
}
}
2.强制转换
- 把一个表示数据范围大的数值或者变量赋值给另一个表示数据范围小的变量
- 格式 目标类型 变量名 = (目标类型)被转换的值;例如:int a = (int)30.5;
例如:
public class Demo {
public static void main(String[] args) {
double a=10.5;//double 类型是大类型 想要赋值给int类型的b
int b = (int) a;//int类型是小类型想要接收大类型就需要强制类型转换
}
}
注意
- long类型的要在后面加L
- float类型的要在后面加F
- 强制类型转换会造成数据精度损失,不建议用
public class Demo {
public static void main(String[] args) {
byte a = 10;
byte b = 20;
byte c = (byte) (a+b);//此处a和b相加的时候自动提升为int类型 然后再相加 此处用byte类型的变量c接收会报错 所以进行强制类型转换
byte d=4+7;//此处运算 虚拟机编译后会将4和7相加判断是否在byte类型的数据范围内 如果在 则自动转为byte类型进行赋值(常量优化机制)
long e=15655L;
float f=10.5F;
}
}
二、运算符
1.算术运算符
+ - * / %(加、减、乘、除、取余)
注意:/ 如果是两个整数相除,运算结果一定是整数
例如
public class Demo {
public static void main(String[] args) {
int a=7;
int b=3;
System.out.println(a+b);//10
System.out.println(a-b);//4
System.out.println(a*b);//21
System.out.println(a/b);//2
System.out.println(a%b);//1
}
}
自增自减运算符(++ - - )
- ++ 运算符 变量在自身的基础上加1
- - - 运算符 变量在自身的基础上减1
注意
- 自增自减运算符单独运算的时候在前在后没有区别
- 当不是单独运算的时候++在前变量先加一再进行后面的运算 ,++在后则变量先进行运算,运算完后变量的值再加一(- -一样)
例如
public class Demo {
public static void main(String[] args) {
int a=1;
a++;//单独运算 前后效果一样
System.out.println(a);//2
}
}
public class Demo {
public static void main(String[] args) {
int a=1;
int b=1;
int c = ++a + b++;//此处a的++在前a先进行++操作然后继续运算 b的++在后 先用b变量的值1运算,等运算完给c赋值后b再进行++
System.out.println(c);//2+1=3
System.out.println(b);//2
}
}
字符的加操作
- 当字符和整数进行加法运算的时候字符会变成相应的ASCII值,然后进行运算
例如
public class Demo {
public static void main(String[] args) {
System.out.println('a'+0);//97
System.out.println('A'+0);//65
System.out.println('0'+0);//48
}
}
字符串的加操作
- 当字符串进行相加的时候,实际上是进行字符串的拼接
- 当加号左右两边任意一边有字符串,运算出来都是进行字符串的拼接
例如
public class Demo {
public static void main(String[] args) {
System.out.println("abc"+"123");//abc123
System.out.println(123+"aaa");//123aaa
System.out.println(3+4+"aa");//7a
System.out.println("a"+3+4+"aa");//a34aa
System.out.println("a"+(3+4)+"aa");//a7aa
}
}
2.赋值运算符
= += *= /= %=
例如:a+=5; 相当于a=a+5;(其余同理)
注意:
public class Demo {
public static void main(String[] args) {
short a=1;
// a=a+1;//此处程序会报错 把a提升为int类型进行运算再赋值给short类型的a需要强转
a=(short)(a+1);
a+=1;//这种写法+=运算符会自动进行类型转换
}
}
3.比较运算符
==(等于) !=(不等于) >= <= > < !(大于等于 小于等于 大于 小于 不等于)
例如
public class Demo {
public static void main(String[] args) {
System.out.println(11==10);//false
System.out.println(10==10);//true
System.out.println(10!=10);//false
}
}
4.逻辑运算符
- & (与)有false结果就是false
- | (或)有true结果就是true
- !(取反) 对true或false取反
- ^(异或)不同为true 相同为false
例如
public class Demo {
public static void main(String[] args) {
//& 与 有false为false
System.out.println(true&true);//true
System.out.println(false&false);//false
System.out.println(true&false);//false
//| 或 有true则为true
System.out.println(true|true);//true
System.out.println(false|false);//false
System.out.println(true|false);//true
//!取反 true变false
System.out.println(!true);//false
//^异或 不同为true相同为false
System.out.println(true^true);//false
System.out.println(false^false);//false
System.out.println(true^false);//true
}
}
5.短路逻辑运算符
&&(短路与)||(短路或)
- && 如果符号左侧 结果是false, 那么最终结果肯定是false ,右侧不在执行
- || 如果符号左侧 结果是true, 那么最终结果肯定是true, 右侧不在执行
例如
public class Demo {
public static void main(String[] args) {
int a=4;
int b=4;
System.out.println(++a > 5 && ++b > 1);//当左边为false后右边的就不再执行
System.out.println(a);//5
System.out.println(b);//4
int c=4;
int d=4;
System.out.println(++c > 5 & ++d > 1);//当左边为false后右边的依旧执行
System.out.println(c);//5
System.out.println(d);//5
//短路或 当左边为true时右边就不再执行
}
}
三、三元表达式
- 格式:(关系表达式) ? 表达式1 : 表达式2;
- 执行流程:
* 执行关系表达式,如果结果为true,则取表达式1的值
* 执行关系表达式,如果结果为false,则取表达式2的值
例如:a>b?a:b;
public class Demo {
public static void main(String[] args) {
int a=5;
int b=4;
int c=a>b?a:b;//a>b吗 大于的话就把a的值赋给c 不大于的话就把b的值赋给c
System.out.println(c);//5
}
}
不懂的可以留言问我哦!!!
本文地址:https://blog.csdn.net/moyuxi_/article/details/109565331