java--数据类型和运算符备忘知识点

摘自《疯狂Java讲义》

整形取值范围相关

byte:内存占8位,表示范围 -128(-2^7)~127(2^7 - 1)
short:内存占16位,表示范围 -32768(-2^15)~ 32767(2^15 - 1)
int:内存占32位,表示范围(-2^32)~(2^32 - 1)
long:内存占64位,表示范围(-2^64)~ (2^64 - 1)

问题:拿byte举例,为什么表示范围是(-2^7)~(2^7 - 1)呢?
由于java是用二进制补码来表示一个数,例如一个byte的值为5,则其二进制表示为00000101,值为-5时,二进制表示为11111011,又因为byte占8位,所以从00000000~01111111是从0到127,但是从11111111到10000000为什么是-128到-1呢,为什么不是-127到-1呢,有两种方式可以判断这个原因,第一种方式,我们观察正数的情形,00000000-011111111有128个数,大小从0~127,而负数情形10000000~11111111共128个数,从-128~-1,他们的差别实在正数情况下需要一个表示0的数。第二种方式,计算法,算两个边界,补码10000000的值是-128,为11111111值是-1(计算方法:正式的补码为原码,负数的补码为其绝度值取反加一)

直接给出一个整数值默认就是int类型
如果将一个较小的整数(在byte和short范围内)赋值给一个byte和short变量,系统会自动把这个值当成byte或short处理,而如果把一个较大的数(超过int范围),java不会自动把这个整数当成long类型处理,若希望系统把他当成一个整形long类型处理,需要在值后跟L或者l

浮点型

java语言的浮点型默认double,如果希望java把一个浮点型当做float表示需要在值为加f
特殊浮点型:正无穷大Double.POSITIVE_INFINITY,Float.POSITIVE_INFINITY,负无穷大Double.NEGATIVE_INFINITY,Float.NEGATIVE_INFINITY和非数Double.NaN,Float.NaN
注意:
- 所有的正无穷大数值都是相等的,所有的负无穷大数值都是相等的,为NaN不与任何数值相等,甚至和NaN都不相等
- 只有浮点数除以0才可以得到正无穷大和负无穷大,因为java语言自动把和浮点运算的0(正数)当成0.0处理,如果一个整数除以0,则得到一个异常Exception in thread “main” java.lang.ArithmeticException: / by zero

新表示法

当程序中的数值位数过多时,可以在数值中间加“_”来分辨位数
eg:

public class AAA {
    public static void main(String[] args){
        int i = 1_000_000_000;
        i = i/10;
        System.out.print("============"+i);
    }
}

表达式类型的自动提升

  • 当一个表达式中包含多种类型,整个算数表达式的类型将自动提升,提升规则,所有byte、short、char提升为int
  • 整个算数表达式的值提升为与表达式中包含的最大级别类型

常量池
常量池指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据(包括类、方法、接口中的常量、字符串直接常量)

除法的特例
如果除法的两个操作数都为整型,则除数不能为0,否则将抛出上述异常。但如果操作数有一个为浮点型,或者两个都是浮点型除数可以为0,或者0.0得到的是正无穷大或负无穷大
eg:

public class AAA {
    public static void main(String[] args){
        double i = 1;
        i = i/0;
        System.out.print("=====" + i);
    }
}

输出结果为=====Infinity

移位运算

  1. 对于(byte、short、char)都是先转化为int,在一位运算
  2. 对于int类型额整数移位,a>>b 当b>32,系统现将b对32求余,得到的结果才是真正的移位位数,对于long也是如此,将对64求余
  3. 进行位运算不会改变操作数本身,只是得到一个新的运算结果,而原来的操作数本身不会改变。
    eg:
public class AAA {
    public static void main(String[] args){
        int i= 1;
        System.out.print("移位="+(i<<1));
        System.out.print("i="+i);
    }
}

扩展后的复制运算

a = a + 1; a+=1看似是相同的操作,其实,他们只是结果相同,但是运行机制并不相同,网上资料显示,建议第二种方式

这里写图片描述
这里写图片描述

==操作符
如果比较的是值类型,尽管他们的数据类型不同,只要值相同,也会返回true 97==’a’

逻辑运算
短路 && 、||
不短路&、|

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值