一旦将一个方法定义在某个类的类体内,如果这个方法使用了static修饰,则这个方法属于这个类,否则这个方法属于这个类的实例,执行方法时必须使用类或对象作为调用者。
同一个类的一个方法调用另外一个方法时,如果被调用方法是普通方法,则默认使用this作为调用者,如果被调用方法是静态方法,则默认使用类作为调用者。
值传递:就是将实际参数值的副本传入方法内,而参数本省不会受到任何影响。
基本类型参数直接复制参数本身。
非基本类型参数复制对这个对象的引用,但是对象只有一个。
形参个数可变:允许为方法指定数量不确定的形参,多个参数值被当做数组传入。
方法递归:一个方法内调用他自身,被称为方法递归。
成员变量和局部变量:根据定义变量的位置的不同。
Private:只有在该类内部访问。
Protected:可以被同一个包中的其他类访问,也可以被不同包中但是是子类的类访问。
Public:不同类不同包都可以访问。
子类不会获得父类的构造器,但是子类构造器里可以调用父类构造器的初始化代码,在子类构造器中调用父类构造器使用super调用来完成。
private class CrimeHolderextendsRecyclerView.
ViewHolder{
public TextView mTitleTextView;
public CrimeHolder(View itemView){
super(itemView);//调用父类的构造方法,创建Holder
mTitleTextView = (TextView)itemView;
}
}
多态:java引用变量有两个类型:一个是编译时类型,一个是运行时类型。编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。如果编译时类型和运行时类型不一致,就可能出现所谓的多态。
Java允许把一个子类对象直接赋值给一个父类引用变量(向上转型upcasting)
例如:Object p = new Person();p只能调用object类里的方法,而不能调用person类里的方法。
强制类型转换:引用类型转换只能在具有继承关系的两个类型之间。如果把一个父类类型转换成一个子类类型,则这个对象必须是子类实例(即编译时类型为父类类型,而运行时的类型是子类类型)
Instanceof运算符能判断是否能够进行强制类型转换,a instanceof String
前一个操作数通常是一个类,用于判断前面的对象是否是后面的类,或是其之类、实现类的实例。如果是返回TRUE,否则返回FALSE。
初始化块总是在构造方法执行之前执行。
几乎所有的操作系统都支持进程的概念,所有运行中的任务通常对应一个进程。内部可能包含多个顺序执行流,每个执行流就是一个线程。
进程的三个特征:1.独立性2.动态性3.并发性
归纳起来就是:操作系统可以同时执行多个任务,每个任务就是进程:进程可以同时执行多个任务,每个任务就是线程。
继承Thread类创建线程类:
1.定义Thread类的子类,并重写该类的run()方法,该run()方法的方法体代表了线程需要完成的任务。因此把run()方法称为线程执行体。
2.创建Thread子类的实例,即创建的线程对象。
3. 调用线程对象的start()方法来启动该线程。
接口:抽象类是从多个类中抽象出来的模板如果将这种抽象进行的更彻底,则可以提炼出一种更加特殊的“抽象类”——接口,接口里不能包含普通方法,所有的方法只能是抽象方法。
接口里可以包含成员变量(只能是静态常量)、方法(只能是抽象实例方法、类方法或默认方法)、内部类(包括内部接口、枚举)定义。
在接口中定义成员变量时系统会自动增加public static final修饰。
接口支持多继承。
接口主要有如下用途:
1.定义变量,也可以用于进行强制类型转换
2.调用接口中定义的常量
3.被其他类实现
接口和抽象类:
1.接口和抽象类都不能被实例化,他们都位于继承树的顶端,用于被其他类继承和实现。
2.接口和抽象类都可以包含抽象方法,实现接口或者继承抽象类的普通子类都必须实现这些抽象方法。
接口与抽象类的不同:不同主要体现在二者的设计目的上,接口作为系统与外界交互的窗口,接口体现的是一种规范。对于接口实现者而言,接口规定了实现者必须向外提供哪些服务(以方法的形式来提供);对于接口调用者而言接口规定了调用者可以调用哪些服务,以及如何调用这些服务。
1.接口里只能包含抽象方法和默认方法,不能作为普通方法提供实现;抽象类则完全可以包含普通方法。
2.接口里不能定义静态方法;抽象类里可以定义静态方法。
3.接口里只能定义静态常量,不能定义普通成员变量;抽象类里则既可以定义普通成员变量,亦可以定义静态常量。
4.接口里不包含构造器;抽象类里可以包含构造器,抽象类的构造器并不是用于创建对象,而是让其子类调用这些构造器来完成属于抽象类的初始化操作。
5.接口里不能包含初始化块;但是抽象类完全可以包含初始化块。
6.一个类最多只能有一个直接父类,包括抽象类;但是一个类可以实现多个接口,通过实现多个接口可以弥补java单继承的不足。
JAVA中字符串的不变性
7.1、String对象创建后则不能被修改,是不可变的,所谓的修改其实是创建了新的对象,所指向的内存空间不同。
8.2、 一旦一个字符串在内存中创建,则这个字符串将不可改变。如果需要一个可以改变的字符串,我们可以使用StringBuffer或者StringBuilder(后面章节中会讲到)。
9.3、 每次new一个字符串就是产生一个新的对象,即便两个字符串的内容相同,使用 ”==” 比较时也为 ”false”,如果只需比较内容是否相同,应使用 ”equals()” 方法(前面条件运算符章节讲过哦~~)
�$