兼容类型
java八种基本类型(byte、short、int、long 、float、double、char、boolean)中,除了布尔类型(boolean)与其他7中类型不兼容外,其他7种类型都是互相兼容的。-
类型转换
- 顺箭头,范围由小到大,精度由低到高,java帮着自动转换。
注意像byte可以直接转换为long、double等,没必要先把byte转换为short,再转换为int,再转换为long,就是不用沿箭头一步一步来,可以跳着转换的,只要是小范围到大范围,低精度到高精度。 - 逆箭头,需要进行强制类型转换。
例如:double d = 3.2;
float f = (float)d;
因为double不能转换为float,所以要转换必须借助强制转换符(float),要转换成谁,就在小括号内写上谁。
又如:double d = 3.2;
float f = (float)(d * 2.0);//后面括起来
- 顺箭头,范围由小到大,精度由低到高,java帮着自动转换。
-
表达式中的操作数类型自动提升
在表达式中,如果参与运算的操作数(变量、字面量、方法调用的结果、其他子表达式的结果)不属于同一类型,则会发生自动类型提升。
规则如下:- 如果表达式中存在double类型的操作数,结果为double
- 如果表达式中不存在double类型的情况下,存在float类型,结果为float
- 如果表达式中不存在double、float类型的情况下,存在long类型,结果为long
- 如果表达式中不存在double、float、long类型,结果为int
注意:即使参与运算的操作数没有int类型,其结果也是int类型的
例:
byte b1 = 1;
byte b2 = 2;
int result = b1 + b2;
注意:编译过程中,编译器会把那些可以直接得出结果的表达式的值直接编译到字节码中
如:
byte res = 10 + 20;//本语句会被编译器直接编译为
byte res = 30;
-
数组
声明数组:
int[] arr1;//推荐用这种方式
int arr2[];实例化数组对象
arr1 = new int[5];
这个数组中可以包含5个int类型的数据元素,每个元素的初始值为0。
当数组被实例化以后,每个元素都会被赋一个初始值:
整数类型:0
浮点类型:0.0
布尔类型:false
char:'\u0000'
引用类型:null显示数组
import java.util.Arrays;
public class Demo001 {
public static void main(String[] args) {
int[] arr1;//声明一个数组
arr1 =new int[5];//实例化数组
System.out.println(Arrays.toString(arr1));
}
}
在打出Array后,按ALT+/再按回车,会在代码行首出现import java.util.Arrays; ,然后就可以显示数组了
访问数组长度
System.out.println("数组长度是" + arr1.length);
length属性是只读的,不能被再次赋值数组索引
通过数组元素的索引可以访问某个数组中的元素
合法的索引范围是从0~length-1修改数组元素
把第4个元素的值修改为100
arr1[3] = 100;
把倒数第1个元素的值修改为-1024
arr1[arr1.length - 1] = -1024;获取数组元素
获取第4个元素
System.out.println(arr1[3]);
获取倒数第1个元素
System.out.println(arr1[arr1.length - 1]);
数组可在声明的同时进行实例化操作
boolean[] boolArr = new boolean[10];
实例化数组的同时,可以为其各个元素进行赋值
int[] arr4 = new int[] { 1, 2, 3, 4, 5 };
以下形式不可用于方法实际参数的传递
可以使用new int[]{5,4,3....,-5}进行方法实际参数的传递
int[] arr5 = { 5, 4, 3, 2, 1, 0, -1, -2, -3, -4, -5 };二维度数组
二维数组:即数组的数组,规则的二维数据是一张表格
Java中可以声明和使用多维数组,但在开发工作中很少使用到
import java.util.Arrays;
public class Demo001 {
public static void main(String[] args) {
int[][] arr1 = new int[4][3];
arr1[1][1] = 10;
arr1[2][2] = -10;
arr1[3][1] = 1024;
// System.out.println(Arrays.deepToString(arr1));横着排
System.out.println(Arrays.toString(arr1[0]));
System.out.println(Arrays.toString(arr1[1]));
System.out.println(Arrays.toString(arr1[2]));
System.out.println(Arrays.toString(arr1[3]));//竖着排
}
}
二维数组也可以在声明的同时进行元素的初始化
以语句声明并初始化一个二维数组(char[4][4])
char[][] arr2 = {
{'a','b','c','d'},
{'e','f','g','h'},
{'i','j','k','l'},
{'m','n','o','p'}
};
System.out.println(Arrays.toString(arr2[0]));
System.out.println(Arrays.toString(arr2[1]));
System.out.println(Arrays.toString(arr2[2]));
System.out.println(Arrays.toString(arr2[3]));