1.Java数据类型有哪几种?
整数型 byte short int long\
浮点型 float double
字符型 char
布尔型 boolean
其中他们的所占空间大小等情况如下
每个基本类型都有自己的包装类型
Byte,Short,Integer,Long,Float,Double,Character,Boolean
2.基本类型和包装类型
包装类型可以用于 泛型,方法参数,对象属性,基本类型用于局部变量,常量
其中基本类型的局部变量存放在栈的局部变量表中,基本类型的成员变量放在堆中,包装类型放在堆中
包装类型所占空间大于基本类型,基本类型有自己的默认值,包装类型默认值是 null
基本数据类型 == 比较的是值, 包装类型 == 比较的是地址,所以包装类型用equal()比较
3.包装类型的缓存机制
整数包装类型Byte,Short,Integer,Long 缓存范围是 【-128,127】
字符包装类型Character 缓存范围是【0,127】
布尔包装类型直接返回 true 或者 false
4.自动装箱拆箱
装箱:基本类型用对应的引用类型包装起来
拆箱:包装类型转换成基本类型
Integer i = 10 ; //装箱
int j = i; //拆箱
//装箱
//Integer i = 10 ;实际上是调用了 Integer i = Integer.valueOf(10);
//拆箱
//int j = i ;实际上是 int j = i.intValue();
5.浮点数计算以及超过long整型数据
正常使用浮点数计算会导致精度丢失,涉及浮点数运算使用 BigDecimal
超过long整型的数据,使用 BigInteger ,但是会降低运算效率
6.成员变量和局部变量
成员变量属于类,局部变量是在方法或者代码块中定义又或者是方法的参数
局部变量不代码能使用static修饰
成员变量存储在堆,局部变量存储在栈
成员变量是对象的一部分,跟随对象的创建而存在,对象的销毁而销毁,局部变量随着方法调用而存在,方法的结束而销毁
成员变量会被赋予默认值,局部变量不会
7.静态变量
static 修饰的变量它不属于对象,而是属于类,随着类的加载而加载,且只加载一次,并且同一个类的多个对象共享同一个静态变量
8.方法
方法的类型
无参无返回值
有参无返回值
无参有返回值
有参有返回值
9.静态方法
静态方法不能调用非静态成员,因为静态方法属于类,类加载的时候就是分配内存,非静态成员是实例对象的,需要对象先实例化才存在,就会导致 当静态方法存在的时候 非静态成员还不存在
10.重载和重写
重载:方法名相同,但是接收参数不同(可以是参数个数不同,参数类型不同,顺序不同)
补充 返回值和修饰符可以不同
重写:子类继承父类相同方法,但是需要有和父类不一样的操作