基本数据类型

基础知识

共八种数据类型:4种整型(byte, short, int, long),2种浮点型(float,double),booean,char

类型 名称 占几个字节 范围 后缀、表示法
整型 byte 1 2^8/2 = -128,最大-128~127 无,超过范围报错
整型 short 2 2^16/2 = 32767,-32768~32767 无,超过范围报错
整型 int 4 2^32/2 = 约21亿 无,超过范围报错,默认类型
整型 long 8 2^64/2 = 约1000亿亿 l或L,如果不加则为int转换为long,大于int最大值时报错
浮点型 float 4 最大10^38 必须加f或F
浮点型 double 8 最大10^308 无,超过范围报错,默认类型
布尔型 boolean 官方未公布 true/false
字符型 char 2 Java中使用UTF-16储存字符

整型的赋值

  • 一个整数默认作为int类型处理
    int i = 100
  • 变量是long,小于int最大值,则引发自动类型转换,int转换为long
    long i = 100
  • 变量是long,大于int最大值,编译出错,数字必须加L
    long i = 100000000000000000 //编译出错
    long i = 100000000000000000L //编译通过
  • 变量是byte、short、int,小于对应最大值,引发自动类型转换
    short i = 10 //int类型的10自动转换为short
  • 变量是byte、short、int,大于对应最大值,编译出错,可以强制类型转换,但数字会有变化。
    short i = 10000000 //编译出错
    short i = (short)10000000 //数字会被截断

字符型

Java中的char类型使用unicode,unicode是一个16位的字符集,最大容量65535,容纳了全世界所有书面语言的字符,Java采用UTF-16将unicode编码为16位数字,用于储存或传输。
char类型可以通过以下三种方式初始化:
char ch = 'A'
char ch = 65
char ch = '\u0041'
十六进制的0041就是A在unicode中的码点,十六进制0041的十进制数就是65

浮点数

  • 浮点数有两种表示法:加小数点、用e
    • 没有小数点和e的数值,都当作int
  • float占4字节,32位,其中符号1位,尾数23位,指数8位(-128-127),底数为2,转为底数10后范围是±3.40E+38
  • double占8字节,64位,其中符号1位,尾数52位,指数11位(-1024-1023),底数为2,转为底数10后范围是±1.79E+308
  • 商业计算中需要精确表示一个数,推荐使用BigDecimal
  • 还有三个特殊的数,Infinity-InfinityNaN,
    1.0/0.0会得到Infinity1/0则会抛出异常

类型转换

  • 数值范围小的类型会自动转换为范围大的类型,顺序如下:
    byte-short-int-long-float-double
    double d = 100, 打印输出100.0
  • char比较特殊,可以自动转换为int和比int大的类型
    int f = 'A', 打印输出65
    float f = 'A', 打印输出65.0
  • ""+任意基本类型,都会转换为String
    • true + "ABC",输出trueABC
    • 注意:2 + 3 + "ABC",输出5ABC
    • 注意:"ABC" + 2 + 3,输出ABC23
  • String转换为基本数据类型
    • 基本类型都提供了各自的包装类:Integer、Float、Boolean等
    • 除了char,其他都提供一个parseXxx(String str)方法将String转换为各自类型
      int i = Integer.parseInt("100")
      double i = Double.parseDouble("100.0")
  • 基本类型转换为String
    • 对所有基本类型,都可以采用String.valueof(任意基本类型)
    • 更常用的,使用""+基本类型,即可转换为String
  • 表达式中的类型转换
    一个表达式的返回值总是表达式中最高级的那个数据类型
    123d + 12,返回double类型
    3 / 2, 返回int类型,1.5直接截断为1

你可能感兴趣的:(基本数据类型)