一、数据类型(primitive data type)
1、数据类型分为:基本数据类型、引用数据类型。
(数据类型规定了内存的大小)
2、引用数据类型:引用对象,空间占四个字节(面向对象再说),用来代表对象的地址
3、基本数据类型:三大类八小类
数值型:(存储数字)
整数类型:byte、short、int、long(1、2、4、8字节)
浮点类型:float、double(4、8字节,小数精度)
字符型(文本型,2个字节,存储字符):char,如:‘a’
布尔型(1位,存储真假):boolean(true、false)
(一)、整形变量/常量
1、整形类型
注:byte,是1字节,2的8次方;
short,2字节,2的16次方;
…
2、java语言整形常量的四种表达方式(进制的转换请自行百度)
- 十进制整数,如:99、-500、0、15
- 八进制整数,要求以0开头,如:015
- 十六进制整数,要求0x或0X开头,如:0x15
- 二进制数,要求0b或0B开头,如0b01110011
(二)、浮点型变量/常量和BigDecimal的使用
1、带小数的数据在java中被称为浮点型,可分为float类型(4字节)和double类型(8字节)。
float类型:单精度类型,尾数可以精确到7位有效数字,在很多情况下,精度很难满足需求;
double类型:双精度类型,绝大多部分应用程序都采用double类型,浮点型常量默认类型也是double类型。
2、浮点类型常量有两种表示形式
- 十进制数形式,如:3.14 、314.0、0.314
- 科学计数法形式,如:314e2、314E2、314E-2(314e2相当于314X100,314E-2相当于除以100)
3、浮点数比较:BigDecimal类
示例代码:需引入java.math包
使用精确浮点运行,推荐:BigDecimal
(三)、字符型变量/常量(char)
1、char类型
字符型在内存中占2个字节,在Java中使用单引号来表示字符常量。例如’A’是一个字符,它与“A”是不同的,“A”标识含有一个字符的字符串。
char类型用来表示在Unicode编码表中的字符。Unicode编码被设计用来处理各种语言的文字,它占2个字节,可允许有65536个字符
2、转义字符
注:“a”不是字符,是字符串(双引号);
‘a’是字符(单引号);
当需要单双引号嵌套使用时需要使用转义字符。
(四)、布尔类型(boolean:true or false)
二、运算符(operator)
注:运算符很重要。
(一)算数运算符
1、二元运算符:需要两个操作数才能完成运算的运算数。
包括:加、减、乘、除、取余(+、-、*、/、%)。
2、二元运算符的运算规则:
1)整数运算:
(1)如果两个整数有一个为long,则结果也为long;
(2)没有long时,结果为int(即使操作数全为short、byte,结果也是int)。
2)浮点运算:
(1)如果两个操作数有一个为double,则结果为double;
(2)只有两个操作数都是float,其结果才为float。
3)取模运算:(取余)
(1)其操作数可以为浮点数,一般使用整数,结果是“余数”;
(2)“余数”的符号和左边操作符相同,如:
7%3=1, -7%3=-1, 7%-3=1
注:算数运算符中的++、- -属于一元运算符,该类运算符只需要一个操作数。
(二)赋值运算符及其扩展赋值运算符
(三)关系运算符
关系运算符用来进行比较运算,其结果是布尔值:true 或 false。
(四)逻辑运算符
特点:用来操作布尔值。
(五)位运算符
进行二进制位的运算。
注:左移或右移一位(a<<1),相当于除以2,若左移或右移二位(a<<2),相当于除以4。
(六)字符串连接符
1、字符串不是基本数据类型,是对象。(后面学对象)
2、字符串连接符:加号(+:既是算数运算符,也是字符串连接符)
如: 3 + 4 = 7 //这是算数运算符
3 + “4” → 34 //当有一个操作符是字符串时,+作为连接符,输出为拼接的结果:34
注:运算方向依旧是从左到右;
字符串和字符并不相同。
(七)条件运算符
1、三元运算符(三目运算符)
(八)运算符优先级(逻辑与或优先问题)
三、类型转换
1、自动类型转换:容量小的数据类型可以自动转换为容量大的数据类型.
自动转换规则
byte
short → int → long → float → double
char
注:这里的容量大小不是字节,是范围,但转换可能会损失一定精度。
2、强制类型转换
强制类型转换,又被称为造型,用于显式的转换一个数值的类型。
在有可能丢失信息的情况下进行的转换是通过造型来完成的,但可能造成精度降低或溢出。
四、基本类型常见问题(溢出、L问题)
1、操作数比较大的时候,要留意是否溢出
2、不要命名名字为l的变量(小写的L),l容易和1混淆。Long类型使用大写L,不要用小写。