Java基本数据类型 1)四种整数类型(byte、short、int、long): byte:8 位,用于表示最小数据单位,如文件中数据,-128(-2^7)~127(2^7-1) 默认值是 0 short:16 位,很少用,-32768(-2^15) ~ 32767(2^15-1) 默认值是 0 int:32 位、最常用,-2^31-1~2^31 (21 亿) (2,147,483,647) 默认值是 0 long:64 位、次常用 默认值是 0L 后缀L/l(通常不可省;但当数值为int类型及以下时,后缀可省,可进行类型自动转换) 注意事项: int i=5; // 5 叫直接量(或字面量),即直接写出的常数。 整数字面量默认都为 int 类型,所以在定义的 long 型数据后面加 L或 l。 小于 32 位数的变量,都按 int 结果计算。 强转符比数学运算符优先级高。 2)两种浮点数类型(float、double): float:32 位,后缀 F 或 f(通常不可省;但当数值为int类型及以下时,后缀可省,可进行类型自动转换),1 位符号位,8 位指数,23 位有效尾数。 double:64 位,最常用,后缀 D 或 d(可省),1 位符号位,11 位指数,52 位有效尾 注意事项: 二 进 制 浮 点 数 : 1010100010=101010001.0*2=10101000.10*2^10(2次方)=1010100.010*2^11(3次方)= . 1010100010*2^1010(10次方) 尾数: . 1010100010 指数:1010 基数:2 浮点数字面量默认都为 double 类型,所以在定义的 float 型数据后面加F 或 f; double 类型可不写后缀,但在小数计算中一定要写 D 或 X.X float 的精度没有 long 高,有效位数(尾数)短。 float 的范围大于 long 指数可以很大。 浮点数是不精确的,不能对浮点数进行精确比较。
3)一种字符类型(char): char:16 位,是整数类型,用单引号括起来的 1 个字符(可以是一个中文字符),使用 Unicode 码代表字符,0~2^16-1(65535) 。 注意事项: 不能为 0个字符。 转义字符:\n 换行 \r 回车 \t Tab 字符 \" 双引号 \\ 表示一个\ 两字符 char 中间用“+”连接,内部先把字符转成 int 类型,再进行加法运算,char 本质就是个数(二进制的),显示的时候,经过“处理”显示为字符。 4)一种布尔类型(boolean): true 真 和 false 假。 5)类型转换: 自动转换: byte-->short-->int-->long-->float-->double char-->int-->long-->float-->double 强制转换: 语法:(目标类型)数值 ①会损失精度,产生误差,小数点以后的数字全部舍弃。 ②容易超过取值范围。 6)记忆: 8位:Byte(字节型) 16位:short(短整型)、char(字符型) 32位:int(整型)、float(单精度型/浮点型) 64位:long(长整型)、double(双精度型) 最后一个:boolean(布尔类型) Java默认的字符集是Unicode(占两个字节byte,一个字节=8比特位bit,所以每个Unicode占用16比特位) Java流程控制分支学习 一、顺序控制 程序从上到下、从左到右依次执行,中间没有任何判断和跳转。 二、分支控制 让程序有选择的执行,分支控制有三种:单分支、双分支、多分支。 1、if语句 a.单分支: if(布尔表达式){ 布尔表达式为true时要执行的语句 } b.双分支: if(布尔表达式){ 布尔表达式为true时要执行的语句 }else{ 布尔表达式为false时要执行的语句 } c.多分支: if(布尔表达式1){ 布尔表达式1为true时要执行的语句 }else if(布尔表达式2){ 布尔表达式2为true时要执行的语句 } else if(布尔表达式2){ 布尔表达式2为true时要执行的语句 }else{ 以上布尔表达式都为false要执行的语句 } 嵌套式if语句: if(布尔表达式 1){ //如果布尔表达式 1的值为true执行代码 if(布尔表达式 2){ //如果布尔表达式 2的值为true执行代码 } } 2、switch语句: switch(变量){ case value1:变量=value1时执行的语句;break; case value2:变量=value2时执行的语句;break; ................. default:default语句;(default语句块可以省略) } switch语句的使用规则: 1.switch语句中的变量类型可以是:byte、short、int、char、enum。(从 Java SE 7 开始,支持字符串类型,同时 case 标签必须为字符串常量或字面量。)不能用浮点型或long类型 2.switch可以拥有多个case语句。 3.case语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或字面常量。key和value之间的比较只能是== 4.当变量的值与case语句相等时,那么case语句之后的语句开始执行,直到break语句出现才会跳出switch语句。 5.switch语句可以包含一个default分支(也可省),该分支必须是switch语句的最后一个分支,default在所有case语句没有遇到break时执行完后都必须执行,它不需要break语句。default部分是不满足以上任何去执行的代码 ,类似于else if 和 switch 使用场景比较 1) if 语句使用场景 针对结果是 boolean 类型的判断 针对一个范围的判断 针对几个常量值的判断 2) switch 语句使用场景 针对几个常量值的判断 三、循环控制 又称为回路控制,根据循环初始条件和终结要求,执行循环体内的操作,让代码可以循环的执行。 注:JDK1.5 提供了 for each 循环,方便的遍历集合、数组元素。 循环之间可以任意嵌套,但一般嵌套不要超过三层。 a. for循环(有一定规律性) for(循环初值; 循环条件; 步长) { //循环体 } b. while循环(先判断再执行) while (循环条件) { //循环体 } c. do while循环(先执行一次再判断) do { //循环体 } while (循环条件); 四、特殊流程控制语句 Java 中的 goto 是保留字,目前不能使用。虽然没有 goto 语句可以增强程序的安全性,但是也带来 很多不便。比如说,我想在某个循环执行到某一步的时候就结束,现在就做不了这件事情。为了弥补这 个缺陷,Java 就提供了 break,continue 和 return 来实现控制语句的跳转和中断。 注意: break语句的作用: 1、只能在循环体内和switch语句体内使用break语句。 2、当break出现在循环体中的switch语句体内时,其作用只是跳出该switch语句体。 3、当break出现在循环体中,但并不在switch语句体内时,则在执行break后,跳出本层循环体。 4、在循环结构中,应用break语句使流程跳出本层循环体,从而提前结束本层循环。 continue语句作用: 1、continue语句一般形式为:continue; 2、其作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环的条件判定。 3、注意:执行continue语句并没有使整个循环终止。在while和do-while循环中,continue语句使得流程直接跳到循环控制条件的测试部分,然后决定是否继续进行。 4、在for循环中,遇到continue后,跳过循环体中余下的语句,而去对for语句中的“表达式3”求值,然后进行“表达式2”的条件测试,最后根据“表达式2”的值来决定for循环是否执行。循环体内,不论continue是作为何种语言的语句成分,都按上述功能执行,这点与bresk有所不同。 5.continue语句只用在for、while、do-while等循环体中, 常与if条件语句一起使用, 用来加速循环。 标签形式: out: for(int i=0;i<3;i++){ System.out.println("语句1:我是外层循环开始"); for(int j=0;j<3;j++){ System.out.println("我是内层循环"); break out;//直接跳出最外层循环, continue out;//不会执行语句3,直接进行外层循环的下一次循环 } System.out.println("语句3:我是外层循环结束"); }
|