美文网首页
Java知识点整理(1)- 基础

Java知识点整理(1)- 基础

作者: 神坛下的我 | 来源:发表于2018-08-22 09:37 被阅读0次

    封装的使用细节

    对于类的属性一般使用private权限,给属性提供相应的get和set方法,然后再实例化对象时调用这些方法。(作用:可以把一些控制语句放在set方法中,即内部结构外部无法得知,只知道可以调用就可以了。)比如说

    public void setAge(int age){
      if(age>=1&&age<=130){
        this.age=age;
      }else{
        System.out.println("不正确");
      }
    }
    

    多态

    多态是方法的多态,不是属性的多态。
    多态存在要有三个条件:继承,方法重写,父类引用指向子类引用。

    对象的转型

    父类引用指向子类对象,称为向上转型(自动)如:Animal a = new Dog();
    向上转型后的父类引用变量只能调用它编译类型的方法,不能调用它运行类型的方法。不然要进行强制转换,称为向下转型,如:Dog d = (Dog)a;
    不同继承层次转换会ClassCastException

    final关键字

    修饰变量:被修饰的变量不可改变,一旦赋值不可以再赋。
    修饰方法:该方法不可以被子类重写,但是可以被重载!
    修饰:类不能被继承,如Math,String。

    数组的使用

    数组是相同类型数据的有序集合。
    数组的三个基本特点:长度确定;其元素必须类型相同;数据类型可以包括基本类型和引用类型
    构造一个数组,必须指定长度
    数组元素有默认值
    数组下标越界异常ArrayIndexOutOfBoundsException
    二维数组可以看成以数组为元素的数组。
    多维数组的声明和初始化应该按照高维到低维顺序进行。
    多维数组的元素访问多用嵌套循环。
    使用二分法查找元素必须先对数组排序。
    System类中arraycopy(Object src,int srcpos,Object dest,int destpos,int length)方法,该方法可以将src数组里的元素值赋给dest数组的元素,其中srcpos指定从src数组的第几个元素开始赋值,length参数指定将src数组的多少个元素赋给dest数组的元素。
    Arrays.toString(array):打印数组。
    Arrays.sort():排序。
    Arrays.binarySearch(array,ele):返回数组中ele元素的索引。
    Arrays.fill(a,2,4,100):将a数组2到4索引的值填充为100。

    数组中的初始化方式

    静态初始化:int [] a = {1,2,3};
    默认初始化:int[] a = new int[3];此时默认值为0。
    动态初始化:通过下标挨个赋值。

    数组的遍历

    for循环;
    for each循环(增强for循环):用于读取数组或集合中的元素,不能修改元素的值。

    多态分析

    构造器的第一句是隐式的super();它会调用父类的构造器。
    this指本身创建的对象。
    父类中的方法中调用的方法被子类重写,会引用子类对象的方法。

    抽象类

    抽象类为所有子类提供了一个通用模版,子类在模版基础上扩展,可以避免子类设计的随意性,使子类之间更加通用。
    有抽象方法的类只能定义为抽象类。
    抽象类不能实例化。
    抽象类可以定义属性,方法,构造方法,但是构造方法不能用来new实例,只能用来被子类调用。
    抽象类只能用来继承。
    抽象方法必须被子类实现。
    通过抽象类可以达到设计与实现分离

    接口

    接口里只有常量和抽象方法。
    接口中常量默认修饰public static final(相当于类变量的使用)。
    "接口是最抽象的”,“单继承,多接口”。
    方法默认修饰public abstract
    接口中不能创建实例,但是可用于声明引用变量类型。
    MyInterface m = new MyClass();此时m不能调用MyClass中的变量,如有必要,须强制转换,同时m只能调用MyInterface中的方法。

    回调的实现

    方法接收接口类型参数,再实现接口(可以实现不同的接口进行回调)。

    内部类

    作用:提供了更好的封装,只能让外部类直接访问,不允许同一个包中的其他类访问。
    内部类看作是外部类的成员,内部类可访问外部类私有属性,而外部类不能访问内部类的局部属性。
    通常在只为所在外部类提供服务的情况下优先使用。
    分为成员内部类(静态内部类和非静态内部类),匿名内部类局部内部类(定义在方法内,用得少)。
    匿名内部类:new 父类构造器(实参列表) 实现接口 {类体;}适合那种只需要使用一次的类,如键盘监听操作。
    非静态内部类对象单独属于外部类的某个对象。
    Outer.Inner o = new Outer().new Inner();
    当一个静态内部类对象存在,并不一定存在对应的外部类对象。
    Outer.StaticInner os = new Outer.StaticInner();

    String类

    不可变字符序列!
    一些常用的方法:
    int length():返回字符串的长度。
    boolean isEmpty():当length为0返回true。
    char charAt(int index):返回字符串指定索引处的char值(从0开始)。
    boolean equals(Object o):比较字符串与指定对象。
    boolean equalsIgnoreCase(String s):忽略大小写比较。
    int compareTo(String s):返回0,大于0的值,小于0的值。比较基于字符串中各个字符的Unicode值。
    boolean startWith(String prefix):字符串是否以指定前缀开始。
    boolean endWith(String suffix):字符串是否以指定后缀结束。
    int hashCode():返回字符串的哈希值。
    int indexOf(int i):指定字符在字符串中第一次出现的索引。
    String substring(int beginIndex):返回一个子字符串从指定索引处的字符开始,直到此字符串末尾。
    String concat(String s):将指定字符串连接到此字符串的结尾:"she".concat("is").concat("a girl.");<-方法链.
    String replace(char old,char new):返回一个新的字符串,其中new替换掉出现的所有old。
    boolean matcher(String regex):字符串是否匹配给定的正则。
    String[] split(String regex):根据给定正则拆分字符串。
    String toLowerCase():都转换为小写。
    String toUpperCase():都转换为大写。
    String trim():返回字符串的副本,忽略前后空白。
    String toString():返回字符串本身。
    char [] toCharArray():转换为一个新的字符数组。
    String valueOf(Object o):返回Object参数的字符串表示形式(static)。

    StringBuffer和StringBuilder的使用

    可变字符序列!二者区别在于StringBuilder线程不安全,但效率相对较高

    char charAt(int index);
    StringBuilder delete(int start,int end);
    StringBuilder insert(int offset,String str);
    int indexOf(String str);
    int length();
    StringBuilder replace(int start,int end,String str);
    StringBuilder reverse();
    String substring(int start,int end);
    String toString();
    

    包装类Wrapper

    将基本类型数据转换成对象。
    char->Character int->Integer byte short long boolean float double.
    String->Integer:parseInt(String s);
    Integer->int:intValue();
    int->String:String str = 123+"";
    基本数据类型和包装类之间会自动转换,称之为自动装箱和自动拆箱
    [-128,127]之间的数值,会按照基本数据类型处理(提高效率)。

    Date类

    时间也是数字:从标准纪元1970-1-1 00:00:00开始到某个时刻的毫秒数(long)。
    System.currentTimeMills():当前时刻的毫秒数(long)。
    getTime():得到对象表示的时间。
    完成字符串和时间对象的转化:
    时间->字符串
    DateFormat df = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");
    Date d = new Date(51111116222222222L);
    String str = df.format(d);
    字符串->时间
    String s = "2018-8-22";
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd");<--格式一致!
    Date d = df.parse(s);

    Calendar和GregorianCalendar

    提供了大多数国家/地区使用的标准日历系统。
    其中一月是0,十二月是11,周日是1,周六是7.
    Calendar c = new GregorianCalendar();c.set(2018,7,22,9,38,33); <--7指八月!Date d = c.getTime();
    Calendar还可用于计算...

    file类

    File类:文件和目录路径名的抽象表现形式。
    通过file对象可以访问文件的属性:boolean canRead();boolean canWrite();boolean exists();boolean isDirectory();boolean isFile();boolean ishidden();long lastModified();long length();String getName();String getPath();
    通过file对象可以创建空文件或目录(该对象所指不存在的情况下):boolean createNewFile() throws IOException;boolean delete();boolean mkdir();boolean mkdirs();<--前者上级目录不存在则创建失败,后者没有上级目录时自动创建目录。

    异常

    Java是采用面向对象的方法来处理异常的。
    处理过程:<抛出异常>:执行方法时发生异常,则将这个方法生成代表该异常的一个对象,停止当前执行路径,并把异常对象提交给JRE。<捕获异常>:JRE得到该异常后,寻找相应的代码来处理该异常,JRE在方法的调用栈中查找,从生成异常的方法开始回溯,直到找到相应的异常处理代码为止。
    所有异常对象都是派生于Throwable类的一个实例。
    Error类层次描述了Java运行时系统内部错误和资源耗尽错误(不需要管理)。
    Runtime Exception(unchecked Exception):异常产生比较频繁,由系统自动检测并交给缺省的异常处理程序。也可以用判断条件避免一些错误。
    checked Exception:必须捕获进行处理。
    try-catch-finally
    不管是否出现异常都要执行的语句块放在finally中。
    异常类之间有继承关系,越底层的类,越放下面。
    不要在finally中使用return,它会覆盖其他返回值。
    执行顺序:执行try,catch,给返回值赋值;执行finally;return返回值。
    throws
    抛出异常,由调用者处理异常。
    子类声明的异常范围不能超过父类声明范围。
    throw:手动创建并抛出
    避免使用异常处理代替错误处理;只在异常情况下使用异常机制;异常往往在高层处理;整个任务为一个try语句块。

    相关文章

      网友评论

          本文标题:Java知识点整理(1)- 基础

          本文链接:https://www.haomeiwen.com/subject/weceiftx.html