黑马程序员-----Java基础知识回顾

 

---------------------- android培训java培训、期待与您交流! ----------------------

 

 

 

在经过一段“白不懂夜的黑”的java学习,对于java基础总算有了一种莫名其妙的感觉,也许是这段日子朝夕相处吧,虽然还不能像老师那也游刃有余,还有些模糊的环节但是我相信会更上一层楼的。

这十多天的学习内容大致包括:

基础语法,类相关语法,内部类的语法,继承相关语法,异常的语法,线程的语法,集合的语法,io的语法,虚拟机的相关语法。

对于java的高新技术后边的一点框架用途,类标识和java API只是做了简单了解,当时就是这个样子,看的发晕~~~真的是代码实践的少啊

由于知识点多,且其中部分已经在前边的日志中总结过,所以这次就对其中的部分回顾总结:

 

1.内部类认识和引用

 

当描述事物的内部还有事物,该事物用内部类来描述。内部类可以直接访问外部类中的成员,包括私有。
因为内部类中持有一个外部类的一个引用,格式:外部类名.this
外部类要访问内部类,必须建立内部类的对象。格式:Outer.Inner in = new Outer().new Inner();

当内部类被 static 修饰后,只能直接访问外部类中的static 成员,出现了访问局限。

在外部其他类中,访问static内部类的非静态成员:  new  Outer.Inner().function();

在外部其他类中,访问static内部类静态成员:Outer.Inner.function();

注意:当内部类中定义了静态成员,该内部类必须是 static的。当外部类中的静态方法访问内部类时,内部类也必须是 static 的

 

2.单例设计模式--Windows中的回收站,只有一个实例

 

为了避免其他程序过多的简历该类对象,1)先禁止其他程序建立该对象2)为了让其他程序可以访问到该类对象,在本类中自定义个对象3)方便其他程序访问,提供访问方法。

此为饿汉式,一进内存就建立对象,方便安全

calss Single{

    private Single(){}

    private static Single s= new single();

    public statin Single getInstance(){

    return s;}

}}

... Single s1 = Single.getInstance();

懒汉式,single类被调用进入内存,判断对象没存在,再调用接口建立对象

class single2{

  private static single s=null;

  private single(){}

  public static synchronized single getInstance(){

  if(s==null){

  s=new single;

  return s;}}

对象延时性加载,由于上锁对线程判断的过程,影响了进程的效率。

 

3.抽象类--老板给员工的项目任务摘要 

java中可以定义一些不含方法体的方法,它的方法体的实现交给该类的子类根据自己的情况去实现,这样的方法就是抽象方法,包含抽象方法的类就叫抽象类。

作用:提取出来的抽象功能表示出来,提高代码的复用性。

特点:1)抽象方法一定在抽象类中2)抽象的类和方法都必须被abstract关键字修饰3)抽象类不可用new创建对象,因为调用无意义4)如果抽象类中的抽象方法要被调用,必须有子类复写起所有的抽象方法,才建立子类的调用。

注意:如果子类只覆盖了部分抽象方法,那么子类也被传染成了抽象类。抽象类可以有构造方法和静态方法,为了让其他程序调用,抽象类也有非抽象方法和普通成员变量。

abstract class Student {

abstract void study();}

class A extends Student{

void study{System.out.print("需要复写study方法1")}

class B extends Student{

void study{System.out.print("需要复写study方法2")}

 

4.接口Interface--代码块之间的通信契约

 

可以理解为一个特殊的抽象类,当抽象类中的方法都是抽象的,则该类可以用接口来表示,接口更多的是在系统构架设计发挥作用。

作用:对外暴露自己的规则,扩展程序的功能,由于类是单继承的,当一个类还想拥有其他的类的功能扩展时,只能来当接口的小弟符合接口的规则才可以扩展功能,

所以接口可以被多类实现(当然接口没有具体内容的方法体):class object implements JK1 , JK2

接口也可以被多接口继承: Interface JK1 extends JK2 , JK3

接口和抽象类都不可以创建对象,因为有抽象方法,其成员都是public来修饰,常量默认为 public static final,方法默认修饰为 public abstract (接口不可以有静态方法)

interface Inter {

  public static final Num=3

  public abstract void show();

  }

class Test implements Inter{

  public void show(){}

  }

class InterfaceDemo{

  public static void main (Strings[] args){

  Test t = new Test();

  Syetem.out.println(t.Num);    // 3

  Syetem.out.println(Inter.Num);   // 3

  Syetem.out.println(Test.Num);   // 3}

}

 

5.异常--卖可能发霉的面包

 

对于程序的运行难免会出现异常,严重的要用Error类描述对于Error一般不编写针对性的代码进行处理。不严重的要用Exception类进行描述,可以使用针对性的处理方式进行处理。jvm会把异常报告给程序员,甚至有的类和方法调用本身都有要声明可能要出现的异常,所以在调用的时候要处理该异常,throws给虚拟机或下个引用者,或者自己try-catch处理。

异常的处理方式是:

try{
       需要被检测的代码;
     }

catch(异常类 变量){                    处理异常的代码

e.getMessage();                  //输出异常信息

e.tostring();                        

e.printStackTrace();             //输出详细的异常信息
      }finally{
      一定会运行的代码
  }

用try-catch跳转

try

if(x==0)

    throw Exception1

  else

    throw Exception2

}

catch(Exception1 e)

{

//x==0时需要执行的代码}

catch(Exception2 e){

 //x!=0时需要执行的代码

}

 

对捕获到的异常对象进行常见方法操作。

下面总结几个常见的异常类

算术异常类:ArithmeticExecption

空指针异常类:NullPointerException

类型强制转换异常:ClassCastException

数组下标越界异常:ArrayIndexOutOfBoundsException

文件未找到异常:FileNotFoundException

字符串转换为数字异常:NumberFormatException

输入输出异常:IOException

方法未找到异常:NoSuchMethodException

在子父类覆盖时:
子类抛出的异常对象必须是父类异常的子类或者子集
如果父类或者接口没有异常抛出时,子类覆盖出现异常,子类只能try不能throws。
 
 

 

 

 

---------------------- android培训java培训、期待与您交流! ----------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值