《疯狂java讲义》第3章 数据类型和运算符

第三章 数据类型和运算符

java是一种强类型语言。1.所有变量必须先声明后使用;2.指定类型的变量只能接受类型与之匹配的值。

3.1 注释

3.1.1 单行注释和多行注释

  • 单行注释:双斜线(//)
  • 多行注释:“ /*…*/ ”

3.1.2 文档注释

  • 文档注释:“ /** …*/ ”
  • API(Application Programming Interface,应用程序接口)
  • API文档:说明了每个类、每个方法的功能及用法等。
  • 在开发中定义类、方法时也可以先添加文档注释,然后使用javadoc工具来生成自己的API文档。
  • javadoc工具生成更详细的文档信息:@author:指定java程序作者;@version:指定原文件的版本;@param:方法的参数说明信息;@return:方法的返回值说明信息;@see:参见,指定交叉参考的内容;@exception ( throws ):抛出异常。

3.2 标识符和关键字

  • 分隔符:分号 ; 花括号 { } 方括号 [ ] 圆括号 ( ) 空格 圆点 .
  • 标识符:用于给程序中的变量、类、方法命名的符号。
  • 关键字:一些具有特殊用途的单词(keyword)。

3.3 数据类型分类

  • java语言是强类型语言。
  • 声明变量,指定变量的类型和变量名即可。 type varName [ = 初始值 ] ;
  • 变量的作用范围不同有成语变量、局部变量。
  • 类型分为两种:基本类型、引用类型。
    在这里插入图片描述名称
  • 空类型:就是null值的类型,没有名称,空引用(null)是null类型变量唯一的值。空引用(null)只能被转换成引用类型,不能转换成基本类型。

3.4 基本数据类型

3.4.1 整型

  • byte:1个字节占8位,范围 -2^7 ~ 2^7-1
  • short: 2个字节占16位,范围 -2^15 ~ 2^15-1
  • int : 4个字节占32位,范围 -2^31 ~ 2^31-1
  • long: 8个字节占64位,范围 -2^63 ~ 2^63-1
  • int是最常用的整数类型,给出一个整数值默认为int类型
  • 如果一个较小的值(byte和short范围类内)赋给byte或short,系统会自动当成byte或short类型来处理。
  • 如果一个巨大的整数值(超出了int范围),不会自动转为long类型,需在这个整数值后增加 l 或 L。
  • 二进制0b或0B;八进制0;十六进制0x或0X。
  • 当定义32位二进制整数时,最高位起始位符号位,符号位为1时,表示为负数,负数在计算机里以补码形式存在,因此还要换算成原码。
  • 原码:一个数值换算成二进制数。
  • 补码:正数的补码和原码一样,负数的补码是其反码加1。
  • 反码:对原码按位取反,只是最高位(符号位)保持不变。
  • 所有数字在计算机底层都是以二进制形式存储的,但计算机以补码的形式保存所有的整数。
  • 如果在二进制整数后添加 l 或L后缀,那么这个二进制整数默认占64位,第64位是符号位。
  • 进行强制类型转换是可能发生溢出,导致原值变成负数。

3.4.2 字符型

  • 计算机底层保存字符时,实际是保存该字符对应的编号。
  • char类型的变量、值完全可以参与加减乘除,比较大小。(实际是字符对应的编码参与运算)
  • java没有字符的基本串数据类型,用String类来表示字符串。
  • char类型使用单引号,字符串使用双引号。
  • 转义字符。

3.4.3 浮点型

  • double:双精度浮点数,8字节,64位。第1位符号位,接下8位指数,接下23位尾数
  • float :单精度浮点数,4字节,32位。第1位符号位,接下11位指数,接下52位尾数
  • java浮点数使用二进制数据的科学计数法表示浮点数,不能精确表示一个浮点数,需要精确保存一个浮点数时,可以使用BigDecimal类。
  • java语言浮点类型的默认是double类型,若想当成float类型,在浮点类型后加f 或F。
  • 三个特殊浮点数值:正无穷大(都相等)POSITIVE_INFINITY; 负无穷大(都相等)NEFATIVE_INFINITY; 非数NaN(都不相等)。

3.4.4 数值中使用下划线分隔

  • 可以在数值中使用下划线,整数类型,浮点数类型
  • 0B1000_0000_0000_0011; 3.14_15_92_65_36;

3.4.5 布尔型

  • boolean类型:表示逻辑上的“真”或“假”,数值只能是true或false(不能用0或非0),虽然boolean类型的变量只要1位就可保存,但计算机分配内存是允许的最小内存单元是字节(8位),因此实际上大部分时候占8位。

3.5 基本类型的类型转换

3.5.1 自动类型转换

  • 表数小的可以向表数范围大的进行自动类型转换。
  • 任何基本类型的值和字符串进行连接运算时,基本类型的值将自动类型转换为字符串类型,虽然字符串类型不是基本数据类型,而是引用类型。
  • 把基本类型的值转换为对应的字符串时,可以吧基本类型的值和一个空字符串进行连接“+”。

3.5.2 强制类型转换

  • 语法格式:(targetType)value,存在数据丢失。
  • float a = 5.6( × ,默认为double类型); float a = (float) 5.6 (√)。
  • 字符串转化为基本类型可以通过包装类(short -> Short; int -> Integer等)。
  • 算术表达式中包含多个基本类型的值时,整个算术表达式的数据类型将发生自动提升

3.6 直接量

  • 直接量:在程序中通过源代码直接给出的值。
  • 通常总是把一个直接量赋值给对应类型的变量。

3.7 运算符

  • 算术运算符:+ - * \ % ++ –
  • 赋值运算符:=
  • 位运算符:

& :按位与。两位同时为1时才返回1。
| :按位或。有一位为1即返回1。
~ :按位非。单目运算符,将操作数的每个位(包括符号位)全部取反。
^ :按位异或。两位相同时返回0,不同时返回1。
<<:左移运算符。左移后右边空出来的位以0填充。
>>:右移运算符。左边空出来的位以原来的符号位填充(正数补0,负数补1)
>>>:无符号右移运算符。左边空出来的位总是以0填充。

  • 负数在计算机里以补码存在。
  • 低于int类型(byte,short,char)的操作数总是先自动类型转化为int类型再位移。
  • int类型的整数a>>b,当b>32时,先用b对32取余(因为int类型只有32位),得到的结果才是真正的位移的位数,例如:a>>33和a>>1的结果完全一样。long类型同理。
  • 进行移位运算时,只要被移位的二进制码没有发生有效位的数字丢失,左移n位相当于乘以2的n次方,右移n位相当于除以2的n次方。只是得到了一个新的运算结果,原来的操作数本身是不会改变的。
  • 扩展后的赋值运算符(推荐使用,更好的性能,程序更加健壮)

+= :对于 x += y,即对应于 x = x + y。
-= :对于 x -= y,即对应于 x = x - y。
/= :对于 x /= y,即对应于 x = x / y。
*= :对于 x *= y,即对应于 x = x * y。
%= :对于 x %= y,即对应于 x = x % y。
&= :对于 x &= y,即对应于 x = x & y。
|= :对于 x |= y,即对应于 x = x | y。
^= :对于 x ^= y,即对应于 x = x ^ y。
<<= :对于 x <<= y ,即对应于 x = x << y。
>>= :对于 x >>= y ,即对应于 x = x >> y。
>>>= :对于 x >>>= y ,即对应于 x = x >>> y。

  • 比较运算符:判断两个变量或常量的大小,结果是一个布尔值(true或false)。

>:大于;>=:大于等于;<:小于;<=:小于等于;!= 不等于; ==等于(97 == ‘a’ √);

  • 基本类型的变量、值不能和引用类型的变量、值使用==进行比较。
  • 两个引用类型之间没有父子继承关系,它们的变量也不能使用==进行比价。
  • 无论两个数据类型是否相同,只要值不同,!=,都将返回true。
  • 两个都是引用类型,只有具有父子关系才可以比较,!=,两个引用指向的不是同一个对象就会返回true。
  • 逻辑运算符

&&:与,两个都是true,才true。
&:不短路与,与&&相同。
||:或,两个有一个是true,就true。
|:不短路或,与||相同。
!:非,只需要一个操作数,若为true,则返回false。
^:异或,两个操作数不同时才返回true。

  • 三目运算符: ?:例(str = 5 > 3 ?“大” : “小”),可以嵌套。
  • 运算符的结合性和优先级(复杂的拆开几步写,尽量使用括号()控制顺序)。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值