zoukankan      html  css  js  c++  java
  • 黑马程序员第一阶段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培训、期待与您交流!--------------------
  • 相关阅读:
    IDE-Android Studio 导入Ecplise项目不改变结构
    IDE-Android Studio -FAQ-使用习惯(不断更新 欢迎留言)
    IDE-Ecplise-代码注释 模版 编码规范 配色
    android- 远程调试
    phpstorm所有快捷键表格pdf
    phpstorm修改字体和大小
    phpstorm重构代码形式让阅读更简单
    七牛云到底好不好使用经历分享
    一篇文章搞懂php中类型转换
    彻底解决php判断a==0为真引发的问题-类型转换
  • 原文地址:https://www.cnblogs.com/runwind/p/4454756.html
Copyright © 2011-2022 走看看