1.1整形变量
int 变量名=初始值;
注意事项:
1.iny表示变量的类型是一个整形
2.变量名是变量的标识,后续都是通过这个名字来使用变量
3.Java中=表示赋值,意思是给辩变量设置一个初始值
4.初始化操作是可选的的,但简易创建变量的时候显式初始化
使用一下代码查看Java中的整形数据范围:
System
.
out
.
println
(
Integer
.
MAX_VALUE
);
// int
的最大值
System
.
out
.
println
(
Integer
.
MIN_VALUE
);
// int
的最小值
如果预算的结果超出了int的最大范围
int
maxValue
=
Integer
.
MAX_VALUE
;
System
.
out
.
println
(
maxValue
+
1
);
int
minValue
=
Integer
.
MIN_VALUE
;
System
.
out
.
println
(
minValue
-
1
);
1.2长整型变量
long
注意事项
1.基本语法格式和创建int变量基本一致,知识把类型修改成long
2.初始化设定的值为10L,表示一个长整型的数字
3.使用10初始化也可以,10的类型式int,10L的类型式long
Java
中
long
类型占
8
个字节
.
表示的数据范围
-
2^63
-
> 2^63
-
1
使用以下代码查看 Java 中的长整型数据范围
System
.
out
.
println
(
Long
.
MAX_VALUE
);
System
.
out
.
println
(
Long
.
MIN_VALUE
)
//
运行结果
9223372036854775807
-
9223372036854775808
1.3双精度浮点型变量
double
java
中,int除以int的值仍然式int(会直接舍弃小数部分)
double
a
=
1.0
;
double
b
=
2.0
;
System
.
out
.
println
(
a
/
b
);
//
执行结果
0.5
Java中的double
虽然也是八个字节,但是浮点数的内存布局和整数差别很大,不能单纯的用2^n的形式表示数据规范。
1.4单精度浮点型变量
float
float类型在java中占四个字节,同样遵守IEEE754标准,由于表示的数据精度范围比较小,一般在工程上用到浮点数都优先考虑double。
能用double就用double
1.5字符类型变量
char
注
1.java中使用 单引号 + 单个字母 的形式表示字符字面值
2.计算机中的字符本质上是一个整数,在c语言过程中使用ASCII表示字符,而java中使用Unicode表示字符。因此一个字符占用两个字节,表示的字符种类多,包括中文。
使用一个字符表示一个汉字
1.6字节类变量
byte
注
1.字节类型表示的也是整数,只占一个字节,范围比较小。
2。字节类型和字符类型互不相干
1.7短整型变量
short
注
1.short占用2个字节,表示的数据范围是-32768->+32767
2.这个表示范围比较小,一般不推荐使用。
1.8布尔类型变量
bollean
注
1.bollean 类型的变量只用两种取值true表示真,false表示假
2.java的boolean类型和int不能互相转换,不存在1表示true,0表示false这样的用法
3. boolean类型有些JVM的实现是占1个字节,有些是占1个比特位,这个没有明确规定。
1.9
字符串类型变量
String
注
1.java使用双引号+若干字符的方式表示字符串字面值
2.和上面的类型不同,String不是基本类型,而是引用类型
3.字符串中的一些特定的不太方便直接表示的字符需要进行转义
1.10变量的作用域
1.11变量的命名规则
硬性指标
1.一个变量名只能包含数字,字母,下划线
2,数字不能开头
3.变量名是大小写敏感的,即num和Mum是两个不同变量
软性指标
1.变量名要具有描述性,见名知意
2.变量名不宜使用拼音
3.变量名的磁性推荐使用名词。
4.变量名推荐 小驼峰命名法
1.12常量
1.字面值常量
2.final关键字修饰的常量
1.12理解类型转换
long
表示的范围更大
,
可以将
int
赋值给
long,
但是不能将
long
赋值给
int.
double
表示的范围更大
,
可以将
int
赋值给
double,
但是不能将
double
赋值给
int.
结论
:
不同数字类型的变量之间赋值
,
表示范围更小的类型能隐式转换成范围较大的类型
,
反之则不行
.
int
和
boolean
相互赋值
结论1
:
int
和
boolean
是毫不相干的两种类型
,
不能相互赋值
结论2
:
使用字面值常量赋值的时候
, Java
会自动进行一些检查校验
,
判定赋值是否合理
.
结论3
:
使用
(
类型
)
的方式可以将
double
类型强制转成
int.
但是
1.
强制类型转换可能会导致精度丢失
.
如刚才的例子中
,
赋值之后
, 10.5
就变成
10
了
,
小数点后面的部分被忽略
.
2.
强制类型转换不是一定能成功
,
互不相干的类型之间无法强转
.
类型转换小结
1.
不同数字类型的变量之间赋值
,
表示范围更小的类型能隐式转换成范围较大的类型
.
2.
如果需要把范围大的类型赋值给范围小的
,
需要强制类型转换
,
但是
可能精度丢失
.
3.
将一个字面值常量进行赋值的时候
, Java
会自动针对数字范围进行检查
.
1.13理解数值提升
int和long混合运算
结论
:
当
int
和
long
混合运算的时候
,
int
会提升成
long
,
得到的结果仍然是
long
类型
,
需要使用
long
类型的变量来
接收结果
.
如果非要用
int
来接收结果
,
就需要使用强制类型转换
.
byte和byte的运算
结论
:
byte
和
byte
都是相同类型
,
但是出现编译报错
.
原因是
,
虽然
a
和
b
都是
byte,
但是计算
a + b
会先将
a
和
b
都
提升成
int,
再进行计算
,
得到的结果也是
int,
这是赋给
c,
就会出现上述错误
.
由于计算机的
CPU
通常是按照
4
个字节为单位从内存中读写数据
.
为了硬件上实现方便
,
诸如
byte
和
short
这种低于
4
个字节的类型
,
会先提升成
int,
再参与计算
.
小结
1.
不同类型的数据混合运算
,
范围小的会提升成范围大的
.
2.
对于
short, byte
这种比
4
个字节小的类型
,
会先提升成
4
个字节的
int ,
再运算
.
1.14和string之间的相互转换
int转成String
String转成int
1.15小结
每种数据类型及其范围
,
是需要我们掌握的重点
.
隐式类型转换和类型提升
,
是本节的难点
.
但是一般我们更推荐在代码中避免不同类型混用的情况
,
来规避类型转换和
类型提升的问题
.
2.运算符
2.1算术运算符
基本与算符 + - * / %
2.2关系运算符
== != < > <= >=
注:关系运算符的表达式返回值都是boolean类型
2.3逻辑与算符
&& || !
注 罗基预算的操作数(操作数往往是关系运算符的结果)返回值都是boolean
逻辑与&&
规则 两个操作都为true,结果为true,否则为false
逻辑或||
规则:两个操作都为false结果为false否则为true
逻辑非!
规则:操作为true,结果为false;操作数为false,结果为true
2.4位运算符
& | ~ ^
按位与
&
:
如果两个二进制位都是
1,
则结果为
1,
否则结果为
0.
按位或
|:
如果两个二进制位都是
0,
则结果为
0,
否则结果为
1
按位取反
~:
如果该位为
0
则转为
1,
如果该位为
1
则转为
0
按位异或
^:
如果两个数字的二进制位相同
,
则结果为
0,
相异则结果为
1.
2.5小结
1. %
操作再
Java
中也能针对
double
来计算
.
2.
需要区分清楚前置自增和后置自增之间的区别
.
3.
由于
Java
是强类型语言
,
因此对于类型检查较严格
,
因此像
&&
之类的运算操作数必须是
boolean.
4.
要区分清楚
&
和
|
什么时候是表示按位运算
,
什么时候表示逻辑运算
.
整体来看
, Java
的运算符的基本规则和
C
语言基本一致
.
均来自于比特博哥javase课件
打卡第一天