java基础知识复习(1):不建议参考,个人查缺补漏记录,不够完善、
基本数据类型
byte short int long
8 16 32 64
1 2 4 8
float double
16 32
2 4
char
16
2
boolean
8
1
引用数据类型
类类型 接口类型 数组
引用传递:把对象的地址值传过去,函数接收的原始值的首地址值。
(传递的不是实际的对象是对象的引用,引用对象所作的改变会反映到所有的对象上)
执行方法过程中,形参、实参的内容相同,指向同一块地址值,实际操作的是同一个数据
String是引用类型,参数传递是引用传递,但参数改变,不影响原数据
String是不可变类,参数改变时,指向的地址值发生了改变,但内容依旧是原来的内容 (被final修饰)
包装器类型 是基本数据类型的引用数据类型
进制转换
41=32+8+1=2^5+2^3+2^0
1111 1110 1001
变量的生命周期
一个变量被创建并分配内存空间开始,到这个变量被销毁并清除其占用内存空间的过程。
局部变量不会默认赋值,必须先赋值再使用。
switch 表达式后面的数据类型只支持byte,short,char,int四种整型类型及他们的包装类类型,枚举类型,String 类型
从上述看出,其实switch只支持int类型,其他的类型都是可以自动或提供相应算法来转换为int类型后,使用的switch语句!
while语句 满足循环条件,开始循环
break和continue都是用来控制循环结构的,作用都是停止循环。
break:完全终结循环
continue:跳出本次循环,进入下一次循环
数组会对每一个值默认初始化
数组的长度一旦确定之后便不能调整,我们可以通过复制数组的内容来改变数组的长度。System.arraycopy方法
arraycopy(Object src,int srcPos,Object dest,int DestPos,int length);
原数组,原数组开始位置,目标数组,目标数组开始位置,复制长度
java的四个基础特点 抽象 封装 继承 多态
封装:将类中的数据隐藏起来,主要属性的访问权限进行控制
原则:将属性隐藏起来,通过公共方法访问私有属性。
同类 同包 不同包的子类 不同包的非子类
private .
default . .
protected . . .
public . . . .
public>protected>defalut>private
方法的封装:将类中方法的具体实现隐藏 为了提高代码的重用
抽象
一个类中没有包含足够的信息来描述一个具体的对象,抽象类
抽象类的特点:
1。不能被实例化
2。抽象类可以不含有抽象方法,可以含有一般方法。含有抽象方法的类一定是抽象类。
3。抽象方法只有声明,没有方法体。
4,继承抽象类的非抽象子类必须实现抽象类中的所有抽象方法。
5。抽象类中构造方法和类方法(static修饰的方法)不能被声明成抽象方法。
接口和抽象类的区别:
接口侧重于方法 抽象类侧重于属性
接口中只有抽象方法 或者defalut修饰的方法 抽象类中可以有普通方法
抽象类是单继承 接口是多实现
抽象类有构造器,接口无构造器
接口中可以 成员变量:public static final 类型 必须被显式初始化
成员方法:没有方法体 public abstract
不能有任何形式的代码块
继承:子类继承父类的特征和行为
父子类同包 public potected default 可以继承
不同包 默认修饰符不能被继承
构造器不能被继承
重写
父子类,方法名 参数列表完全相同 权限不能被缩小 异常不能被放大
静态方法不能被重写
a. 父类的抽象方法可以被子类覆盖为非抽象方法: 子类实现父类抽象方法;
b. 父类的抽象方法可以被子类覆盖为抽象方法: 重新声明父类的抽象方法;
重载
同一个类中,方法名相同 参数列表不同,不讨论返回值的多个方法,叫重载。
多态
同一个行为具有不同的表现形式 继承 重写 父类的引用指向子类的对象
调用的是子类的方法
使用多态的对象调用方法时:
编译: 看父类中是否有这个方法/接口中是否有这个方法
运行: 执行具体实现类中的方法
static
类加载时 先静态代码块 非静态代码块 再构造器
static变量存在方法区,实例变量存在堆区
【静态代码块用来给静态变量赋初始值】。
public class B {
public static B t1 = new B();
public static B t2 = new B();
{System.out.println("构造块");}
static {System.out.println("静态块");}
public static void main(String[] args){
B t = new B();
}
}
静态域首先加载 :
静态变量,静态方法,静态块。
t1 t2 再静态块:
构造块 构造块 静态块 构造块
本类的静态方法可以用类名.方法名 方法名调用。(本类中为什么可以直接方法名调用静态方法?因为静态方法是程序启动时直接放在内存中)
this super
this();//代表无参构造方法
1。this.方法名 调用本类中其他方法
2。this.属性名 调用本类中属性名
3。this(参数列表) 构造器 (构造方法之间可以互相调用,普通方法不可以调用构造方法)
4。隐藏式调用 直接方法名调用
this()和super()为构造方法,作用是在JVM堆中构建出一个对象。因此避免多次创建对象,同一个方法内只能调用一次this()或super()。同时为了避免操作对象时对象还未构建成功,需要this()和super()的调用在第一行实现【以此来创建对象】,防止异常。