JAVA学习进度之04数据类型详解

1、char

char c = 'a'; //a

char c = '国'; //国

char c = 'ab'; //报错,ab是字符串

char c = "a"; //报错,类型不兼容,使用Sring

转义字符  \

char c1 = 'n'; //n

char c2 = '\n'; //     \n换行符

char x1 = 't';

char x2 = '\t'; //  制表符Tab键,制表符和空格不一样,ASCII不一样


2、整数型

数据类型        占用空间大小        默认值               取值范围

byte                      1                        0                     [128-127]

short                     2                        0                     [-32768-32767]

int                         4                        0                     [-214743684-2147483647]

long                      8                        0L

整数型字面值三种表示方式:

十进制

八进制:0开始

十六进制:0x开始

int a = 10; //10

int b = 010; //8

int c = 0x10; //16

//java 默认是int类型,456是int类型,4个字节,x声明的啊long,8个字节,int的456转换为long的x,存在类型转换

//int是小容量,long是大容量,小容量转大容量是自动类型转换

long x = 456;

//2147483648默认是int,但是超出了int的范围了。所以还没赋值就出错了

long y = 2147483648; //报错:过大的整数

//解决这个问题,后面加L,自身就是long类型,以下数据没有超过long类型

long y = 2147483648L;

// 大容量转小容量需要强制类型转换

long z = 100L;

int w = z;  //编译错误

// 加上强制类型转换,编译通过,可能会运行阶段损失精度

//因此强制类型转换谨慎使用

//强转原理:

        //原始数据:00000000 00000000  00000000  00000000 00000000 00000000 00000000  011100100

        //转后数据:00000000 00000000 00000000  011100100

        //将左边的二进制去掉

long z = 100L;

int w = (int) z;  //编译成功

但是:byte是特别的,只要整数型字面值没有超过byte的范围

byte b = 50;//成功

byte c=127;//成功

byte c=128;//报错,超过了byte的范围

3、浮点型

float: 单精度,4个字节

double:双精度,8个字节

JAVA中所有的浮点型字面值都默认double,要想是当作float,得在字面值后加F/f

4、布尔型

boolean:  0/1   1个字节

关于数据类型之间是转换

小容量向大容量转换是自动类型转换,容量从小到大:byte<short<int<long<float<double

                                                                                              <char

任何浮点型不管占用多少字节,都比整数型容量大

char和short可表示的种类数量相同,但是char可以取更大的正整数。

char c = 97;

大容量转小容量是需要强制转换

当整数字面值没有超出byte,short,char取值范围,可以直接赋值byte,short,char类型的变量。

byte,short,char混合运算时候,各自先转成int型

多种数据类型缓和运算,先转换成容量最大的那个再运算

byte a = 1000;//错误超出byte的取值范围

byte b = 20;//可以

iny c=1000;

long d=c;//错误,精度丢失,大精度到小精度

long g=10;

int h = g / 3;//错误,g是long, g/3是long类型,不能赋给int

byte b  = 3;//可以

int i = 10;

byte b=10/3;//编译不通过,因为编译器只检查语法,不会运算i/3

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值