day4


title: Java表达式,运算符
categories: Java
tags:

  • Java

1. 表达式

1.1 表达式作用

为了按照一定的运算规则计算出结果值,结果值如何使用

  1. 结果值可以直接使用,也可以通过一个变量保存起来然后使用
  2. 表达式的结果值的类型 取表达式中操作数类型精度最高的类型
  3. 括号()可以提高表达式优先级

2. 数据类型转换

2.1 概念

将数据从一种格式或结构转换为另一种格式或结构的过程.

2.2 类型转换分类

2.2.1 自动转换

类型 char byte short int long float double
字节数 1 2 2 4 8 4 8
范围 -2^7~2^7-1 0~2^16-1 -2^15~15^7-1 -2^31~2^31-1 -2^63~2^63-1 -2^128~2^128-1 -2^1024~2^1024-1

注意事项:

  1. 在Java中,boolean类型与所有其他7种类型都不能进行转换;

  2. 其他 7种数据类型,它们之间都可以进行转换,但是可能会存在精度损失或者其他一些变化;(short和char ,因值的范围不同,不能自动转换)

2.2.2 自动转换示例

//1.如果2个操作数(包括byte,short,char,int),都将会转换为int类型,且结果也为int(自动向上转型)
short s = 10;
int num =1;
int n = num+s;
System.out.println(n);
//2.long  float  double只要两个操作数中有一个为以上类型,另一个就会被转换成相应类型,并且结果也为该类型
int num = 10;
double d1 = 10.01;
double d2 =num+d1;
System.out.println(d2);
//3.char类型向更高长度类型(例如整型)转换时,会转换为对应的ASCII码值,再做其他类型的自动转换
char c ='A';
int num = 10;
int a = c+num;
System.out.println(a);

注意事项:

char型具有两个字节,其数值范围是0 ~ 2^16-1

short类型也具有两个字节,其值的范围是-2^15 ~ 2^15-1

byte取值范围为-128~127

char只有整数范围,因此char 不能和byte short 相互自动转换,byte不能自动提升到char,但可以自动提升到short类型。

int a = 129;
byte b = (byte)a;//编译器只看容器不看值
System.out.println(b);//结果为-127
//示例2:
byte  b  =  100;//可以自动转换
float   f = 1.3;//不能自动转换
int  a = 2147483647;
a = a+1;
System.out.println(a);  // 结果为  -2147483648

2.2.3 强制转换

定义

大数据类型转小数据类型

语法
数据类型 变量名 =(数据类型)变量名;

int a = 123;
int b = 234;
float f1 = (float)((a*b)*1.2);
System.out.println(f1)

注意事项

  1. 高转低会导致精度丢失,不同类型的强制转换,可能会导致精度的下降.

  2. 实际开发中:应该要知道被强制转换的数据,是在一个已知的范围;

 byte b1=1;
        byte b2=2;
        byte b3=(byte)(b1+b2); 
//byte,short,char在计算时首先转换为int,大容量(int)转换为小容量的类型(byte)时要加强制转换
//不报错
byte t = 127;
int a = 127;
//需要强制转换才不报错:编译器只看容器【只看类型】不看值
 byte b = (byte)a;
// 结果为 127
     System.out.println(b); 

3. 运算符

3.1 算数运算符

  • +
  • -
  • *
  • /
  • %

3.2 自增自减运算符(important)

  • ++
  • --

注意

  1. 自增自减只能用于变量,不能用于常量
  2. 自增自减运算的优先级比算术运算符高
//example:
int i = 3;
//把3赋值给变量i
i++;
//变量i增加1,i++=4
++i;
//变量i自增1,++i=5

3.3 赋值运算符

  • =
  • +=
  • -=
  • *=
  • /=
  • %=
//example:

    int i=3;
    i +=3;
// 表示从变量中加上3并重新赋值给变量
    i -=3;
// 表示从变量中减去3并重新赋值给变量
    i *=3;
//表示将变量乘以3并重新赋值给变量
    i /=3;
//表示将变量除以3并重新赋值给变量
    i%=3;
//表示将变量取模3并重新赋值给变量

short s = 3;
s += 2;
//存在隐式转换
short  s = 3;
s = s+2;
//结果值是int,int不能自动转换为short

3.4 比较运算符

  • ==
  • !=
  • >
  • <
  • >=
  • <=

比较运算符的结果是boolean类型

int sum1 = 1;
int sum2 = 2;
boolean b1 = sum1 == sum2;
System.out.println(b1);

 //控制台输出false

3.5 位运算符

  1. & 与运算符,运算符两边为1,结果为1,否则为0
  2. | 或运算符
  3. ^ 异或运算符,两边一致,为1,不一致为0.
  4. ~ 取反,1变成0,0变成1
  5. << 向左移动,例如1<<3 结果为8
  6. >> 向右移动,例如8>>2 结果为1
  7. >>> 无符号向右移动

3.6 逻辑运算符

  1. & 与: 两边都为true ,结果为true
  2. | 或: 只要有一边为true,结果为true
  3. && 短路与: 两边都为true ,结果为true
  4. || 短路或: 只要有一边为true,结果为true
  5. ^ 异或: 两边不一样,结果为true,否则为false
  6. ! 逻辑非

3.7 三目运算符

定义:
由问号?及冒号:分割的三个表达式,组成的一个表达式如X ? Y : Z ;按照一定规则进行运算的式子,称为表达式;该表达式具有一个结果值:

X :布尔类型的值或者结果为布尔类型的表达式
Y Z :一般来说数据类型相同的值或者表达式

运算规则:

  • X 为true,就是 Y 的结果值 ( 冒号前面的表达式的值):也就是整个三目运算的结果值

  • X为false,就是Z的结果值 ( 冒号后面的表达式的值):也就是整个三目运算的结果值

int sum1 = 1;
int sum2 = 2;
int res1 = sum1==sum2?1:2;
System.out.println(res1);

4. 总结

重点:

运算符,自增自减,if结构

难点:

自增自减


文章作者:
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 !
 上一篇
Java快捷键增强,包装类 Java快捷键增强,包装类
1. Eclipse快捷键增强alt+shift+s 快速生成get&setter方法 ctrl+shift+a 批量编辑 2. 包装类2.1Java为美中基本数据类型提供的对应的类int Integer,其实都表示一个整数,
2020-10-25
下一篇 
Java常用类和异常 Java常用类和异常
Java常用类及异常处理1. 获取随机数//1.调用Math类中的random()方法 double d1 = Math.random(); //如果需要[0-10.0)的随机数,将d1*10即可 int i = (int)(d1*10);
2020-10-25
  目录