
目录1.字面常量1.1字面常量的分类2.数据类型3.变量3.1变量的概念3.2语法格式3.3整型变量3.3.1整型变量3.3.2长整型变量3.3.3短整型变量3.3.4字节型变量3.4浮点型变量3.4.1双精度浮点型3.5字符型变量3.6布尔型变量3.7类型转换3.7.1自动类型转换隐式3.7.2强制类型转换显示3.8类型提升3.8.1 int与long之间int会被提升为long3.8.2 byte和byte的运算3.9字符串类型3.9.1int 转成string1.字面常量字面常量即程序运行期间固定不变的的量为常量这些值无法改变。如下图的其中1003.14‘A’truefalse都是常量将他们称为字面常量。1.1字面常量的分类1.字符串常量由“ ”括起来的比如“12345”“hello”“你好”。2.整型常量程序中直接写的数字没有小数点的比如100-12。3.浮点型常量程序中直接写的小数比如3.120.49。4.字符常量由单引号‘ ’括起来的单个字符比如‘A’,M。5.布尔常量只有两种true和false。6.空常量null此处不过多介绍。注意字符串整型浮点型以及布尔类型在java中都称为数据类型。2.数据类型在Java中的数据类型分为两类基本数据类型和引用数据类型。基本数据类型分为四类八种四类整型浮点型字符型布尔型。八种基本数据类型注意不论是在16位系统还是32位系统int都占用4个字节long都占8个字节整型和浮点型都是带有符号的整型默认是int型浮点型默认认为double字符串属于引用类型该种类型是后序介绍什么是字节3.变量3.1变量的概念在程序中除了有始终不变的变量外有些内容可能会经常改变比如人的年龄、身高、成绩分数、数学函数计算结果等对于这些经常改变的内容在java程序中称为变量。而数据类型就是用来定义不同类型的变量。3.2语法格式定义变量的语法格式为数据类型 变量名 初始值比如下图3.3整型变量3.3.1整型变量注意事项1.int不论在何种系统下都是4个字节2.推荐使用方式一定义如果没有合适的初始值可以设置为03.在给变量设置初始值时值不能超过int的表示范围否则会导致溢出4.变量在使用之前必须要赋初始值否则会编译错误(局部变量必须而成员变量会有默认的初始值)5.int的包装类型为Integer3.3.2长整型变量注意事项1.长整型变量的初始值后加L或l推荐加L因为l像12.长整型不论在那个系统下都占8个字节3.长整型的表示范围为-2^63--2^63 - 14.long的包装类型为Long3.3.3短整型变量注意事项1.short在任何系统下都占2个字节2.short的表示范围-32768--327673.使用时注意不要超过范围一般使用比较少4.short的包装类型为Short3.3.4字节型变量注意事项1.byte在任何系统下都占1个字节2.byte的范围是-128--1273.字节的包装类型为Byte请大家思考一下byteshortintlong都可以定义整型变量为什么要给出4种不同类型四个类型不是为了冗余而是为了让你根据数值范围和内存占用做出合适的选择在大数据量或底层编程时显得尤为重要。3.4浮点型变量3.4.1双精度浮点型神奇的代码一此处输出的结果为0不是0.5.因为是整型不会打印小数。在java中int除以int的值仍是int会直接舍弃小数部分。如果想要double类型计算。神奇的代码二此处的值是不是1.21 而是注意事项1.double在任何系统下都占8个字节2.浮点型与整型在内存中的存储方式不同不能单纯使用的形式来计算3.double的包装类型Double4.double类型的内存布局遵守IEEE 754标准和C语言一样尝试有限的内存空间表示可能无限用到浮点型都优先考虑double不太推荐float。float的包装类型是Float3.5字符型变量注意事项1.Java中使用 单引号 单个字母 的形式表示字符字面值2.计算机中的字符本质上是一个整型在C语言中使用ASCII表示字符而Java中使用Unicode表示字符。因此一个字符占用两个字节表示的字符种类更多包括中文。3.char的包装类型为Character3.6布尔型变量布尔类型常用表示真假在现实生活中也是经常出现比如某个同学中奖一个亿。卧槽真的假的注意事项1.boolean类型的变量只有两种取值true表示真false表示假2.Java的boolean类型和int不能相互转化不存在1表示ture0表示false这样的用法3.Java虚拟机规范中并没有明确规定boolean占几个字节也没有专门用来处理boolean的字节码 指令在Oracle的Java虚拟机实现中Java编程语言中的布尔数组被编码为Java虚拟机字节数 组每个布尔元素使⽤8位。4.boolean的包装类型为Boolean。3.7类型转换Java 作为⼀个强类型编程语⾔,当不同类型之间的变量相互赋值的时候,会有教严格的校验.在Java中当参与运算数据类型不⼀致时就会进行类型转换。Java中类型转换主要分为两类自动类型转换(隐式)和强制类型转换(显式)。3.7.1自动类型转换隐式⾃动类型转换即代码不需要经过任何处理在代码编译时编译器会⾃动进⾏处理。特点数据范 围⼩的转为数据范围⼤的时会⾃动进⾏。int类型的值自动转换为long类型3.7.2强制类型转换显示强制类型转换当进⾏操作时代码需要经过⼀定的格式处理不能⾃动完成。特点数据范围⼤的 到数据范围⼩的。字节大的转换字节小的必须强制转换此处257超出byte的范围100默认int自动转换byte注意事项1.不同数字类型的变量之间赋值表示范围更小的类型能隐式转换换成范围较大的类型2.如果需要把范围大的类型赋值给范围小的需要强制类型转换但是可能精度丢失3.将一个字面常量进行赋值的时候java会自动针对数字范围进行检查4.强制类型转换不一定成功不相干的类型的不能互相转换3.8类型提升不同类型的数据之间相互运算时数据类型小的会被提升到数据类型大的。3.8.1 int与long之间int会被提升为longint long long long 赋值给int时会丢失数据int是4个字节long是8个字节int long long logn 赋值给long3.8.2 byte和byte的运算此处会编译错误a和b都是byte型但计算时会将a和b会提升成int型再赋给c 会出现错误由于计算机的CPU通常是按照4个字节为单位从内存中读写数据为了硬件上实现方便诸如byte和short这种低于4个字节的类型会提升成int再参与计算。这样修改就可以了【类型提升小结】1.不同类型的数据混合运算范围小的会提升成范围大的2.对于shortbyte这种比4个字节小的类型会先提升成4个字节的int再运算3.9字符串类型3.9.1int 转成string3.9.2string 转成 int于此这里就结束了感谢大家的观看。