整型数据类型
▪整型常量
–十进制整数,如:99, -500, 0
–八进制整数,要求以 0 开头,如:015
–十六进制数,要求 0x 或 0X 开头,如:0x15
▪整型变量
▪整型常量默认为int型,声明long型常量可以后加‘ l ’或‘ L ‘
(建议使用大写,
小写容易误认为数字1)
,如:
▪long a = 55555555; //不出错,在Int表示的范围内(21亿内)。
▪long b = 55555555
555;//不加l出错,已经超过int表示的范围。
浮点型数据类型
▪ 浮点类型常量
十进制数形式,例如:
▪3.14
314.0
0.314
科学记数法形式,如
▪314e2
314E2
314E-2
▪double f = 314e2; //314*10^2-->31400.0
▪double f2 = 314e-2; //314*10^(-2)-->3.14
▪浮点型变量
–float类型:单精度类型,尾数可以精确到7位有效数字,在很多情况下,float类型的精度很难 满足需求。
–double类型:双精度类型 精度是float类型的两倍,绝大部分应用程序都采用double类型。
▪注意
–浮点常量默认为double。要变为float,需在后面增加F/f. 如: 3.14F
–浮点数存在舍入误差,很多数字不能精确表示。如果需要进行不产生舍入误差的精确数字计 算,需要使用BigDecimal类。
字符数据类型(2个字节)
▪ 单引号用来表示字符常量。例如‘A’是一个字符,它与“A”是不同的,
“A”表示含有一个字符的字符串。
▪ char 类型用来表示在Unicode编码表中的字符。
▪ Unicode编码被设计用来处理各种语言的所有文字,它占2个字节,
可允许有65536个字符;ASCII码占1个字节,可允许有128个字符
(最高位是0),是Unicode编码表中前128个字符。
▪ Java 语言中还允许使用转义字符 ‘\’ 来将其后的字符转变为其它的
含义,
char c2 = '\n'; //代表换行符
▪ char类型在内存中存储的是该字符的Unicode编码值,所以char类
型可以当做int类型来处理
布尔数据类型(一位,不是一个字节)
▪ boolean类型有两个值,true和false
▪ boolean 类型用来判断逻辑条件,一般用于程序流程控制
▪ 实践:
– 请不要这样写:if ( is == true && done == false ) ,只有新手才那么写。
对于任何程序员 if ( whether && !done ) 都不难理解吧。所以去掉所有的
==fasle 和 ==true。
final 常量
▪ 使用final修饰的变量,只能被初始化一次,变成了常量。
▪ final常量是有名称的
public class Constants {
public static void main(StringO args) {
final double PI= 3.14;
I PI= 3.15;
//error
double r= 4;
double area = P|* r* r;
double circle= 2* P|* r;
System.out.printIn("area= " + area);
System.out.printIn("circle= " + circle);
}
}
public static void main(StringO args) {
final double PI= 3.14;
I PI= 3.15;
//error
double r= 4;
double area = P|* r* r;
double circle= 2* P|* r;
System.out.printIn("area= " + area);
System.out.printIn("circle= " + circle);
}
}
命名规则(规范)
▪ 所有变量、方法、类名:见名知意
▪ 变量、方法名:
– 首字母小写和驼峰原则
– run(), runRun(), age
ageNew monthSalary
▪ 常量:
– 大写字母和下划线:MAX_VALUE
▪ 类名:
– 首字母大写和驼峰原则: Man, GoodMan
运算符
▪ Java 语言支持如下运算符:
– 算术运算符: +,-,*,/,%,++,--
– 赋值运算符 =
– 扩展赋值运算符:+=,-=,*=,/=
– 关系运算符: >,<,>=,<=,==,!=
– 逻辑运算符: &&,||,!
– 位运算符: &,|,^,~ , >>,<<,>>> (了解!!!)
– 条件运算符 ?:
▪ 相关概念辨析
– + 运算符 操作符 Operator
– 5+6 表达式 expression
– 5 6 操作数 Operand
– int m =5+6; 语句 Sentence
算术运算符
▪注意:
–1:/ 除 6/4=1 6/4.0=1.5
–2: %取模(求余) 6%4=2
–3:+ 6+‘a’=103 6+“a“=6ª
–4:++
▪a=2;b=++a+9;
▪a=2;b=a+++9;
–+:字符串相加,只要有一个
操作数是字符串,自动变为字
符串相连
算术运算符
▪二元运算符类型提升:
–整数运算:
▪如果两个操作数有一个为Long, 则结果也为long
▪没有long时,结果为int。即使操作数全为shot,byte,结果也是int.
–浮点运算:
▪如果两个操作数有一个为double, 则结果为double.
▪只有两个操作数都是float, 则结果才为float.
▪一元运算符(++, --):
赋值运算符
▪ 基本赋值运算符 =
▪ 扩展赋值运算符
– 算术运算符和赋值运算符结合
关系运算符
▪ 关系运算符用来进行比较运算
▪ 关系运算的结果是布尔值:true/false、
▪ 注意
– 区分==和=
– 不等于是!=不是<>
运算符 含义 示例
== 等于 a==b
!= 不等于 a!=b
> 大于 a>b
< 小于
a<b
>= 大于或等于 a>=b
<= 小于或等于 a<=b
逻辑运算符
▪ 逻辑运算符与布尔操作数一起使用,组
成逻辑表达式
▪ 逻辑表达式的结果是布尔值
▪ &和&&的区别
– “&”:无论任何情况,“&”两边的表达式都会参
与计算。
– “&&”: 当“&&”的左边为false,则将不会计算
其右边的表达式。即左false则false
▪ “|”和“||”的区别与“&”和“&&”的区别类似。
运算符 含义 示例
& 逻辑与 A&B
| 逻辑或 A | B
^ 逻辑异或 A^B
! 逻辑反 !A
|| 短路或 A || B
&& 短路与 A&&B
位运算符(了解)
▪ 位运算符是对操作数以二进制比特位为单位进行操作和运算,操作数和结果都是整型数。
▪ 如果操作的对象是char、byte、short,位移动作发生前其值会自动晋升为int,运算结
果也为int。
运算符 含义 示例
~ 按位非(
NOT
)
/取反 b = ~a
& 按位与(
AND) c = a & b
|
按位或(
OR
)
c = a | b
^ 按位异或
(
相同为
0
相异为1) c = a ^ b
>>
右移;左边空位补最高位即符号位 b = a >> 2
>>> 无符号右移,左边空位补0 b = a >>> 2
<< 左移;右边空位以补0 b = a << 1
条件运算符
▪ 语法格式
– x ? y : z int a=3; int a=3;
– 唯一的三目运算符 int b=5; int b=5;
String str =""; String str =
if(a<b){ (a<b)?"a<b":"a>b";
str ="a<b";
}else{
str ="a>b";
}
▪ 执行过程
– 其中 x 为 boolean 类型表达式,先计算 x 的值,若为true,则整个三目运
算的结果为表达式 y 的值,否则整个运算结果为表达式 z 的值。
▪ 经常用来代替简单的if-else判断!
运算符的优先级
▪
不需要去刻意的记优先级关系
▪ 赋值<三目<逻辑<关系 <算术<单目
▪ 理解运算符的结合性
基本数据类型之间的转换
▪ 在
赋值运算
或
算术运算
时,要求数据类型相同,否则要进行类型转换
▪ 转换方式:
– 自动转换
– 强制转换
▪ 除boolean类型外,所有的基本数据类型因为各自的精度不同,赋值时
都要考虑这个问题
▪ 除boolean类型外,所有的基本数据类型包括:整型,浮点型,字符型。
▪ 算术运算时的转换
– 整型,浮点型,字符型数据可以混合运算。
– 运算中,不同类型的数据先转化为同一类型,然后进行运算,转换从低级到高级。
– 3+'A'+45L
– 5+3.6+ 'A'+
3.14f
操作数
1类型 操作数
2类型 转换后类型
byte
、
short
、
char int int
byte
、
short
、
char
、
int long long
byte
、
short
、
char
、
int
、
long float float
byte
、
short
、
char
、
int
、
long
、 double double
float double double
▪赋值运算时的转换
▪ 总结
– =右侧:所有变量先转换为字节数最多的数据类型,再计算
– =两侧:左侧宽度>右侧宽度 自动转换
左侧宽度<右侧宽度 强制转换
▪ 特例
– 可以将整型常量直接赋值给byte, short, char等类型变量,而不需要进行强
制类型转换,只要不超出其表数范围
– short b = 12; //合法
– short b = 1234567; //非法