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

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出来的。
 

      //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声明抛出异常。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值