java 变量,数据类型转换,以及运算符的学习

1. 变量的概述

用于存储可变数据的容器。

2. 变量存在的意义

计算机主要用于处理生活中的数据,由于生活中存在大量的可变数据,那么计算机就必须具备存储可变数据的能力。

比如:

 1.时间每一秒都在发生变化,根据不同的时间要有不同的处理方式。

   2.气象站会根据温度发布天气预报信号。

3. 变量的特点

正常情况下牛奶盒装的都是牛奶,而且会根据牛奶的多少去决定要多大的容量的牛奶盒,AB两位同学同时把牛奶盒放进篮子里面,但是需要区分两个牛奶盒是谁的,都需要在牛奶盒上做一个标志。

特点:

1. 必须要有大小

2. 存储一定格式的可变数据

3. 必须要有名字

1. 整型

byte   代表一个字节的大小   8bit  2(8)   -128~127        256

 short  代表两个字节的大小  16bit  2(16)  -2(15)~2(15)-1

int    代表四个字节的大小  32bit  2(32)  -2(31)~2(31)-1

long   代表八个字节的大小  64bit  2(64)  -2(63)~2(63)-1

如果一个数值没有采取特殊的处理,那么该整数默认的类型是int

可以使用数值后面添加L或小写L改变默认的整数类型。

2. 浮点型

 float  代表四个字节的大小  32bit

 double 代表八个字节的大小  64bit

java程序中所有的小数默认的类型是double类型,所以需要使用特殊的符号改变默认的小数类型。

3. 字符型

  char   代表两个字节的大小  16bit  2(16)

  原理:将字符映射为码表中对应的十进制数据加以存储。

4. 布尔型

   boolean  占一个字节。只有truefalse两个值。

java数据类型的转换

  java公有八大基本数据类型  在写代码中常常存在数据转换的情况,比如byte转换为int   int 转换为short  float转换为int

他们之间转换的法则如果靠记忆的话会比较困难,所以一定要明白其原理。

首先要记住 在java中 如果我们写了一个常量数字  它默认是int型  并且 byte short char 这些比int小的数据再运算时 结果也默认为int。

 1 . 小字节的数据类型转换为大字节的数据类型时,可以这样理解, 吧小的直接放在了大的里面,

也叫自动类型转换

自动类型转换(也叫隐式类型转换)

可以将一个数赋值给更大数值范围的变量,例如可以经byte 变量赋值给short变量可以将short变量赋值给int变量可以将int变量赋值给long变量。

Java内部其实做了工作就是自动将数值进行了类型提升,就叫做自动类型转换(也叫隐式类型转换)

byte b = 1; //00000001

short s = b;  //00000000 00000001

int i = s;

long lon = i;

double d = lon; //1.0

  

自动类型转换(也叫隐式类型转换)

要实现自动类型的转换,需要满足两个条件,第一两种类型彼此兼容,第二目标类型取

值范围必须大于源类型。所有的数字类型,包括整形和浮点型彼此都可以进行转换。

2. 如果将大字节的数据转换为小字节的呢?比如 将一个int数据转换为short 

1、 强制类型转换(也叫显式类型转换)

不可以将一个数值赋给范围更小数值范围的变量,除非进行类型转换。

byte b = 100;

b = b + 2;

System.out.println(b);

上述例子发生了什么,发生了类型转换。

b+2 遇到了加法运算,2默认是int类型,byte类型b变量存储的值自动类型提升为

int类型。执行完加法运算后的结果就是int类型,想要将int的类型值放入到byte类型变量b中,无法放入,编译报错。

 

byte b=1;

b=(byte)(b+2);

 

当两种类型彼此不兼容,或者目标类型取值范围小于源类型(目标是byte源是int

无法自动转换,此时就需要进行强制类型转换。

 

强制类型转换需要注意: 

损失精度!!!

int a=128;

byte b=(byte)a;

System.out.println(b);//-128

/*

 * 此时的强转已经造成了数值的不准确

*/

   int

00000000

00000000

00000000

10000000

                                                       

  

                                                                                                                                                                                      10000000

                                                       byte            

上图中,要先明白补码的知识,java中数值都是用补码来表示的,最高位1代表负数 0 代表正数  int类型的128给了byte

使得最高位1变成了符号位 byte就认定它是一个负数,取反加1后 得到的值为 -  128  这就叫精度的损失。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值