1.运算
加减乘除照旧,除法用的时是整除,整数除整数,结果仍是整数,只看商不看余数 10/3=3
取模(取余数):% 只有对于整数的除法,取模运算才有余数的意义 10%3=1
注意:一旦运算中有不同类型的数据,那么结果将会是数据类型范围大的那种
public class Demo02DataType
{
public static void main(String[] args)
{
int x = 10;
double result1 = x + 2.5;
//int + double --->double + double ---> double
System.out.println(result1);//12.5
}
}
2."+"
- 对于数值来说,就是加法
- 对于字符char类型来说,在计算之前,char会被提升成为int,然后再计算。char类型字符和int类型数字之间的对照关系见码表
- 对于字符串String(首字母大写不是关键字)来说,记号代表字符串连接操作
- 任何数据类型和字符串连接的时候结果都会变成字符串
public class Demo02DataType
{
public static void main(String[] args)
{
String str1 = "Hello";
System.out.println(str1);//Hello
System.out.println("Hello"+"World");//HelloWorld
String str2 = "Java";
System.out.println(str2 + 20);//java20
//String + int --->String
System.out.println(str2 + 20 + 30);//java2030
//优先级
System.out.println(str2 +(20 + 30));//javva50
}
}
3.自增运算符“++”,自减运算符“--”
基本含义:让一个变量涨或者降一个数字1
使用格式:写在变量名称之前,或之后 ++num或nmu++
使用方法:
- 单独使用:不和其他任何操作混合,自己独立成为一个步骤
- 混合使用:和其他操作混合,例如与赋值或打印操作混合等
使用区别:
- 在单独使用的时候,前++和后++没有任何区别,也就是++num;和num++;是完全一样的
- 在混合使用时,如果是【前++】,那么变量立马+1,然后拿着结果再用【先加后用】
如果是【后++】,那么首先使用变量本来的值,再+1【先用后加】
public class Demo02DataType
{
public static void main(String[] args)
{
int num1 = 10;
System.out.println(num1);//10
++num1;
System.out.println(num1);//11
num1++;
System.out.println(num1);//12
System.out.println("==========");
//与打印操作混合使用
int num2 = 20;
System.out.println(++num2);//21
//前++,先变成21,再打印输出
System.out.println(num2);//21
System.out.println("==========");
int num3 = 30;
//混合使用,后++,首先使用变量原来的30,然后再+1
System.out.println(num3++);//30
System.out.println(num3);//31
System.out.println("===========");
int num4 = 40;
//和赋值操作混合,前--,变量立马-1变成39,然后将39交给result1
int result1 = --num4;
System.out.println(result1);//39
System.out.println(num4);//39
System.out.println("===========");
int num5 =50;
int result2 = num5--;
//混合,后--,先把本来50交给result2,再-1
System.out.println(result2);//50
System.out.println(num5);//49
System.out.println("==========");
int x = 10;
int y = 20;
int result3 = ++x + y--;
//11 + 20 = 31
System.out.println(result3);//31
System.out.println(x);//11
System.out.println(y);//19
}
}
注意事项:只有变量才能使用自增自减运算符,常量不可发生改变所以不能用
4.赋值运算符
- +=: a += 3 相当于 a = a + 3
- -=: b -= 4 相当于 b = b - 4
- *=: c *= 5 相当于 c = c * 5
- /=: d /=6 相当于 d = d / 6
- %=: e %=7 相当于 e = e % 7
public class Demo02DataType
{
public static void main(String[] args)
{
int a = 10;
a += 5;
System.out.println(a);//15
int x = 10;
x %= 3;
System.out.println(x);//1
byte num = 30;
num += 5;
//num = num + 5
//num = byte + int
//num = int
//num = (byte)int
System.out.println(num);//35
}
}
注意事项:
- 只有变量才能使用赋值运算符,常量不可以
- 复合赋值运算符其中隐含了一个强制类型转换
5.比较运算符
>, <, >=, <=
== 比较两边数据是否相等,相等为true
!= 不相等
public class Demo02DataType
{
public static void main(String[] args)
{
System.out.println(10 > 5);//true
System.out.println(10 >= 12);//false
System.out.println(10 == 10);//true
System.out.println(20 != 25);//true
System.out.println(20 != 20);//false
}
}
注意事项:
- 比较运算符的结果一定是一个boolean值,成立就是true,不成立就是false
- 如果进行多次判断,不能连着写,数学当中1<x<3,程序中不能这么写
6.逻辑运算符
- 与(并且) && 全都是true,才是true,否则就是false
- 或(或者) || 只要有至少一个是true,就是true,全是false,才是false
- 非(取反) ! 本来是true,变成false,本来是false,变成true
public class Demo02DataType
{
public static void main(String[] args)
{
System.out.println(true && false);//false
System.out.println(3 < 4 &&10 > 5);//true
System.out.println(true || false);//true
System.out.println(false || false);//false
System.out.println(!true);//false
}
}
短路作用:与”&&“,或”||“ 如果根据左边已经可以判断得到最终结果,那么右边的代码将不再执行,从而节省一定性能
public class Demo02DataType
{
public static void main(String[] args)
{
int a = 10;
System.out.println(3 > 4 && ++a < 100);
//3>4为false,右边就不运行了
System.out.println(a);//10
}
}
注意事项:
- 逻辑运算符智能用于boolean值
- 与、或需要左右各自有一个boolean值,但是取反只要有唯一的boolean值即可
- 与、或两种运算符,如果有多个条件,可以连续写:两个条件:条件A && 条件B
多个条件:条件A && 条件B && 条件C
7.三元运算符
- 一元运算符:只需要一个数据就可以进行操作的运算符,例如:取反!、自增++、自减--
- 二元运算符:需要两个数据才可以进行操作的运算符,例如:加法+、赋值=
- 三元运算符:需要三个数据才可以进行操作的运算符
格式:
数据类型 变量名称 = 条件判断 ? 表达式A :表达式B;
流程:二者选其一
首先判断条件是否成立:如果成立为true,那么将表达式A的值赋值给左侧的变量
如果不成立为false,那么将表达式B的值赋值给左侧的变量
public class Demo02DataType
{
public static void main(String[] args)
{
int a = 10;
int b = 20;
int max = a > b ? a : b;
//判断a > b 是否成立,如果成立将a值给max,不成立将b值给max
System.out.println("最大值:"+ max);//最大值:20
}
}
注意事项:
- 必须同时保证表达式A和表达式B都符合左侧数据类型要求
int result = 3 > 4 ? 2.5 : 10; 这是错误写法,左侧是int类型
- 三元运算符的结果必须被使用
a > b ? a : b;这是错误写法,结果没有被使用