Java数据类型,变量与类型转换(入门级)

在Java中,C语言中的常量被称为字面常量,在这里就简单的提一下
字面常量的分类
字符串常量,字符型常量,整形常量,浮点型常量,布尔型常量,空常量

数据类型

四类

在Java中,数据类型分为四类
整形,浮点型,字符型,布尔型

八种

八种就是是四类的细分
字节型(byte)
短整型(short),整形(int),长整型(long)
单精度浮点型(float),双精度浮点型(double)
字符型(char)
布尔型(boolean)

这里值得注意的是,在Java中,字符型(char)所占的内存是2字节
字节型的(byte)所占的内存是1字节
在Java虚拟机中,并没有明确规定布尔型(Boolean)所占的字节,也没有专门处理布尔型的字节码指令

变量

变量概念

经常改变内容

相信这些变量的能表示的范围不需要多讲,在网上搜搜就知道了
只需要注意的是,在Java中没有什么“无符号整数”这种说法,最高位就是符号位,然后能表示的范围就除去符号位就可以了

整型变量

1. 字节型变量

byte + byte
看下面的代码

public class Text {
    public static void main(String[] args) {
        byte a = 10;
        byte b = 10;
        // byte ret = a + b;
        System.out.println(a + b);
    }
}

编译可以通过运行的结果是20,但是稍微一改就不行了

public class Text {
    public static void main(String[] args) {
        byte a = 10;
        byte b = 10;
        byte ret = a + b;
        System.out.println(ret);
    }
}

在这里插入图片描述
明明是字节型与字节型相加,为什么会说“从int转换到byte可能会损失”?
在接下来的类型转换中会提到。

2. 短整型变量

3. 整型变量

4. 长整型变量

浮点型变量

1. 单精度浮点型

2. 双精度浮点型

字符型变量

布尔型变量

类型转换

自动类型转换(隐式)

简单地说就是,代码不需要任何处理,在代码编译时,编译器会自动进行处理
特点:数据范围小的转为数据范围大的就会自动进行。
例如

public class Text731 {
    public static void main(String[] args){
        int a = 10;
        long b = 10L;
        long ret = a + b;
        System.out.println(ret);
    }
}

两个类型不一样的相加,并不会出现编译错误,Java会自动提升a为long型

强制类型转换(显式)

要经过一定的格式处理才能完成
特点:数据范围大的转为数据范围小的
同样的例子

public class Text731 {
    public static void main(String[] args){
        int a = 10;
        long b = 10L;
        int ret = (int)(a + b);
        System.out.println(ret);
    }
}

a与b相加储存到类型为int的变量ret中,只能将a + b的值强制转换为int才可以通过编译

类型提升

byte与byte的运算

public class Text {
    public static void main(String[] args) {
        byte a = 10;
        byte b = 10;
        byte ret = a + b;
        System.out.println(ret);
    }
}

上面的代码新手乍一看是没毛病,但是就是编译不通过

计算机的CPU通常是按照四个字节为单位从内存中读取数据,为了硬件上实现方便,注入byte和short这种地域4个字节的类型,CPU会提升成int,再参与计算

所以说,在进行a + b这个操作是,a和b其实已经是int型了,所以就会出现编译不通过的情况

public class Text731 {
    public static void main(String[] args){
        short a = 10;
        short b = 10;
        short ret = a + b;
        System.out.println(ret);
    }
}

同样的short类型也是会出现同样的错误
在这里插入图片描述
总的来说,Java确实比C语言安全系数 要高很多

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值