数据类型。运算符

本文详细介绍了Java中的数据类型,包括整形、浮点型、字符型、布尔型及其取值范围。还讨论了数据类型之间的转换,特别是自动转换与强制转换的规则。此外,文章还讲解了运算符的使用,如整除与浮点除的区别,位运算符的含义,以及三目运算符和逻辑运算符的操作规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一. 变量不能重复声明:int a=10;int a=100;错误
二. 8种数据类型:

1.整形:(byte、short、int、long)
byte 的取值范围:-128~127(-2的7次方到2的7次方-1)

short 的取值范围:-32768~32767(-2的15次方到2的15次方-1)

int 的取值范围:-2147483648~2147483647(-2的31次方到2的31次方-1)

long 的取值范围:-9223372036854774808~9223372036854774807(-2的63次方到2的63次方-1)

2.浮点型(float、double)
float(单精度浮点型)取值范围:长度为4个字节
3.402823e+38~1.401298e-45(e+38 表示乘以10的38次方,而e-45 表示乘以10的负45次方)

double(双精度浮点型)取值范围:长度为8个字节
1.797693e+308~4.9000000e-324
浮点型的数据是不能完全精确的。
小数字面量默认都是double类型
如果要给float赋值,需要追加 f/F float f = 3.14f;
而给double赋值,加不加d/D区别不大 double d1 = 3.14d;

3.字符型(char):长度2字节
char 有以下的初始化方式:

char ch = ‘中’;
c = ‘\u4e2d’; // Unicode编码 - (汉字)

char ch = 1010; // 可以是十进制数、八进制数、十六进制数等等。

char ch = ‘\0’; // 可以用字符编码来初始化,如:’\0’ 表示结束符,它的ascll码是0,这句话的意思和 ch = 0 是一个意思。

c1 = 0; // 空白字符

char c1 = 48; // ASCII码 ‘A’=65 ‘a’=97 ‘0’=48

4.布尔型(boolean)

boolean 它的取值就两个:true 、false 。

5.基本类型之间的转换:
自动转换:
将6种数据类型按下面顺序排列一下:
double > float > long > int > short > byte
如果从小转换到大,那么可以直接转换,而从大到小,或char 和其他6种数据类型转换,则必须使用强制转换。
自动转换时
int–> float
long–> float
long–> double
float -->double without strictfp
可能出现精度损失

强制转换:如果要把大的转成小的,或者在short与char之间进行转换,就必须强制转换。
如果整数的值超出了byte所能表示的范围,结果将对byte类型的范围取余数。例如a=256超出了byte的[-128,127]的范围,所以将257除以byte的范围(256)取余数得到b=1;需要注意的是,当a=200时,此时除了256取余数应该为-56,而不是200。
将浮点类型赋给整数类型的时候,会发生截尾(truncation)。也就是把小数的部分去掉,只留下整数部分。此时如果整数超出目标类型范围,一样将对目标类型的范围取余数。
double m=3.17;
int n=(int)(m);
三。运算符

  1. 运算符左右两边类型是统一的
    int i = 5 / 2; // 整除
    若double d = 5 / 2.0;其结果为2.5

  2. b++ 与 ++b 的不同:
    如果把++放到左边,表示先把操作数加一,然后才把操作数放入表达式中运算。如果把++放到右边,表示先把操作数操作数放入表达式中运算,然后才把操作数加一。

  3. 位运算符:
    与(&):两个二进制操作数对应位同为1 结 果位 才为1,其余情况为0;
    或(|):两个二进制操作数对应位只要有一个为1 结果位 就为1,其余情况为0;
    非(~):一个二进制操作数,对应位为0,结果位为1;对应位为1,结果位为0;例:整数 d = 1 计算:(~d):0000 0001变为1111 1110,这是内存中的保存形式。我们读取的十进制是根据原码来读取,而在内存中,数值都是以二进制补码形式存储的。正数的补码和原码一样,负数的补码得到过程:原码 转 反码 再转 补码,然后计算取反后的补码,其真值就是结果。
    即结果等于: 内存中的保存形式—>反码—>补码
    正数的补码就是其本身,负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)转反码转补码
    异或(^): 两个二进制操作数对应位相同为0,不同为1;
    位移位运算(<< >> >>>):
    <<和>>:
    在这里插入图片描述
    无符号位移>>>:得到二进制码,右移后左边最高位添0;
    例:int num = -1
    num>>>1:先按其绝对值大小表示出二进制即其原码,然后得到反码,然后得到补码,此时补码即得到了-1在计算机中的二进制表示方法。然后右移后左边最高位添0,即最终为0111 1111 1111 1111 1111 1111 1111 1111
    4.三目运算符:
    表达式:
    variable x = (expression) ? value if true : value if false
    b = (a == 10) ? 20 : 30;
    三目运算符的规则是,先对逻辑表达式expression进行求值,如果逻辑表达式返回true,则返回第二个操作数的值,如果逻辑表达式返回false,则返回第三个操作数值。

  4. 逻辑运算符:
    ||:若左边为真则不会再判断右边的语句

  5. 关系运算符:
    关系运算符用来判断两个变量或者常量的大小,关系运算符的结果是一个boolean值( true或者false)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值