目录
一、隐式类型转换
只建立在两种类型兼容的情况下,如int与long兼容,但int与boolean不兼容
两个变量之间遵循小类型会自动提升为大类型,运算结果是大类型。
public class Test{
public static void main(String args){
int a = 10; //byte对比int为小类型
long b = a; //隐式转换,a提升为int型赋值给b
System.out.println(b);
}
}
将常量赋值给变量则不一定需要小转大,有可能发生大转小
public class Test{
public static void main(String args){
byte a = 10; //系统默认整数常量为int型,此时会发生大转小,int转byte型
byte a = (byte)10; //与此相同
System.out.println(a);
}
}
二、数组
动态初始化
需给定长度, 系统会自动默认初始化值
格式一:
数据类型[] 数组名 = new 数据类型[长度];int[] arr = new int[10]; //推荐使用
格式二:
数据类型 数组名[] = new 数据类型[长度];
int arr[] = new int[10];
静态初始化
给定初始化值, 系统自动计算长度.
格式一:
数据类型[] 数组名 = new 数据类型[]{元素1, 元素2, 元素3,.....,元素n};int[] arr = new int[]{10,20,30,40};
格式二:
数据类型[] 数组名 = {元素1, 元素2, 元素3,.....,元素n};int arr = {10,20,30,40};
三、JVM的内存划分
栈:存放基本类型的变量,以及对象的引用值和函数主体(后进先出)
堆: 存储所有对象和数组,堆中的内容会在不定时被GC回收。
方法区:内有常量池、静态区、方法区、代码区(后缀名为.class的文件)
本地方法区
寄存器:CPU相关
四、方法重载
方法重载:一个类中出现方法名相同, 参数列表不同的两个或以上的方法
1.方法重载与方法的返回值的数据类型无关
2.参数的个数不同
3.对应参数的数据类型不同
public class Test{
public static void main(String args){
get(10);
get("abc");
get(10,"abc");
}
public static void get(String b){
System.out.println(b);
}
public static void get(int a){
System.out.println(a);
}
public static void get(int a,String b){
System.out.println(a);
System.out.println(b);
}
}