1、Java基本数据类型
java四类八种基本数据类型
第一类:整型 byte short int long
第二类:浮点型 float double
第三类:逻辑型 boolean(它只有两个值可取true false)
第四类:字符型 char
字节:
boolean 布尔型 1/8
byte 字节类型 1
char 字符型 2 一个字符能存储一个中文汉字
short 短整型 2
int 整数类型 4
float 浮点类型(单精度) 4
long 长整形 8
double 双精度类型(双精度) 8
2、面向对象-类、接口、抽象类
面向对象的三个特征:封装(Encapsulation)、继承(Inheritance)、多态(Polymorphism)。
·类:封装了data和some behavior that the program does。对象是类new出来的。
e.g.
//Student 是类,a是对象
Student a = new Student();
·抽象类:当多个类中出现相同功能,但是功能主体不同,这是可以进行向上抽取的。这时只抽取功能定义,而不抽取功能主体。
·接口:
·定义:set of methods;set of classes that have that set of methods
·特点:
·接口的出现降低耦合性。
·接口可以由类多实现。这也是对多继承不支持的转换形式。java支持多实现。
·类与接口之间是“实现关系”,而且类可以继承一个类的同时实现多个接口。
·接口之间可以有继承关系,而且可以多继承,因为接口没有方法体。
·说明:
(1)接口不可以创建对象的,因为有抽象方法。需要被子类实现(implements),子类对接口中的抽象方法全都覆盖后,子类才可以进行实例化。
否则子类是一个抽象类。
(2)实现多个接口时,接口中不可以有返回不同类型的同名抽象函数。这样子类实现时将不能复写。
e.g.
public abstract class BaseVideoListAdapter extends RecyclerView.Adapter<BaseVideoListAdapter.BaseViewHolder> implements View.OnClickListener{
/**
抽象类
**/
//...do something...
private OnItemClickListener listener ;
//定义接口1
public interface OnItemClickListener{
void onItemClick(VideoInfo info) ;
}
@Override
public void onClick(View v) {
listener.onItemClick((VideoInfo)v.getTag()) ;
}
//...do something...
e.g.
public class HistoryRecordAdapter extends BaseVideoListAdapter {
/**
使用抽象类
**/
}
e.g.
public class BaseVideolistFragment extends BaseFragment {
IVideoitemClickListener listener ;
//定义接口2
interface IVideoitemClickListener{
void OnVideoitemClick(VideoInfo info) ;
}
public void setVideoitemClickListener(IVideoitemClickListener listener) {
this.listener = listener ;
}
}
e.g.
vipPrivilegeVideoAdapter.setOnItemClickListener(new BaseVideoListAdapter.OnItemClickListener() {
//使用接口1
@Override
public void onItemClick(VideoInfo info) {
if (LoginBean.getInstance().isVipTag()) {
if (listener != null) {
//使用接口2
listener.OnVideoitemClick(info);
}
} else {
Toast toast = Toast.makeText(getActivity(), "no vip,no movie", Toast.LENGTH_SHORT);
toast.show();
}
}
});
3、this关键字、final关键字、static关键字
this:
定义 :指向当前类的属性和方法。
特点 :
·在类定义中,如果“局部变量”和“成员变量”同名,则在将“局部变量”赋给“成员变量”时,可以使用this关键字,例如使用方式可以使:this.name = name 。
·this代表本类的对象,代表它所在函数所属的对象的引用。因为this持有本类对象的引用,所以this单独使用代表当前对象。
说明 :this也可以使用在构造函数中调用其他的构造函数。在构造函数中,用this调用其他构造函数,必须写在第一行,因为初始化要先执行。
final:
定义:控制你的成员、方法或者是一个类是否可被覆写或继承等功能。
特点:
·类中定义变量时,这个变量一旦被初始化便不可改变。对基本类型来说是其值不可变,而对于对象变量来说其引用不可再变。
·final方法是在派生类中不能被覆盖的方法。final类是不能被继承的类。
说明:其初始化可以在两个地方,一是其定义处,也就是说在final变量定义时直接给其赋值,二是在构造函数中。这两个地方只能选其一,要么在定义时给值,
要么在构造函数中给值,不能同时既在定义时给了值,又在构造函数中给另外的值。
static:
定义:用static修饰的方法称为静态方法或称为类方法,它不需要实例化便可以被访问,也就是可以用类名的方式来访问(对于变量也是一样)。
特点:
仅仅用static修饰的一个代码块是静态代码块。静态代码块不包含在任何方法体中,当类被载入时,该代码块被执行,而且只被执行一次。静态代码块经
常用来进行类属性的初始化。不管生成了多少个类的对象,静态代码块只被执行一次。
说明:静态方法只能处理静态成员变量.也就是static方法处理的static成员变量.而不能直接操作和处理属于某个对象的成员变量(非静态方法/变量),要想处理
非静态变量,就要先创建一个对象,然后通过该对象去访问非静态成员。
4、方法的参数传递机制
·向一个方法传递参数类型基本数据类型时
JAVA中基本数据类型是在系统的栈中创建的,(基本数据类型包括byte,int,short,char,float,double以及boolean),传递的只是该数据内容的一个副本,因此无论方法针对该副本值做怎样的改变,都不会影响到被传入的数据本身。
·向一个方法中传递参数类型是引用类型使
那么传过来的就是这个引用参数的副本,这个副本存放的是参数的地址。如果在函数中没有改变这个副本的地址,而是改变了地址中的 值,那么在函数内的改变会影响到传入的参数。如果在函数中改变了副本的地址,如new一个,那么副本就指向了一个新的地址,此时传入的参数还是指向原来的 地址,所以不会改变参数的值。
5、重写(override)与重载(overload)
·重写(override)
定义:表示子类中的方法与父类中的某个方法的名称和参数完全相同,且返回值必须相同。
特点:
·一般是用于子类在继承父类时,重写(重新实现)父类中的方法。
说明:
·重写的方法所抛出的异常必须和被重写方法的所抛出的异常一致,或者是其子类
·静态方法不能被重写为非静态的方法(会编译出错)
·重写方法的访问修饰符一定要大于被重写方法的访问修饰符(public>protected>default>private)
·重载(overload)
定义:表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。
特点:
·一般是用于在一个类内实现若干重载的方法,这些方法的名称相同而参数形式不同。
说明:
·不能通过访问权限、返回类型、抛出的异常进行重载
·方法的异常类型和数目不会对重载造成影响
6、Java 异常体系详解(checked exception 与 unchecked exception)
Throwable类是所有异常的始祖,它有两个直接子类Error / Exception:Error仅在Java虚拟机中发生动态连接失败或其它的定位失败的时候抛出一个Error对象。一般程序不用捕捉或抛出Error对象。
·Unchecked Exception:
a. 指的是程序的瑕疵或逻辑错误,并且在运行时无法恢复。
b. 包括Error与RuntimeException及其子类,如:OutOfMemoryError, UndeclaredThrowableException, IllegalArgumentException, IllegalMonitorStateException,
NullPointerException, IllegalStateException, IndexOutOfBoundsException等。
c. 语法上不需要声明抛出异常。
·Checked Exception:
a. 代表程序不能直接控制的无效外界情况(如用户输入,数据库问题,网络异常,文件丢失等)
b. 除了Error和RuntimeException及其子类之外,如:ClassNotFoundException, NamingException, ServletException, SQLException, IOException等。
c. 需要try catch处理或throws声明抛出异常。