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比较特殊,可以直接赋值,但是也是属于引用类型。