疯狂Java笔记:3.4 基本数据类型
来源:互联网 发布:华尔街英语软件课程 编辑:程序博客网 时间:2024/06/05 20:36
3.4.1 整型
byte:8 位,-128~127short:16 位,-32768~32767int:32 位,-2147483648~2147483647long:64 位。-2^63~2^63-1
- 所有直接给出的整数值默认 int 类型。
- 较小整数[byte/short 表数范围内]赋值给byte和short变量,系统自动当成对应类型处理
巨大整数[超过int范围]赋值给long,系统不能自动当成long处理,需要加上L后缀使系统将其当成Long类型处理
所有数字在计算机底层以二进制形式存在
- 计算机以补码形式保存所有整数。补码是原码取反+1,程序中给出的二进制数均为补码形式。
- 二进制整数最高位为符号位
- 正数:符号位为0->补码和原码相同->可直接成换算十进制
负数:符号位为1->补码[减1]->反码[按位取反]->原码->可直接换算十进制
package jwz;/** * 整型数据类型测试 */public class IntTest{ public static void main(String[] args) { // 巨大整数和较小整数示例 // 较小整数[byte/short范围允许]赋值给byte和short,系统自动当成对应类型处理 byte byteValue=56; System.out.println("byte类型数:"+byteValue);// 输出56 // 大整数[超过int范围]赋值给long,系统不能自动当成long处理,需要加上L后缀 // long bigValue=999999999999;// 编译出错 long bigValue2=999999999999L;// 编译通过 // 二进制/八进制/十六进制示例: // 二进制整数:0b或0B开头 short binValue=0B01101001; System.out.println("二进制数:"+binValue); // 八进制整数:0开头 int octalValue=013; System.out.println("八进制数:"+octalValue); // 十六进制整数:0x或0X开头[10-15用a~f表示,不区分大小写] int hexValue=0X1f; System.out.println("十六进制数:"+hexValue); // 二进制原码/补码/正数/负数/溢出示例: // 整数值默认int类型,32位,正数 // 强制转换后:byte类型,1字节,第8位成为符号位,负数,该现象称为溢出 byte binValue1=(byte)0B11010100; // 2字节,第8位不是符号位,正数 short binValue2=0B11010100; System.out.println("二进制数:"+binValue1+"\t"+binValue2); // 4字节,32位为符号位,负数 int binValue3=0B10000000000000000000000000000011; // 添加"L"后缀,当成long类型处理,8字节,32位不为符号位,正数 long binValue4=0B10000000000000000000000000000011L; System.out.println("二进制数:"+binValue3+"\t"+binValue4); }}
3.4.2 字符型
- 定义:表示单个字符,必须用单引号括起来
'a'
- 字符集:所有字符的编号组成的总和
- ASCII字符集[8位,支持256个字符编号]
- Unicode字符集[16位,支持65536个字符编号],java支持
字符型值表示形式:
- 直接通过单个字符指定字符型值:’A’,’9’
- 通过转义字符表示特殊字符型值:’\n’ ‘\t’ ‘\b’ ‘\r’ ‘\’ ‘\” ‘\”’
直接使用Unicode值表示:’\ uXXXX’,xxxx代表十六进制整数
计算机保存字符时,实际上是保存该字符在字符集中对应的编号,因此char类型的值可以直接作为16位无符号整数使用,2字节,表数范围0~65535
/** * 字符型测试 */public class CharTest{ public static void main(String[] args) { char aChar='A';// 单个字符 char enterChar='\r';// 转义字符 char enterChar1='\n';// 转义字符 char ch='\u9999';// Unicode编码值 char chi='香';// 单个中文字符 int chiValue=chi;// 当作无符号整数使用 char c=97;// 使用无符号整数赋值,系统会自动将int整数当成char类型处理 char hexValue=0x9999;// 16进制的9999 == '香' 的Unicode编码值,输出 '香' System.out.println(aChar+"\t"+enterChar+"\t"+enterChar1+"\t"+ch+"\t"+chi+"\t"+chiValue+"\t"+c+"\t"+hexValue); }}
3.4.3 浮点型
- Java 的浮点类型有固定的表数范围和字段长度,与机器无关。
- Java 采用二进制数据的科学计数法来表示浮点数,因此不可能精确。
- 精确度:BigDecimal>double>float
- float:单精度浮点数,4字节,32位,1位符号位,8位指数位,23位尾数
- double:双精度浮点数,8字节,64位,1位符号位,11位指数位,52位尾数
- 浮点型数据表示方法:
- 十进制:5.12,52.0,.512 必需包含小数点,否则被当成 int
- 科学计数法:5.12e2–>5.12*10^2 [只有浮点数可以使用科学计数法形式表示]
- Java 浮点数默认 double 类型,需要加f后缀,才会被当成 float 类型处理[类比long型整数]
- ±无穷大和非数:用以表示溢出和出错。
- ±浮点数/0 得到±无穷大:用Double或float类的POSITIVE_INFINITY/NEGATIVE_INFINITY表示
- 0.0/0.0 或 对一个负数开方 或 0、0.0对任何非0数求余 得到非数 NAN
- 只有浮点数才可以/0[自动转换成/0.0,否则/0 异常]
- 所有无穷大数值都是相等的,而非数不与任何数值相等,甚至其本身
/** * 浮点型数据 */public class FloatTest{ public static void main(String[] args) { // 默认为double类型 double a=5.6; System.out.println("double类型:"+a); // 编译出错,Java默认浮点类型为double,表示float需要加f后缀或强制类型转换 // float a=5.6; float ff=(float)5.6;//默认double,强制转换成float float af=5.6f;// 添加后缀表示其为float类型 System.out.println("float类型:"+af+"\t"); // ±无穷大示例: double c=Double.NEGATIVE_INFINITY;//double类型负无穷大 float d=Float.NEGATIVE_INFINITY;//float类型负无穷大 a=0.0; System.out.println("负无穷大:"+(-8/a));//负数除以0.0得到负无穷大 System.out.println("正无穷大:"+(8/a));//正数除以0.0得到正无穷大 System.out.println("负无穷大比较:"+(-6.0/0 == -555.0/0)+"\t"+(c==d));//负无穷大相等 double c1=Double.POSITIVE_INFINITY;//double类型正无穷大 float d1=Float.POSITIVE_INFINITY;//float类型正无穷大 System.out.println("正无穷大比较:"+(6.0/0==c1)+"\t"+(c1==d1));//正无穷大相等 // 非数NaN示例: System.out.println("非数:"+(a/a));//0.0除以0.0或对一个负数开方得到非数 System.out.println("非数比较"+(a/a==Float.NaN));//非数不相等 // by /zero 异常 // System.out.println(8/0);//算术异常 }}
3.4.4 数值中使用下划线分隔
/** * 数值中可以自由的使用下划线分隔 */public class UnderLineTest{ public static void main(String[] args) { int binValue=0B1000_0000_0000_0000_0000_0000_0000_0011; double pi=3.14_15_92_65_36; System.out.println(binValue); System.out.println(pi); double height=8_8_4_8.23; System.out.println(height); int s=8_8; System.out.println(s); }}
3.4.5 布尔型
- 1字节,8位,true/false ,不能用0/1表示
- boolean类型的值实际上只需要1位即可保存,但大部分计算机分配内存的最小单位是字节,8位
- 其他基本数据类型不能转换成boolean类型
- boolean类型和其他字符串连接时自动转换成字符串
- boolean类型的值或变量主要用于流程控制:if/while/do while/for/? :
/** * 布尔型测试 */public class BooleanTest{ public static void main(String[] args) { boolean b1=true; boolean b2=false; //boolean类型和其他字符串连接时自动转换成字符串 String str=b1+"_str"; System.out.println(b1+"\t"+b2+"\t"+str+"\t"+(b1==true)+"\t"+(b1==b2)); }}
0 0
- 疯狂Java笔记:3.4 基本数据类型
- 疯狂java讲义笔记——数据类型
- 疯狂Java笔记:3.3 数据类型分类
- 疯狂Java笔记:3.5 基本类型转换
- Java笔记----2. 基本数据类型
- JAVA学习笔记 基本数据类型
- 笔记一java基本数据类型
- Java学习笔记----基本数据类型
- JAVA基本数据类型初始化--笔记
- Java学习笔记1:数据类型-基本数据类型
- 疯狂JAVA之学习笔记(7)-------------数据类型
- 《疯狂Java程序员基本修养》笔记(1-5)
- 疯狂Java程序员的基本素养学习笔记
- 《疯狂JAVA讲义》之十——Java基本数据类型之一
- 《疯狂JAVA讲义》之十一——Java基本数据类型之二
- 《疯狂JAVA讲义》之十二——Java基本数据类型之三
- java学习笔记(二) ----基本数据类型应用
- java学习笔记(二) ----基本数据类型应用
- 转:新手读懂五线谱
- java代码优化浅析
- 微信文档错误,40001 ,access 错误等等。微信你能不能认真的写文档!!!
- MySQL_Base
- Aizu 2306 Rabbit Party DFS
- 疯狂Java笔记:3.4 基本数据类型
- AsyncTask详解
- HTML5的表单功能合集
- Android Studio安卓项目目录结构详解(思维导图)
- wordpress和微信平台那些事
- Java中的this和super
- ViewGroup的touch事件:dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent
- 412. Fizz Buzz
- UVA.11464 Even Parity (思维题 开关问题)