运算符
首页要知道计算机最基本的功能就是执行数学运算,那Java中有那些现实中的加,减,乘,除呢
算术运算符
假设A=10,B=5
+ 加法 A+B=15
- 减法 A-B=5
乘法,不像现实中的x,因为x就程序语言就是个字母或者字符 A*B =50
/ 除法
% 求余
++ 自增 A++或者++A=11,但是有些区别,后面讲到
-- 自减 A--或者--A=9,同样也是有区别的
关系运算符
就是比较你跟它的关系,然后返回给你真还是假
假设A=10,B=5
== 比较两个值是否相等 如A==B,判断A等于B嘛?明显不等,返回的是false
!= 比较两个是否不相等,不相等返回true
> 大于
< 小于
>= 大于或者等于
<= 小于或者等于
逻辑运算符
假设布尔A为true,B为false
&& 逻辑与运算,当且仅当两个都为真,才为真 A&&B 为false
|| 逻辑或运算,有一个为真即为真 A||B 为true
! 逻辑非运算,做反转操作 !true = false,!false = true,如!(A&&B)=true
这里说下如果多个&&和多个||是如何判断流程的呢
如A=10,B=8,C=5;
AC = false ,但是里面它只运行了AC,准确说它认为没必要再运行B>C是不是真。在真正开发中,判断顺序很重要,一般只有前面成立,才进行第二个
||也同理,如果前面为true了,就不会进行后面的判断
条件表达式
1、if 和if else
if(){}
if(){
}else{
}
2、switch case
3、三目运算符
操作符是?: 它就是?前是true就执行?后的语句,如果false就执行:后的语句
示例 a=10
b=(a>5)?15:10 b= 15
类型转换
开发中经常要进行不同的基础数据之间的相互转换。如字符串的数字转为基本类型的数字,小数转为整数等
有两种类型转换方式
1、自动类型转换
就是系统自动把它转给另一个变量,如int转float
前提:范围小的数值给范围大的变量,你就想小桶的水倒给大桶的水容器,自然就可以的。
示例代码:
public static void main(String[] args) {
//自动转换
//整型转为浮点型 int ==> float
int a = 10;
float b = a;
//打印出来b = 10.0
System.out.println(b);
}
2、强制类型转换
同样的,小桶里的水可以倒到大桶里面,难道大桶里面的水不能够到进入小桶里面吗?正所谓艺术源于生活,代码何尝不是,只要是大桶里面的水没有超过小桶的容积,就可以到进去。所以,java引入了强制转换的概念
强制转换的语法格式是:(targetType)value,强制转换的运算符是圆括号(())
注意点:
把一个浮点数强制转换为整数时,java会直接截断浮点数的小数部分
float c =10.5f;
int d = (int)c;
//打印的是10,小数点后的直接截断了
System.out.println(d);
基本数据类型转字符串
//基本数据类型转字符串
int i = 10;
//一种方式String.valueOf
String str1 = String.valueOf(i);
//直接加双引号
String str2 = i+"";
字符串转基本数据类型
通常情况下,字符串不能直接转换成基本类型,但是可以通过基本类型对应的包装类则可以实现把字符串转换成基本类型。
java为8种基本类型都提供了对应的包装类:boolean 对应 Boolean 、byte 对应 Byte、short 对应 Short、int对应Integer 、 long 对应 Long、char 对应 Character 、float对应Float 、double 对应 Double
如Double.parseDouble(str)
//字符串转数据类型
String numStr = "100";
int j = Integer.parseInt(numStr);
如果不知道numStr是整数还是小数可以用Double来先接收
3、表达式类型自动提升
一种隐性的方式--表达式类型转换。表达式归根到底属于自动类型转换的范畴之中
表达式类型转换的自动提升规则:
所有的byte类型、short类型将被提升到int类型
整个算数表达式的数据类型自动提升到与表达式中最高等级操作数同样的类型
下面列子细细品
byte b1 = 10;
byte b2 = 20;
//错误: 不兼容的类型: 从int转换到byte可能会有损失
//否则,两个操作数都将转换为int类型。
byte b3 = b1 + b2; //错误,b1+b2是int类型,java的整数默认类型为int,b3是byte类型,二者类型不同,所以出错
byte b4 = (byte)(b1 + b2); //正确
short s1 = 10;
s1 = s1 + 12; //错误
s1 = (short)(s1+12); //正确
short s2 = 10;
s2 += 12; //正确 s2 = (short)(s2 + (short)12)