数据类型
在Java中,数据类型可以分为两大类
8种基本数据类型:boolean,byte,short,int,long,char,folat,double
3种引用数据类型:类,接口,数组
基本数据类型:4类8种基本数据类型
1、四种整数类型:byte、short、int、long
整数类型 | 名称 | 占用存储空间(字节) | 长度 (位) | 数的范围 |
---|---|---|---|---|
byte | 字节类型 | 1 | 8 | -128~127 |
short | 短整型 | 2 | 16 | -215~215-1 |
int | 整型 | 4 | 32 | -231~231-1 |
long | 长整型 | 8 | 64 | -263~263-1 |
注:
声明 long 类型数据后面需要加 L 或 l 标识。
2、两种浮点数类型:float、double
浮点数类型 | 名称 | 占用存储空间(字节) | 长度 (位) | 数的范围 |
---|---|---|---|---|
float | 单精度浮点数据类型 | 4 | 32 | 3.4E-038 ~3.4E+038 |
double | 双精度浮点数据类型 | 8 | 64 | 1.7E-308~1.7E+308 |
注:
在数字后面加 F 或 f 表示 float 型数据
在数字后面加 D 或 d 表示 double 型数据
通常浮点型数据默认为 double型
3、字符数据类型:char
(1)表示单个字符,占用内存空间为2个字节,长度是16位,赋值时用单引号(' ')括起来。
4、布尔数据类型:boolean
(1)boolean类型有两个数值:true 和 false ,长度是1位
变量
1、概念:
变量是指在程序运行过程中随时可以变化的量。
变量是程序中数据的临时存放场所。
其作用是保存程序运行时用户输入的数据和特定的运算结果等。
2、声明:
变量的名称也称为标识符,应对其初始化再使用。
声明多个变量,用逗号分隔
// 变量数据类型 变量名 (= 变量初始值)
byte by = 127;
short sh = 32767;
int a = 16,25;
int b ;
long lo = 100000000000 L;
float fl = 3.1415926 F;
double b = 3.141592695478 ;
char ch = 'a';
boolean bool = true (false);
数据类型的转换
分为两种转换形式:自动类型转换 和 强制类型转换
规则:小转大,自动转;大转小,强制转。
1、自动类型转换
(1)两种数据类型彼此兼容
(2)目标数据类型的取值范围要大于源类型
(3)boolean数据类型不可以转换成其他数据类型
(4)byte,short,char——>int——>long——>float——>double。
(5)byte,short,char之间不能互相转换,它们在运算过程中先转换成 int 类型
(6)小范围数据类型和大范围数据类型的运算结果是大范围数据类型
(7)字符类型和整数运算结果为整数,字符类型先自动转化成二进制, 然后二进制转化成整数
int a = 100;
double b = 100;
double c = a+b;
System.out.println(w+z);//输出结果为double类型
char ch2 = 'a';
System.out.println(ch2+0);//输出结果是97,int型数据
2、强制类型转换
(1)当两个数据类型不兼容时
(2)目标数据类型的取值范围要小于源类型
(3)在强制类型转换过程中,源类型的值可能大于目标数据类型,因此可能会造成精度降低或者溢出。
(4)格式
源数据类型 变量 = (目标类型) 值
byte a;
int b = 125;
a = (byte) b
运算符
一种特殊符号,用来表示数据的赋值,运算和比较。
1、算术运算符:+、-、*、/、%(取余)、++、-- *
2、赋值运算符:=、+=、-=、=、/=、%=
3、关系(比较)运算符:>、<、>=、<=、==、!=、instanceof
4、逻辑运算符:!(取反)、&&、||、
5、位运算符:&、|、^(异或)、<<(左移)、>>(右移)、>>>(右移)、~(非)
6、条件运算符:(三元运算符) ? :
1、算术运算符
符号 | 含义 | 备注 |
---|---|---|
+ | 加法 | |
- | 减法 | |
* | 乘法 | |
/ | 除法 | 如果是两个整数相除,结果只取整数部分 |
% | 取余 | |
++ | 自增 | ++a:前自增,先将变量加一操作,然后再使用; a++:后自增,先使用变量,使用完之后再加一 |
-- | 自减 | 算法同++ |
int a = 5;
int b = 2;
int c = a / b; // c = 2 除号取整数部分
int d = a % b; // d = 1 余数为1
int e = a++; // e = 5,后自增,先使用变量再加一
int f = ++b; // f = 3 ,前自增,先将变量加一操作,然后再使用
2、赋值运算符
符号 | 含义 | 备注 |
---|---|---|
= | a = 5 | 把5赋值给a |
+= | 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 |
3、关系运算符(比较运算符)
符号 | 含义 | 备注 |
---|---|---|
> | 大于 | a > b |
< | 小于 | a < b |
>= | 大于等于 | a >= b |
<= | 小于等于 | a <= b |
== | 等于 | a == b |
!= | 不等于 | a != b |
instanceof | 判断对象是否是特定类的一个实例 | 返回值是布尔类型 |
4、逻辑运算符 ! && ||
逻辑运算符:&&(与)、||(或)、!(非)
规则:逻辑运算符两端的操作表达式的值必须是布尔类型
符号 | 含义 | 备注 |
---|---|---|
&& | 短路与 | 相当于“且”,用&&连接表达式时,如果左边的表达式结果为 false,则不会计算其右边的表达式。(真真为真 ) |
短路或 | 相当于“或”,如果左边的表达式结果为 true,则不会计算其右边的表达式。(真假为真,假假为假) | |
! | 逻辑非 | 取反 |
int a = 2,b = 1;
boolean c = ( a != 2 && b==1);//a!=2的值为false,不需要再进行右侧判断,d 的值为 false
boolean d = ( a != 2 || b == 1);//a!=2的值为false,b==1值为true,所以d 的值为 true
5、位运算符:
位运算符:&(与)、|(或)、^(异或)、~(非)、<<(左移)、>>(右移)、>>>(右移)
规则:只对 byte、short、int、long、char 数据类型有效。
符号 | 含义 | 备注 |
---|---|---|
& | 按位“与” | 只有参加运算的两位都是1时,&的运算结果才为1,否则为0 |
按位“或” | 只有参加运算的两位都是0时,运算结果才为0,否则为1 | |
^ | 按位“异或” | 只有参加运算的两位不同时,^的运算结果才为1,否则为0 |
~ | 按位“非” | |
<< | 左移 | a << b,将a的二进制数据左移b位,右边移空的部位补0 |
>> | 右移 | a >> b,将a的二进制数据右移b位,如果最高位是0,则左边移空的部位补0,如果最高位是1,则左边移空的部位补1 |
>>> | 无符号位右移 | a >>> b ,不管最高位是0或1,左边移空的部位都补0 |
6、条件运算符:(三元运算符)
符号 | 含义 | 备注 |
---|---|---|
?: | 三元运算符 | 比较表达式的结果,若结果为true,分号左边作为结果返回;若结果为false 分号右边作为结果返回。可以替代 if-else 结构。 |
int a = 100;
int b = 800;
int c = a < b ? a : b; // 条件表达式 a < b 结果为 true,返回分号左边 a 值
int d = a > b ? a : b; // 条件表达式 a > b 结果为 false,返回分号右边 b 值