Java的数据类型与类型转换

1. Java基本类型

Java基本类型共有八种,基本类型可以分为三类,字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。数值类型又可以分为整数类型byte、short、int、long和浮点数类型float、double。JAVA中的数值类型不存在无符号的,它们的取值范围是固定的,不会随着机器硬件环境或者操作系统的改变而改变。实际上,JAVA中还存在另外一种基本类型void,它也有对应的包装类 java.lang.Void,不过我们无法直接对它们进行操作。8 种类型表示范围如下:

byte:8位,最大存储数据量是255,存放的数据范围是-128~127之间。

byte num1 = 10;

short:16位,最大数据存储量是65536,数据范围是-32768~32767之间。

short num2 = 20;

int:32位,最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。

long num3 = 30;

long:64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。

long num4 = 30L;    //后面加L表明类型

float:32位,数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F。

float num5 = 10.1F;    //后面加F表明类型

double:64位,数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加。

double num6 = 3.1415926;

boolean:只有true(真/是)和false(假/否)两个取值。

boolean num7 = true;
boolean num8 = false;

char:16位,存储Unicode码,用单引号赋值。

char num9 = 'A';     //用单引号括起来,只能是一个字符。

Java决定了每种简单类型的大小。这些大小并不随着机器结构的变化而变化。这种大小的不可更改正是Java程序具有很强移植能力的原因之一。下表列出了Java中定义的简单类型、占用二进制位数及对应的封装器类。

简单类型booleanbytecharshortIntlongfloatdouble
二进制位数18161632643264
封装器类BooleanByteCharacterShortIntegerLongFloatDouble

2. Java引用类型

Java有 5种引用类型(对象类型):类 接口 数组 枚举 标注

3. 拓展知识:Java中的常量

十六进制整型常量:以十六进制表示时,需以0x或0X开头,如0xff,0X9A。

八进制整型常量:八进制必须以0(零)开头,如0123,034。

二进制整形常量:二进制必须以0b或0B开头,如0b1011,0B1001。

长整型(long):长整型必须以L作结尾,如9L,342L。

浮点数常量:由于小数常量的默认类型是double型,所以float类型的后面一定要加f(F)。同样带小数的变量默认为double类型。

如:

float num5 = 10.1F;    //后面加F表明类型

字符常量:字符型常量需用两个单引号括起来(注意字符串常量是用两个双引号括起来)。Java中的字符占两个字节。

一些常用的转义字符:

①\r表示接受键盘输入,相当于按下了回车键;

②\n表示换行;

③\t表示制表符,相当于Table键;

④\b表示退格键,相当于Back Space键;

⑤’表示单引号;

⑥’'表示双引号;

⑦\表示一个斜杠\。

浮点型拓展

public class Demo006 {
    public static void main(String[] args) {
        //浮点型拓展
        float a = 0.1f;      //0.1
        double b = 1.0/10;   //0.1
        System.out.println(a);
        System.out.println(b);
        System.out.println(a==b);
        //原因:字长有限  舍入误差(大约接近但不等于)
        //最好完全不使用浮点型进行比较
        //BigDecimal  数学工具类
    }
}

tu1

字符型拓展

public class Demo006 {
    public static void main(String[] args) {
        //字符型拓展
        char a = 'A';
        char b = '刘';
        System.out.println(a);
        System.out.println((int)a);  //强制转换  字符本质是数字,编码 Unicode

        System.out.println(b);
        System.out.println((int)b);  //强制转换
    }
}

tu2

布尔型拓展

public class Demo006 {
    public static void main(String[] args) {
        //布尔型拓展
        boolean flag = true;
        if (flag==true){
            System.out.println("是");
        }
        //两种表示方法一样,代码要精简易读。
        if (flag){    //默认判断为真
            System.out.println("是");
        }
    }
}

tu3

4. 数据类型转换

由于Java是强类型语言,所以进行某些运算时,需要进行类型转换。
类型转换应该遵循由小转大原则。
运算中,不同类型的数据应该先转换为同一类型再进行运算。
需要注意的是:
① 不能对布尔型进行转换
② 不能把对象类型转换为不相干的类型
③ 高转低时采用强制转换
④ 转换时存在内存溢出或者精度问题(浮点型–>整形)
⑤ 操作较大的数时,注意溢出问题
⑥ 数字之间可以用下划线分割,不改变大小

强制类型转换(高–>低)

转换方法:(类型)变量名
如:

public class Demo006 {
   public static void main(String[] args) {
      int a = 100;
      short b = (short) a;  //强制转换
      System.out.println(a);
      System.out.println(b);

      int c = 128;
      byte d = (byte) c;   //内存溢出,byte范围-128~127
      System.out.println(c);
      System.out.println(d);
   }
}

tu4

自动类型转换 (低–>高)

数据类型由低转高时,自动转换。
如:

public class Demo006 {
   public static void main(String[] args) {
      int a = 100;
      double b = a;
      System.out.println(a);
      System.out.println(b);
   }
}

本文部分内容来自参考文章:点击跳转

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值