boolean类型

Boolean在内存中占用一个字节。

当java编译器把java源代码编译为字节码时,会用int或byte来表示boolean。在java虚拟机中,用整数零来表示false,用任意一个非零整数表示true。

java虚拟机这种底层处理方式对java虚拟机是透明的,在java源程序中boolean类型的变量取值只能是true或false

byte、short、int、和long 整数类型

byte、short、int、long都是整数类型,并且是有符号整数  分别占用1、2、4、8个字节。

取值范围分别是-128—127、-2的15次方到2的15次方减一、-2的31次方到2的31次方减一、-2的63次方到2的63次方减一

byte在内存中占用一个字节 取值范围是 -128—127。在定义一个变量时。比如月份的取值是1到12。因此把代表月份的month变量定义为byte类型会节省内存空间。

在实际应用中 通常把month定义为int类型,因为这样可以简化数据运算时强制类型转换操作。

byte month = 1;
month = month+2;//编译错误 需要强转
month = (byte) (month+2); //编译正确

Java中整型常量数值的默认类型是int类型

char 字符类型

char是字符类型 占用两个字节,java语言对字符采用Unicode字符编码。由于计算机内存只能存储二进制数据。因此必须对各个字符进行编码。

所谓字符编码是指用一串二进制数据来表示特定的字符。常见的字符编码包括,ASCII编码(1Byte=8bit 一共能表示2的7次方 128个字符) 是单字节编码系统,ISO-8859-1编码(也是单字节编码系统) GB2312编码 GBK编码 Unicode编码。

Unicode编码由国际Unicode协会编制,收录了全世界所有语言文字中的字符,是一种跨平台的字符编码USC(Universal Character Set)是指采用Unicode编码的通用字符集。

如果实际上要存储的字节都是ASCII字符(只占7位),采用Unicode编码及其浪费存储空间。UTF-8编码能够更加有效的利用存储空间,它对ASCII字符采用一个字节形式的编码,对非ASCII字符则采用两个或两个以上字节形式的编码。

Unicode有两种编码方案。

  用两个字节(16位)编码,采用这个编码方案的字符集称为UCS-2。java语言采用的就是两个字节的编码方案

  用四个字节(32位)编码(实际上只用了31位,最高位必须为0),采用这个编码的字符集被称为UCS-4。

1994年公布的Unicode,为每种语音中的每个字符都设定了唯一编码,以满足跨语言的交流,分为编码方式和实现方式。

实现Unicode的编码格式 有UTF编码。可以理解为对Unicode的压缩方式,常见的UTF编码有 utf-8,utf-7,utf-16

有些操作系统不完全支持16位或32位的Unicode编码,UTF(UnicodeTransformation Format) 编码能够把Unicode编码转换为操作系统支持的编码。

ASCII编码,ISO-8859-1编码 GB2312编码 GBK编码 Unicode编码 都属于编码方式,UTF属于实现方式(实现Unicode编码)。

float和double 浮点类型(带小数)

float:占四个字节,共32位,称为单精度浮点数

double:占八个字节,共64位,称为双精度浮点数

Java中的浮点型常量数值默认是double类型

注意: java提供的浮点类型不适合进行精确的运算

    public static void main(String[] args) throws Exception {
double money = 1;
double price = 0.1;
System.out.println(money-price*9);//打印出来0.09999999999999998(本应该是0.1)
}

解决办法: java.math.BigDecimal类可以满足用户的精度 注意 构造BigDecimal类时 构造方法中的参数 不建议是浮点类型 需要转成String类型

基本数据类型转换

上面四类八种基本数据类型。除了boolean类型。整型 浮点型和字符型数据可以进行混合转换。

从低位到高位会自动进行类型转换,即int类型的数和Long类型的数一起运算时 结果会自动转成Long类型(向上转型)

从高位到低位需要进行强制类型转换。(向下转型)

从低位到高位 byte、char、short、int、long、float、double

  float f = 3.14; //编译错误,不能把double类型直接赋值给float类型变量 需要强制类型转换

  应用中,强制类型转换有可能会导致数据溢出或者精度下降,应该避免使用强制类型转换。

  下面代码中 把int强制转换为byte类型,会导致数据溢出。

    int a = 256;
    byte aa = (byte) a;
    int b = 222;
    byte bb = (byte) b;
    System.out.println(aa); // 打印结果0
    System.out.println(bb); //打印结果-34

对于基本类型的变量,java虚拟机会为其分配数据类型实际占用内存的大小

JAVA四类八种基本数据类型的更多相关文章

  1. Java四类八项基本数据类型

    一. 四类八项基本数据类型 1. 整数类型(byte.short.int.long) 三点注意事项: a. Java各整数类型有固定的表示范围和字段长度,其不收操作系统的影响,以保持Java的可移植性 ...

  2. Java四类八种数据类型

    http://www.cnblogs.com/simplefrog/archive/2012/07/15/2592011.html 第一类:逻辑型boolean 第二类:文本型char 第三类:整数型 ...

  3. Java四类八种

    四类: 整数类型,浮点类型,字符型,布尔型 八种: byte,short,int,long,float,double,char,boolean

  4. Day1---Java 基本数据类型 - 四类八种 --九五小庞

    一.Java四大数据类型分类 1.整型 byte .short .int .long 2.浮点型 float . double 3.字符型 char 4.布尔型 boolean 二.八种基本数据类型 ...

  5. java的基本数据类型--四类八种

    java的数据类型 1.分为基本数据类型和引用数据类型 基本数据类型的分类:整数型: byte  占用一个字节 范围-128-127 short 占用两个字节  -2^15~2^15-1 int    ...

  6. Java学习笔记四:Java的八种基本数据类型

    Java的八种基本数据类型 Java语言提供了八种基本类型.六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型. Java基本类型共有八种,基本类型可以分为三类,字符类型char,布 ...

  7. Java常用类之【八种基本数据类型】

    一.装箱和拆箱 装箱:将基本数据类型包装为对应的包装类对象 拆箱:将包装类对象转换成对应的基本数据类型 JDK5.0中为基本数据类型提供了自动装箱(boxing).拆箱(unboxing)功能 二.八 ...

  8. 【转】Java八种基本数据类型的比较及其相互转化

    java中有且仅有八种基本数据类型,记住就行,共分为四类: 第一类:整型-->byte     short      int     long 第二类:浮点-->float    doub ...

  9. Java的八种基本数据类型及其包装类

    Java有八种基本数据类型,所谓基本类型就是说存储时仅存在栈中,那么与之相对就是引用类型,引用类型既存在栈里又存在堆里,栈内存放堆内地址. 八种基本类型分别为byte short int long f ...

随机推荐

  1. vertx的Future设计

    异步痛点 1.回调地狱(CallBack hell) ; 解决方式 Promise 或 Future 2.执行异步后的结果如何回调currentThread ; 解决方式 Context 设计 3.如 ...

  2. 在servlet中使用spring注解

    @Autowired IAgreementPayService agreementPayService; /** * 支付参数 */ @Value("B{agreementPay.publi ...

  3. Nginx+DNS负载均衡实现

    负载均衡有多种实现方法,nginx.apache.LVS.F5硬件.DNS等. DNS的负载均衡就是一个域名指向多个ip地址,客户访问的时候进行轮询解析 操作方法,在域名服务商解析的DNS也可以是第三 ...

  4. CentOS7虚拟机安装VMware Tools

    1.在VMware中点击安装VMware Tools 2.挂载光驱 mount /dev/cdrom /mnt 3.拷贝解压,注意是大小写敏感的,如果不知道文件名可以用ls查看. [root@loca ...

  5. go语言数据库操作,xorm框架

    待续............................................... 连接数据库 db, err := xorm.NewEngine("mysql", ...

  6. Hive管理表,外部表及外部分区表的深入探讨

    Hive管理表,也叫内部表.Hive控制着管理表的整个生命周期,默认情况下Hive管理表的数据存放在hive的主目录:/user/hive/warehouse/下,并且当我们删除一张表时,这张表的数据 ...

  7. CMD 中常见命令

    引自百度经验:https://jingyan.baidu.com/article/67508eb41d44a09cca1ce4f1.html ipConfig:查询ip ping:查询连接速度: pi ...

  8. C#三目运算符

    在编写项目的时候,会经常用到 if else 判断语句,但有些简单的判断或赋值,可以通过三目运算符来完成! 例如: int sex=0; string sexText=""; if ...

  9. wpf 的各个template

    --转载 在使用TabControl.ListView.Menu.TreeView的时候被各种Template搞得头昏眼花,决心把这个问题搞清楚,究竟什么时候该用什么Template?这是个麻烦的问题 ...

  10. python中的单向循环链表实现

    引子 所谓单向循环链表,不过是在单向链表的基础上,如响尾蛇般将其首尾相连,也因此有诸多类似之处与务必留心之点.尤其是可能涉及到头尾节点的操作,不可疏忽. 对于诸多操所必须的遍历,这时的条件是什么?又应 ...