Java基础常量变量与类型转换

一.目标

1.常量的使用
2.变量的使用
3.类型转换

二.知识点

1.常量

概述:在代码的运行过程中,值不会发生改变的数据
分类:
a.整数类型:所有的整数
b.小数常量:所有带小数点的  2.0 
c.字符常量:带单引号的,单引号中有且只有一个内容
d.字符串常量:带双引号的
e.布尔常量: true false 当做条件判断
f.空常量:null 代表不存在,不能直接使用

2.变量

概述:在代码运行的过程中,值会随着不同的情况而随时发生改变的数据

| 数据类型     | 关键字         | 内存占用 | 取值范围                                                     |
| :----------- | :------------- | :------- | :----------------------------------------------------------- |
| 字节型       | byte           | 1个字节  | -128 至 127  定义byte变量时超出范围,废了                     |
| 短整型       | short          | 2个字节  | -32768 至 32767                                              |
| 整型         | int(默认)    | 4个字节  | -2^31^ 至 2^31^-1  正负21个亿<br>-2147483648——2147483647     |
| 长整型       | long           | 8个字节  | -2^63^ 至 2^63^-1   19位数字<br>-9223372036854775808到9223372036854775807 |
| 单精度浮点数 | float          | 4个字节  | 1.4013E-45 至 3.4028E+38                                     |
| 双精度浮点数 | double(默认) | 8个字节  | 4.9E-324 至 1.7977E+308                                      |
| 字符型       | char           | 2个字节  | 0 至 2^16^-1                                                 |
| 布尔类型     | boolean        | 1个字节  | true,false(可以做判断条件使用)                              |
分类:
基本数据类型:4类8种
整型:byte short int long
浮点型:float double
字符型:char
布尔型:boolean
引用数据类型:类 枚举 接口 数组 注解

注意点:
a.整数默认类型为int
b.小数默认类型为double
c.字符串不属于基本数据类型,属于引用数据类型,String是一个类,只不过用的时候定义可以按照基本数据类型的格式定义

3.数据类型转换

1.什么时候发生:
a.当等号左右两边不一致的时候
b.小的数据类型与大的数据类型做运算

2.分类
自动类型转换:
a.将取值范围小的数据类型赋值给取值范围大的数据类型   --> 小自动转大
b.取值范围小的数据类型和取值范围大的数据类型数据做运算  -->小自动转大

强制类型转换:
当取值范围大的数据类型数据赋值给取值范围小的数据类型 -->需要强转  比如 把long赋值给int 

3.基本数据类型取值范围大小排序
byte,short,char - > int - > long - > float - >double
强转的注意事项:
1.不要随意写成强转的格式,因为会有`精度损失`,`数据溢出`现象
2.byte,short定义的时候如果等号右边是整数常量,如果不超出byte和short的范围,不需要我们自己强转,jvm自动转型  ; byte,short如果等号右边有变量参与,byte和short自动提升为int,然后结果再次赋值给byte或者short的变量,需要我们自己手动强转
3.char类型数据如果参与运算,会自动提升为int型,如果char类型的字符提升为int型会去ASCII码表(美国标准交换代码)范围内去查询字符对应的int值,如果在ASCII码表范围内没有对应的int值,回去unicode码表(万国码)中找 
举例:
//精度损失
        int i = (int)2.9;
        System.out.println(i);
        
        /*
          数据溢出
          int型占内存4个字节,4个字节变成二进制是32位
          
          100个亿: 10 0101 0100 0000 1011 1110 0100 0000 0000 -> 34位二进制
          
          100个亿的二进制位比int型的二进制位多出来2位,此时干掉最前面的2位
          
          101 0100 0000 1011 1110 0100 0000 0000
          
          101 0100 0000 1011 1110 0100 0000 0000->1410065408
        */
有可能的面试题:
1.8>>>32位 -> 相当于没有移动还是8  
2.8>>>34位 -> 相当于往右移动2位
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容