1、Java数据类型
●Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间
●JVM内存管理分为三大块:栈内存(调用方法时,在方法中声明的一些基本类型)、堆内存(new出来的对象,引用类型)、方法区(静态变量、常量、类的信息)。
●JVM会把整型默认为int类型(不超范围的可以自动转换成小类型,long需要末尾加l或L),带小数的默认为double类型(float需要末尾加f或F)。小数为零点几的可以省略零,也可以后面加eXX,代表乘以10的XX次方。数值前面加上括号,里面写上类型可实现强制类型转换。
●字符型char必须用单引号括起来(也可直接使用数值或十六进制的Unicode字符),在java中字符char类型使用的是占两字节的Unicode字符编码UTF-16(’\u0000’)。
●Java对于整数有三种不同的表现形式
●十进制:0-9,满10进一
●八进制:0-7,满8进一,以0开头
●十六进制:0-9,A-F,满16进一,以0x开头
●进制的基本转换
●十进制转二进制:除2取余数(小数为乘2取整数)
●二进制转十进制:乘2的幂数(小数为2的-1次方、-2次方)
●八进制、二进制互转:一位变三位、三位变一位
●十六进制、二进制互转:一位变四位、四位变一位
●负数的二进制表现形式
●对应的正数二进制取反加一
●数值转换练习:
练习1:将二进制数1101.101转换为十进制数。(13.625)
练习2:将十进制整数105.625转换为二进制整数。(1101001.101)
练习3:将1011101001.110101B转换为十六进制数(2E9.D4)
2、基本类型转换
●语法
●自动类型转换(隐式转换):
在某种条件下,系统自动完成类型转换也称隐含转换(Implicit casting)
●两种类型兼容
●目标类型大于源类型
●对于表达式,如果一个操作数为double型,则整个表达式可提升为double型
●强制类型转换(Explicit Casting)(显式转换):
在一定条件下,程序员手动完成类型转换
●两种类型兼容
●一般目标类型小于源类型
●要点
强制类型转换会丢失精度
●示例代码
1、自动类型转换:
int i = 10;
double d = i;
2、强制类型转换
double d = 10.0;
int i = (int)d;
●总结:byte<short(char)<int<long<float<double
●示例
●去年Android手机所占的市场份额是10,今年增长的市场份额是19.8,求今年所占的份额。
int before = 10; //Android手机市场份额
double rise = 19.8; //增长的份额
int now = before + rise; //现在的份额 ← 编译出错,不能完成自动类型转换
更改为int now = before + (int)rise; //现在的份额 ←强制类型转换