Java中数据类型、运算符及与C语言的差别

1.数据类型

在java中数据类型分为两大类:基本数据类型和引用数据类型.

1.1基本数据类型

基本数据类型分为四类八种包括 boolean(布尔型)、float(单精度浮点型)、char(字符型)、byte(字节型)、short(短整型)、int(整型)、long(长整型)和 double (双精度浮点型)共 8 种,详见表 1 所示。

 值得注意的是在Java中char占用两个字节,而在c语言中char占用一个字节,并且在java中的char

无法表示负数,其所能表示的范围为0~65535(2^16-1),而在C语言中的signed char的范围则是-128~127,un-signed的范围则是0~255.

并且在Java中每种数据类型所占字节数的大小与操作系统没有关系,已经固定死了.这就方便了Java

的可移植性.

        // byte
        System.out.println(Byte.MAX_VALUE);
        System.out.println(Byte.MIN_VALUE);
        // short
        System.out.println(Short.MAX_VALUE);
        System.out.println(Short.MIN_VALUE);
        // int
        System.out.println(Integer.MAX_VALUE);
        System.out.println(Integer.MIN_VALUE);
        // char
        System.out.println(Character.MAX_VALUE);
        System.out.println(Character.MIN_VALUE);

这其中的Byte,Short,Integer等都是java中的包装类,在数据类型中只有基本数据类型有包装类,

比如说Integer是int的puss版本,也可以当做int使用.

1.2变量的定义及使用

变量必须先声明后使用.java是一种强类型的语言,而而语言则不是强类型语言

 

如图可知byte的取值范围是-128~127,java中会自动的对数值范围进行检查,如果超出就会编译报错

.在C语言中则不会报错,他会按照原来的二进制补码进行输出对应的值.

这也体现了java的安全性

boolean

在C语言中非0即真,而在java中表示真假则是true和false

 在java中这样的写法是不允许的,不符合语法的

变量赋值

在进行变量赋值时类型不同的变量(小可以赋值大)不可以随便赋值,

即使数据没有超出表示范围也不行

当然可以通过强制类型转换,来实现.

 

2.Java运算符

计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量。我们可以把运算符分成以下几组:

  • 算术运算符
  • 关系运算符
  • 位运算符
  • 逻辑运算符
  • 赋值运算符
  • 其他运算符

2.1算术运算符

+,-,*,/,%,(自增)++,(自减)--

java中的%与数学中的取余有些区别,java中余数可以是负数

 以上a的值是-1.

当然除数不可以为0,除数也可以是小数例如:

 b的值就是1.5,但是浮点数的取余没有意义

自增,自减

后置的--和++,是先使用再改变变量

前置的--和++,是先改变变量的值再去使用

2.2 关系运算符

 在C语言中像这样(-1<i<10)这样的表达式虽然是不对的,但是并不会报错,而是如果i>1的话就是返回1,而后有1又与10进行比较.

而在java中像这样的表达式是直接编译报错的,原因是关系运算符的结果只有真(true)和假(false)

并不像c语言中非0即真

2.3位运算符

 在位运算中有一些规律

任何数与0异或都是这个数本身,两个相同的数异或为0

<<左移位一次就相当于乘以2

>>右移位 相当于除以2然后左取整(下取整)

>>> 无符号右移 :丢弃右边左边补0

~a=-(a+1) 即一个数按位取反就是把这个数加一然后取相反数就是这个数按位取反的值

这是案例所对应的值

2.4逻辑运算符

短路逻辑运算符

 &&运算符,当左边为假时,右边便不再计算了

|| 运算符 ,当左边为真是,右边边不再计算了

不短路的逻辑运算符

与C语言不同的是java中还有不短路的逻辑运算符

 

& 和 | 没有短路机制,左边和右边都会参与运算

2.5赋值运算符

 需要注意的是在C语言中a+=b与a=a+b是等价的,但是在java中并不等价

例如

可以看到a=a+b这个编译器报错了,a+=b其实等价与a=(short)(a+b)

这是和c语言的一个不同之处,java会将a+b的和强制类型转换为a变量的类型

其他的赋值运算符也是类似的

2.6 其他运算符

三元运算符 

(exp1)?(exp2):(exp3)

如果表达式1为真整个表达式的值即为表达式2的值,反之就是表达式3的值

例如求两个数的较大值

 

 

 以上就是本次博客的全部内容,谢谢各位的收看

 

 

 

 

  • 23
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 23
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值