1.1基本类型只有八个:
整型- byte short int long
浮点型- float double
字符型- char
布尔型- boolean
1.2其中数字常量会被默认为int类型;byte,short和char类型的变量在赋值的时候若等号右边未超过范围则会自动进行强制类型转化
例:char c = 65; 常量65会被默认为int类型,在赋值的时候编译器实际指令为:char c = (char)65;
编译器还有另外一个特征是,会把常量运算结果直接计算出来
例:byte x = 3;
byte y = 5;
byte z = x + y; //这句话编译会报错,因为byte+byte的范围是越界的;
byte t = 3 + 5; //这句话不会报错,编译的时候先计算,代码等价于:byte t = (byte)8;
1.3除了基本类型之外还有:【后续需要修改措辞】
字符串、数组、类、接口、Lambda
所以数组的定义 int[] a = new int[10];这种用法可以理解为基本数据类型的拓展,而ArrayList a = new ArrayList();理解为数组这个对象的定义;
int对应的复杂类型是Integer,也需要按照类的规则调用。
//笔记:
/*
* int[] nums = null 和 nums = new int[0] 是不等价的
* 输出数组的方式:System.out.println(Arrays.toString(nums));
* CharSequence subSequence(int beginIndex, int endIndex) 返回一个新的字符序列,它是此序列的一个子序列。(字符序列不是字符串)
* StringBuffer在数据内容增大时,会为StringBuffer对象追加申请内存,申请数量为当前内存量的一倍,即StringBuffer总数为原内存量的2倍。所以需要频繁追加的还是用char[]吧
* 使用if的时候,尽量用else,而非直接return另开一个if
* 子类必须使用super写构造函数,不写的话可以编译过去,默认继承的无参数的父类构造函数,但运行时会出问题。
* public static等修饰字还没搞明白
*/