您的位置:首页 > 编程语言 > Java开发

Java(01)-基本数据类型,面对对象,关键字,重写与重载,异常体系

2015-08-24 18:48 603 查看

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:

    定义:控制你的成员、方法或者是一个类是否可被覆写或继承等功能。

    特点:

             ·类中定义变量时,这个变量一旦被初始化便不可改变。对基本类型来说是其值不可变,而对于对象变量来说其引
4000
用不可再变。

             ·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声明抛出异常。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: