黑马程序员--第一阶段3.面向对象--第10天

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

 

 

异常

l 异常定义了程序中遇到的非致命的错误, 而不是编译时的语法错误,如程序要打开一个不存的文件、网络连接中断、操作数越界、装载一个不存在的类等。异常是一个对象。

例如:

class Test

{

       publicint devide(int x,int y)

       {

              intresult=x/y;

              returnresult;

       }

}

class TestException

{

       publicstatic void main(String args[])

       {

              try

{

       new Test().devide(3,0);//这个语句可能有异常,因为除数不能为0

}

catch(Exception e)

{

       System.out.println(e.getMessage());//这里是出现异常后执行的语句

}

}

System.out.println(“Programis running here”);

}

 

l 当在一个声明的函数后面加了“throws Exception”,则调用该函数时必须用try,catch语句,如:

public int devide(int x,int y) throws Exception

{  }

//注:如果在调用这个方法的方法后也加上“throws Exception”则系统不会再要求使用try,catch语句

 

l 自定义异常类  (自定义的异常类必须继承自Exception)

class Test

{

       public int devide (int x,int y) throws Exception

       {

              if(y<0)

                     throw new DevideByMinusException(“devisoris ”+y);//手动抛出一个异常

              int result=x/y;

              return result;

       }

}

classDevideByMinusException extends Exception//自定义异常类

{

       public DevideByMinusException(String msg)//构造函数

       {

              super(smg);//调用父类的构造函数

       }

}

class TestException

{

       public static void main(String args[ ])

       {

              try

              {

                     new Test().devide(3,-1)

              }

              catch(Exception ex)

              {

                     System.out.println(ex.getMessage());

              }

   System.out.println(“program is running here!”);

}

}

l ArithMeticException  算术异常

l 可以抛出个体的异常,如:
public int devide (int x,int y) throws ArithMeticException,DevideByMinusException
{   }
则在调用devide函数的时候就可以有多条catch语句,如:
try {}
catch(ArithMeticException e){ e.printStackTrace(); } //将异常信息打印到屏幕上
catch(DevideByMinusException e){ e.printStackTrace(); } /
catch(Exception e){ e.printStackTrace(); }
//系统会根据所抛出的异常类型自动匹配执行那个catch语句

n try,catch的应用:
收下代码为实现语句的跳转
void fun( )
{
    try
    {
        if(x==0)
            throw new XxxException(“Xxx”);
        else
             throw new YyyException(“Yyy”);
    }
    catch(XxxException e)
    { ....}
    catch(YyyException e)
    { ....}
}

 

可以在所有的catch语句后加上finally语句,该语句不管有没有发生异常都会执行(除非用“System.exit(0);”语句才不执行),即使使用了return语句也会执行,格式如下:
    catch(Exception e)
    {     }
     finally
     {
       
      }

假设有:D:\java\aa\bb这样的目录,在D:\java目录下新建一个Test.java,代码如下:

package aa.bb

class Test
{

       static int y=54;

}

class running

{

       public static void main(String args [ ])

      {

              System.out.println(Test.y);

       }

}

l        我们在编译这个java 文件时,在D:\java目录下输入“javacTest.java”,运行该类时,需要手动把Test.class、running.class 移动到bb目录下,然后在D:\java目录下输入java aa.bb.running来运行类

l        假设在D:\java目录下没有aa与bb目录,则编译时输入:“javac –d . Test.java”,则系统会自动创建aa\bb目录,并自动把Test.class、running.class放到bb目录下。

l        如果把Test.class剪切到E:\aa\bb目录下,则会提示找不到Test.class类,这时可以设置一下classpath环境变量:“setclasspath=E:\;.;”即可正常运行。

l        通过上述例子说明同一个包中的类可以在不同目录下,并且不论类是否是public都可以直接访问,无需加包名

l        package语句作为Java源文件的第一条语句。如果没有package语句,则为缺省无名包。

l        package语句只能有一条,import语句可以有多条

l        不同的包在调用类时必须指定包名,如果是同一个包下则不用。(在多次调用时如果不想在每次都加上包名,如aa.bb等,则可以在package语句后加入importaa.bb.*; //导入aa.bb包的所有类)

l        同一个包不同类,在调用方法时要加类名。

l        当导入的两个包中有相同的类,则调用这个类时要用完整的形式调用:如:

import java.sql.*;
import java.util.*;
假如在上面的两个包中都有一个test类,则调用时必须指定包名,如:java.sql.test

l        父包和子包没有关系,所以要分别用import导入,如:
       import java.sql.*;
       import java.sql.abc.*;

l        java中默认引入了:import java.lang.*包下的所有类

n jdk中常用的包

l java.lang----包含一些Java语言的核心类,如String、Math、Integer、System和Thread,提供常用功能。

l java.awt----包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。

l java.applet----包含applet运行所需的一些类。

l java.net----包含执行与网络相关的操作的类。

l java.io----包含能提供多种输入/输出功能的类。

l java.util----包含一些实用工具类,如定义系统特性、使用与日期日历相关的函数。

l        在编译时如果出现找不到类的异常时可分3个步骤查找原因:

1.        类名是否正常

2.        是否import了那个类

3.        classpath的设置是否正确

 

访问控制 

图片

解释:

1.        private类型的方法只能被在同一类中调用

2.        default类型的方法能被同一包中的所有类调用

3.        protected类型的方法能被同一包中的所有类调用,还能被子类调用(不论子类、父类是否在同一个包)

4.        public类型的方法能被所有的类调用

类本身也有访问控制,即在定义类的class关键字前加上访问控制符,但类本身只有两种访问控制,即public 和默认,父类不能是private 和 protected,否则子类无法继承。public修饰的类能被所有的类访问,default默认修饰(即class关键字前没有访问控制符)的类,只能被同一包中的所有类访问。

 

java的命名习惯

假设xxx,yyy,zzz分别是一个英文单词的拼写。

l 包名中的字母一律小写,如:xxxyyyzzz。

l 类名、接口名应当使用名词,每个单词的首字母大写,如:XxxYyyZzz。

l 方法名,第一个单词小写,后面每个单词的首字母大写,如:xxxYyyZzz。

l 变量名,第一个单词小写,后面每个单词的首字母大写,如:xxxYyyZzz。

l 常量名中的每个字母一律大写,如:XXXYYYZZZ

使用jar文件

图片

 

l        jar文件通常称呼为jar包,jar文件其实就是一个压缩文件,与zip文件差不多

l        jdk提供的许多类也是放在jar包中的(jre\lib\rt.jar)

l        jar文件可以用RAR软件打开

l        jar –cf abc.jar aa  //压缩aa目录为abc.jar文件

l        jar –cf abc.jar aabb  //将aa 目录与bb目录压缩成abc.jar文件

l        jar –tf abc.jar   //显示该包中的所有目录和文件

l        //字母v显示详细信息

l        jar –xf abc.jar  //解压该包中的内容

l        jar –tvfD:\abc.jar  >  1.txt //把该包中的内容清单保存到1.txt文件中

l        假如在D:\aa\目录下有abc.jar文件,当要使用这个包里的类时则需要设置classpath指向abc目录,如:setclasspath=D:\aa\abc\abc.jar;

 

-------------------- android培训java培训、期待与您交流!--------------------
                    详情请查看: http://edu.csdn.net/heima/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值