JAVA数据类型
java数据类型分为‘基本数据类型’和‘引用数据类型’。
基本数据类型
- 有8种基本数据类型
- byte
- short
- int
- long
- float
- double
- boolean
- char
ps:其中byte、short、int、long是整形;float、double是浮点型;boolean是布尔型,返回值为true和false;char是字符型。
基本数据类型取值范围
数据类型 位数 取值范围 说明 byte 1 -128~127 数据存储在内存中的最原始形态 short 8 -32768~32767 int 16 -2e31~2e31-1 long 32 -2e63~2e63-1 float 64 略 double 32 略 boolean 64 true/false 用于存储真值/假值 char 16 0-65535 ‘\u0000’~‘\uFFFF’ 用于存储单个字符,以Unicode编码方式 类型转换
分为‘ 隐式类型转换(自动转换类型) ’和‘显示类型转换(强制类型转换)’。- 隐式类型转换
将一种类型的值赋给另一种类型的值,只要满足一下两个条件,就会发生自动转换:
- 两种类型之间相互兼容
- 目标类型取值范围大于源类型
栗子:
byte a=1; short b=a; char b1='A'; int c=b1; long d=c; float e=d; double f=e;
ps:有类型提升的情况下,编译器将自动进行类型转换,否则就要进行强制类型转换。
- 强制类型转换
将一种类型的值赋给另一种类型的值,满足以下条件将会使用到强制类型转换
- 两种类型之间相互兼容
- 目标类型取值范围小于源类型
栗子:
double a=1.5; flaot b=(flaot)a; long c=(long)b; int d=(int)c; char d1=(char)d; short e=(short)d1; byte f=(byte)e;
- 隐式类型转换
数值表达式的转换
- 有double 则结果为duoble
- 有float 结果为float
- 有 long 结果为long
栗子:
byte a=1; short b=a; char b1='A'; int c=b1; long d=c; float e=d; double f=e; int s=a+b+b1+c; long ss=a+b+b1+c+d; float sss=a+b+b1+c+d+e; double ssss=a+b+b1+c+d+e+f;
ps:强制转换可能会导致精度丢失,‘char’可以与整形转换
引用数据类型
在Java中,除了上述基本数据类型的变量以外,其余的全都属于引用数据类型,‘String’比较特殊但也是一个引用类型。
> 引用类型使用的场景与基本数据类型一模一样。
> - 作为属性的数据类型使用
> - 作为方法的返回值数据类型使用
> - 作为方法的形式参数数据类型使用
引用数据类型的赋值
引用类型都是对象,所以赋值都使用new调用构造方法进行赋值;‘String’类可以不使用new,直接赋值。栗子:
Car car = new Car(); String name="王二小";
总结
比较数据类型和引用类型
比较 | 基本数据类型 | 引用数据类型 |
---|---|---|
概念 | 单纯的值 | 对象 |
存储位置 | 栈中 | 栈中存引用,堆中存对象本身 |
赋值方式 | 直接赋值 | 使用new关键字,(String和包装器类除外) |
计算机常识
计算机使用0和1存储数据
用bit来存储0和1
1 byte = 8 bit
1 k = 1024 byte
1 m = 1024k
1 g = 1024 m
进制之间的转换
取值范围
学习感悟
通过对Java数据类型体系的学习,让我又进一步的了解到java的强大。java有两种数据类型:基本数据类型和引用类型,其中基本数据类型又分8种:byte,short,int,long,float,double,boolean,char。每一个基本数据类型都有自己的取值范围,要在合适的场合选择合适的数据类型。数据类型之间也可以互相转换,取值范围小的转换为大的为自动转换,不需要显式说明,取值范围大的转换为小的就需要强制转换了。引用类型就是自己创建的类,其中String比较特殊,可以直接赋值,但是也是属于引用类型。