黑马程序员技术交流社区

标题: 【上海校区】Java中的数据类型 [打印本页]

作者: 不二晨    时间: 2018-10-22 11:51
标题: 【上海校区】Java中的数据类型
1:基本数据类型(String不是基本类型默认值是null)
 A:整数、byte(1个字节,8位 -128~127)、short(2个字节)、int(4个字节)、long(8个字节)默认值是0
         B:浮点数 float(4字节)、double(8字节)默认值是0.0
         C:字符 char(2字节)默认值是\u0000
  D:布尔型 1字节 默认值是false
  Byte类型的数据:10000000这里的1既是符号位也是数值位,值为-128.
  整数默认int浮点数默认double
  Long类型需要用L来标记下,比如long j=10000000000L正确;
                          long j=10000000000 错误
  Float类型需要用F来标记下,比如float j=1.234F正确;
                          float j=1.234错误
2、运算中一般要求数据类型一致。
 A、布尔类型不能随便转换
 B、默认转换(从小数据到大数据)
         Byte,short、char、int、long、float、double
 C、Byte,short、char相互之间不转换,他们都是先转换为int类型,转换顺序为int-long-float-double。
 17.625 10001.101 1.00011012^4 二进制存储为01000001 10001101 00000000 00000000
 float存储的数据比long范围大 float 最大3.410^38 ,long最大2^(63-1)
3、强制类型转换:从大的数据类型到小的数据类型(不要随意使用,可能会丢失精度)
目标的数据类型 变量=(目标的数据类型)(被转换的数据)
 A、byte c=(byte)(a+b)
 B、float f1=12.345F
    float f2=(float)12.345
   都没问题,但常用F1这种表示方法,因为f2中12.345实际为double类型(小数默认为double类型),通过强制类型转换转成了float类型
 C、byte a=1,b=2,c;
 c=a+b;//会报错,因为变量相加运算时自动将A、B的类型变为int计算,计算之后变为byte类型损失精度。
 C+=a不会报错,因为其中已经加了一个强制数据转换。C=byte(c+a)
 C=1+2;//正确,常量计算时先计算a+b结果,之后判断结果是否在c类型中,在的话即没问题
4:byte=130//报错因为byte类型是 -128~127,130不在此范围之内,因此我们可以        使用强制类型转换。
 byte b=130;
 System.out.println(b);
 分析结果:
 A:获取130数据的二进制(int类型)
 00000000_00000000_00000000_10000010 130的原码
 B:做截取操作,变为byte类型
 10000010 此结果为补码
 C:已知补码求原码
 补码:10000010
 反码:10000001
 原码:11111110
5、字符和数相加是字符的ASCII码和数值相加
 A   65   ‘a’+1 输出66
 a   97
 0         48
6、字符串数据和其他数据做加法运算,结果是字符串类型
 这里的+不是加法运算,而是字符串连接符;
 System.out.println(“hello”+1+’a’) 输出结果为hello1a
  ’a‘+1+“hello”  输出为98hello
 “5+5=”+5+5   输出为5+5=55
 “5+5=”+5*5   输出为5+5=25 此处的✖不是连接符,具有实际意义
  5+5+“=5+5“  输出为10=5+5

7、java语言中字符char占用两个字节,所以可以存储一个中文汉字。

Java语言采用Unicode编码
---------------------
【转载】
作者:zfliu96
原文:https://blog.csdn.net/zfliu96/article/details/83240432



作者: 小影姐姐    时间: 2018-10-25 09:49

作者: 不二晨    时间: 2018-10-25 10:41





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2