数据类型的转换,可以分为两种:
1)隐式类型转换(自动类型转换)自动类型提升
2)强制类型转换
隐式类型转换:在程序中,空间保存的数据类型不一致的时候,java内部会自动的帮助我们转换。
要能够自动转换,必须遵守Java中的自动转换的规则:
可以把小空间中的数据给大空间中保存。
byte 空间中的数据, 可以自动的转成 short int long float double
但是不能把double 保存在 byte 、int 、 short 、long 等空间。
说明:byte 类型内存占有1个字节,在和int 类型运算时会提升为int类型 ,自动补充3个字节,因此计算后的结果还是int 类型。
当一个int 类型变量和一个double 变量运算时,int 类型将会自动提升为double 类型进行运算。
转换规则:范围小的类型向范围大的类型提升,byte、short、char 运算时直接提升为int 。
byte、short、char-->int-->long-->float-->double
double 类型内存8个字节,int 类型内存4个字节。1.5 是double 类型,取值范围大于int 。
想要赋值成功,只有通过强制类型转换,将double 类型强制转换成int 类型才能赋值。
格式:
需要转成的数据类型 变量名 = ( 需要转成的数据类型 )( 被转的数据 );
当一个short类型与1相加,我们知道会类型提升,但是还想给结果赋值给short类型变量,就需要强制转换。
在计算机的内部都是二进制的0、1数据,如何让计算机可以直接识别人类文字的问题呢?就产生出了编码表的概念。
1)在Java中进行算术运算的时候,运算符两侧的类型一致的时候, 运算的结果必须和运算的数据类型保持一致。
举例:int d = 4321 / 1000* 1000;
4321 是int类型数据
1000 也是int类型数据
他们的商 也必须是int类型
4321 /1000 结果是 4 不是4.321
2)当算术运算两侧的类型不一致的时候,结果向大的类型保持。
举例:double d = 4321 / 1000.0* 1000;
关系运算符有6种关系,分别为小于、小于等于、大于、等于、大于等于、不等于。
比较运算符,是两个数据之间进行比较的运算,运算结果都是布尔值true或者false 。
逻辑运算符,是用来连接两个布尔类型结果的运算符,运算结果都是布尔值true或者false
三元运算符格式:
数据类型 变量名 = 布尔类型表达式?结果1:结果2;
三元运算符计算方式:
三种循环的区别总结
1.建议使用的顺序:for,while,do-while
2.循环次数确定的话,建议使用for,循环次数不确定建议使用while
3.do-while循环来讲的话,至少执行一次
4.while和do-while循环而言,循环结束后,初始化条件中定义的变量可以继续使用,但是for循环的不能使用(在for循环内部定义初始化语句)
死循环:也就是循环中的条件永远为true,死循环的是永不结束的循环。例如:while(true){}。
在后期的开发中,会出现使用死循环的场景,例如:我们需要读取用户输入的数据,但是用户输入多少数据我们并不清楚,也只能使用死循环,当用户不想输入数据了,就可以结束循环了,如何去结束一个死循环呢,就需要使用到跳出语句了。
死循环(无限循环)的三种格式
while的格式:while( true ) { 循环体; }
for的格式:for( ; 默认是true ; ){ 循环体;}
do-while格式:xxxxxxxxxx do { 循环体;} while(true);
注意:
1)只要使用无限循环,那么在循环的下面不要再写任何的语句。
2)开发中如果使用到死循环,优先考虑while循环。
for(初始化表达式①; 循环条件②; 步进表达式⑦) {//外层循环
for(初始化表达式③; 循环条件④; 步进表达式⑥) {//内层循环
执行语句⑤;
}
}
嵌套循环执行流程: