先了解一下常量的概念。
常量:通俗地讲,就是在程序运行期间,固定不变的量。
- 常量的分类:
1.字符串常量:凡是用双引号引起来的部分,叫做字符串常量。例如:“abc”、“Hello”
2.整数常量:直接写上的数字,没有小数点。例如:100、200、0、-250
3.浮点数常量:直接写上的数字,有小数点。例如:2.5、-3.14、0.0
4.字符常量:凡是用单引号引起来的单个字符,就叫做字符常量。例如:‘A’、‘b’、‘9’、‘中’
5.布尔常量:只有两种取值。true/false
6.空常量:null
变量:程序运行期间,内容可以发生改变的量
-
Java语言是强类型语言,强类型包含两方面的含义:
1.所有的变量必须先声明后使用。
2.指定类型的变量只能接受类型与之匹配的值。 -
Java语言支持的类型分为两类:基本类型和引用类型
java的基本数据类型包含以下4类:
- 整数类型
- byte:1个字节,内存中占8位,范围 -27~ 27-1
- short:2个字节,内存中占16位,范围 -215~ 215-1
- int:4个字节,内存中占32位,范围 -231~ 231-1
- long:8个字节,内存中占64位,范围 -263~ 263-1
- 字符类型
- char:2个字节
- 浮点类型
- float:单精度浮点数,占4个字节,32位
- double:双精度附件数,占8字节,64位
- 布尔类型
注意事项:
- 字符串(String)不是基本类型,而是引用类型
- 浮点型可能只是一个近似值,并非精确的值
- 数据范围与字节数不一定相关,例如float数据范围比long更加广泛,但是float是4字节,long是8字节
- 浮点数当中默认类型是double,如果一定要使用float类型,需要加上一个后缀F
如果是整数,默认为int类型,如果一定使用long类型,需要加上一个后缀L
- 基本类型的类型转换
-
自动类型转换
java所有的数值型变量可以相互转换,如果系统支持把某种基本类型的值直接赋给另一种基本类型的变量,则这种方式被称为自动类型转换。当把一个表数范围小的数值或变量直接赋给另一个表数范围大的变量时,系统可以进行自动类型转换(数据范围从小到大)。
Java的自动类型转换为:
上图中所示的箭头左边的数值类型可以自动类型转换为箭头右边的数值类型 -
强制类型转换
上图箭头右边的类型转换为左边的类型,则必须进行强制类型转换。
注意
2.1 强制类型转换一般不推荐使用,因为有可能发生精度损失、数据溢出
2.2 byte/short/char都可以发生数学运算
2.3 byte/short/char这三种类型在运算的时候,都会被首先提升为int类型,然后再计算
运算符:进行数据运算、赋值、比较等的操作符号
- 算数运算符
算数运算符 | |
---|---|
+ | 加法运算,字符串连接运算 |
- | 减法运算 |
* | 乘法运算 |
/ | 除法运算 |
% | 求余运算 |
++ 、– | 自增、自减运算 |
四则运算中,“+”的多种用法:
1.对于数值来说,就是加法
2.对于字符char类型来说,在计算之前,char会被提升成int,再计算
3.对于String(首字母大写,但不是关键字)来说,加好代表字符串连接操作
-
赋值运算符:与C类似,java也使用=作为赋值运算符。
-
位运算符
位运算符 | |
---|---|
& | 按位与,两个同时为1才返回1(双1得1) |
I | 按位或,只有一位为1即返回1(有1得1) |
~ | 按位非,单目运算符,将操作数的每个位(包括符号位)全部取反 |
^ | 按位异或,当两位相同时返回0,不同时返回1(相同得0,不同得1) |
<< | 左移运算符(补0) |
>> | 右移运算符(补符号位) |
>>> | 无符号右移运算符(补0) |
负数在计算机里以补码存在,即 补码=反码(原码除符号位外都取反)+1, 在进行位运算是要考虑到。
- 比较运算符:> , >= , < , <= , == , !=
- 逻辑运算符:&& , &(作用用于&&相同,但不会短路) , || , | , ! , ^(异或,两个操作数不相同返回true)
- 三目运算符: ? :
运算符优先级
运算符说明 | Java运算符 |
---|---|
分隔符 | . [ ] () { } , ; |
单目运算符 | ++ – ~ ! |
强制类型转换运算符 | (type) |
乘法/除法/求余 | * / % |
加法/减法 | + - |
移位运算符 | << >> >>> |
关系运算符 | < <= >= > instanceof |
等价运算符 | == != |
按位与 | & |
按位异或 | ^ |
按位或 | I |
条件与 | && |
条件或 | II |
三目运算符 | ? : |
赋值 | = += -= *= /= &= I= ^= %= <<= >>= >>>= |
——摘自《疯狂java讲义》