Java数据类型
概念
数据类型在数据结构中的定义是一个值的集合以及定义在这个值集上的一组操作
基本数据类型
数值型
整数类型
整数类型默认为int类型.long类型后需要添加L作为标识,如 long a = 19294899L;
类型 | 大小 | 数据范围 |
---|---|---|
byte | 8位 | [-128,127] |
short | 16位 | [-2^15, 2^15-1] |
int | 32位 | [-2^31 , 2^31-1] |
long | 64位 | [-2^63 ,2^63-1] |
浮点类型
浮点数默认为double类型.float类型后需要添加f作为标识,如 float a = 192.241f;
类型 | 大小 | 数据范围 |
---|---|---|
float | 32位 | [-3.4E+38 ,3.4E+38 ] |
double | 64位 | [-1.7E-308,1.7E+308 ] |
字符型
char类型是一个单一的 16 位 Unicode 字符
类型 | 大小 | 数据范围 |
---|---|---|
char | 16位 | [0,2^16-1] |
布尔型
boolean数据类型表示一位的信息
类型 | 大小 | 数据范围 |
---|---|---|
boolean | 1位 | true,false |
ps: 在java中,0,1不能代替false及true.
基本数据类型转换
自动转换
小数据类型转大数据类型【存储空间的大小】
强制转换
- 大数据类型转小数据类型[存储空间大小]
- 相同存储空间,不同类型,表达值范围不一样[例如:char及short均为16位,但是值范围不同]
语法
基本类型定义:
byte a = 100; //定义一个byte类型变量
short b = 100; //定义一个short类型变量
char = 'A'; //定义1个char类型变量,当该变量作为整型或浮点数接收时,表示当前字符对应的ASCII码.
int c = 100; //定义1个整数类型变量
float d = 27.231f; //定义1个float类型变量
double e = 374.834; //定义1个double类型变量
数据类型转换:
数据类型 变量名 = (需要转换的类型) 值;
//float强制转换为int类型
int c = 100; //定义1个整数类型变量
float d = 27.231f; //定义1个float类型变量
c = (int) 27.231f; //float强制转换为int类型
//int 强制转换为short
short b = 100; //定义一个short类型变量
int c = 100; //定义1个整数类型变量
b = (short) 100;int 强制转换为short
//double强制转换为float
double e = 374.834;//定义1个double类型变量
float d ; //定义1个float类型变量
d = (float) 27.231f;//double强制转换为float
注意事项
- short和char,byte和char不能自动互转
- short,byte,char作为2个操作数时,自动转换为int
- 高转低会导致精度丢失,不同类型的强制转换,可能会导致精度的下降.
- 实际开发中,应该要知道被强制转换的数据,是在一个已知的范围;
引用数据类型
类
接口
数组
概念:数组可以理解成在计算机中的多个连续的存储空间,里面可以按顺序存放多个类型相同的数据。
基本语法
-
动态创建
数组变量名 = new 数据类型[数组长度]; 数组变量名[索引] = 值 ;
-
静态创建
1.数据类型 [] 数组变量名 = new 数据类型{值1,值2....}; 2.数据类型 [] 数组变量名 = {值1,值2....}
JVM存储数据分析
基本数据类型
基本数据类型,打印的时具体的值 因为它的值存放在栈中.
引用数据类型
引用数据类型,打印的时候是一个引用地址 ,因为它具体的存放区域存放堆中 ,String类型除外.
数组特点
- 创建以后,长度固定不变
- 只能存同一种类型的多个变量值
- 常见问题:数组索引越界;空指针错误.
数组语法补充
数组名.length //需要变量接收,类型为int
遍历数组
class Work{
/*
遍历数组的两种方式;
for循环
for-each
*/
public static void main(String[] args){
//定义1个数组
int[] arr = {1,7,9,13,11,17,15,19};
//调用方法
for_method(arr);
for_each(arr);
}
//定义1个方法,for循环遍历数组
static void for_method(int[] arr1){
for (int a = 0 ;a <arr1.length ;a++ ){
System.out.println("for遍历:"+arr1[a]);
}
}
//定义1个方法,for_each循环遍历数组
static void for_each(int[] arr1){
for(int a:arr1){
System.out.println("for-each遍历:"+a);
}
}
}
参数传递
-
值传递
基本数据类型,传递的是具体的值.
-
引用传递
引用数据类型传递时引用地址,String除外.