关于张老师java视频的学习(十二)

来源:互联网 发布:黄石弓箭 淘宝 编辑:程序博客网 时间:2024/05/16 09:11

Java基础视频:

一、知识点:面向对象下

 (1)、异常: P264
  · 异常捕捉catch部分,应养成处理异常的习惯,而不是该代码块中什么也不做。
  · 利用throws 抛出异常,只是对付了编译器,使得编译能通过,但是在运行的时候,程序还是会崩溃。实际应用中,不提倡这样做,
    只有肯定该函数不会抛出异常,否则还是使用try-catch语句来处理异常。
  · 定义自己的异常:P282
    定义一个继承异常(Exception)的类,该类便是自己定义的异常。我们定义的类总是以Throwable作为父类,一般都以Exception作为父类派生。
  · 实现程序的跳转:我们可以在程序中使用throw抛出某个自定义的异常,并不一定都是出现了异常,而是,只是为了实现程序的跳转,这是自定义
    异常的一种应用。在有多个catch存在的情况下,catch语句块中的形参前后顺序很重要: 越低级的子类越靠前,越高的类越靠后。即遵循:
    子类-->父类  的顺序来排序。
  · finally语句的作用:不管try语句块中是否有return语句,都会执行finally语句块中的代码。
  · java中的异常,强制我们去处理程序的异常,考虑程序的强健性、安全性、有效性。
  · 当一个子类中的方法重写父类中的方法时,子类的该方法声明所要抛出的异常必须和父类所声明抛出的异常相同或者是父类方法声明的异常的一个
    子类,如果父类抛出多个异常,那么子类重写的方法必须抛出这多个异常的一个子集,即不能抛出新的异常。

 (2)、包及其应用:
  · package语句作为java源文件的第一条语句,如果没有package语句,则为缺省无名包。
  · 在命令行中,运行包内的源程序,可以这样执行,如当前路径下一个包,那么可以在当前路径下输入命令 java 包名.类名(即完整类名)来运行
    包内的class文件,编译也如此。
  · 包的命名规范:全部用小写英文字母,使用倒写的互联网地址作为包名。
  · 定义了一个类属于一个包,那么这个类的完整类名为: 包名.类名,同一个包中的类访问同一个包中的类时,不需要加载额外的包前缀来引用该包
    中的其他类,虽然这样引用并没错,但是通常不提倡这样做。因为这样做太过冗余麻烦。
  · 我们可以让编译器在编译源文件的时候帮我们产生包所对应的文件目录结构,并将编译得到的class文件存放在对应的目录中,使用语句:
    javac -d . 源文件名其中 -d 表示创建目录存放在当前目录下,该新建目录由源文件中的包名指定。
  · classpath类路径变量,当编译器编译的时候,会从该变量指定的目录下寻找包,找到之后,找包里的源文件,并编译执行。两个class文件不在同一
    文件夹中,当其中一个class文件需要用到另外一个类文件的时候,便会从classpath指定的路径中寻找该类文件,如果找的到就编译成功,否则报错。
  · 包的建立:首先在源文件的第一行用package语句打包,然后建立相应于包名的目录,并将class文件存入包中,或者在编译源文件的时候指定在当前
    目录中建立包: javac -d . 源文件名。  而不是直接编译没有打包的类: javac 源文件名,在得到类文件之后放置到包中,这样并不能成功打包。
  · 在实际开发中,将源程序都打包,这是一个良好的习惯。
  · 包内包: 父包和子包之间并没有什么确定的关系,子包中的类如果需要引用父包中的类,则必须导入父包,父包如果需要引用子包中的类,也必须
      导入子包。
 (3)、import语句的应用:
  · 当所导入的多个包中含有相同的类名的时候,则在应用这个类的时候,需要在程序中指定完整的类名(即包含包名的类名)

 (4)、访问声明:访问权限大小:private < (无修饰) < protected < public

 (5)、类前面也可以有访问修饰符,但是只能是public 和 缺省这两个,否则子类无法继承。而类中的成员变量和成员方法则不一样。

 (6)、java中的命名习惯:
  · 包名:一律用小写的英文字母。
  · 类名、接口名:应当使用单词,每个单词首字母大写。
  · 方法名:第一个单词小写,之后的每个单词首字母大写。
  · 变量名:第一个单词小写,之后的每个单词首字母大写。
  · 常量名:所有的字母都大写。
 (7)、使用jar文件:(jar包)
  · java中的jar文件,其实是一种压缩格式文件,与通常所见的zip、rar格式相兼容。
  · jar 其实是包的更高一层的打包:jar包 包含了相关类及相关包和相关的目录结构,当我们打包为jar包给别人,让别人使用我们的jar包中的类的时候,
    ,使用者只需在classpath环境变量值中包含我们的jar包文件,JVM在装载类的时候,就会自动的在内存中将classpath路径中的jar包解压,便得到相应
    的具有一定目录结构,然后在这个目录中查找所需要的类。
  · JDK为我们提供了jar命令:可以解压或者压缩目标目录
    1、查看相关jar命令:jar
    2、将指定的文件目录打包:jar -cf 包名 将要打包的目录结构名 jar -xf jar包名 ,
    3、可以直接用RAR软件查看jar包中的文件目录
    4、使用jar命令对文件夹压缩注意事项:
        · jar -cvf jar包名 打包源目录名(目录/* : 是指将目录下所有的文件夹压缩到jar包)
          使用jar命令打包的时候,一定要注意打包得到的jar包的目录层次关系是否是我们所需要的。
        · 打包的时候,如何打包一个文件夹中的所有文件而不使用该目录作为顶级域名。


二、问题与收获:

 (1)、很奇怪: 在catch语句块中,捕捉到异常之后,处理的时候,如果使用 e.printStackTrace(),把消息和栈的跟踪记录输出到标准错误输出流中。
  如: 
   catch(ArithmeticException e){
    System.out.println("running here");
    e.printStackTrace();
   }
  在上述语句中,当我们捕捉到一个ArithmeticException异常e之后,进入该代码块中执行,但是,在Eclipse中,很奇怪的是,错误信息和println语句
  的输出位置并不遵循上面的循序,有时println语句输出结果在前,有时e.printStackTrace()输出结果在后。这又是为何?可否固定他们的顺序?为何
  在命令行中运行,却一直都是按照代码中的先后循序来打印语句。

 (2)、AWT:抽象窗口工具包 (Abstract Windowing Toolkit) (AWT)是Java的平台独立的窗口系统, 图形和用户界面器件工具包。

 (3)、如果我们将Eclipse中编译的class文件直接复制到另外个文件夹中并在命令行中进入当前目录并执行,此时,需要注意源文件的包,否则可以通过编译,
  但是无法正确执行,编译器会报:Could not found main class 的错误,因为编译器找不到包,即使将源文件复制到这个文件夹也不行,除非将包名
  更改正确,或者在该文件夹中为其建立对应的包,并将class文件放进去。很大情况下,如果出现找不到class文件,包路径错误是其中一种。
 (4)、同一个程序的不同相关联的字节码文件不是必须放在同一个文件夹中,但是,在执行的时候必须把他们的路径都包括在classpath中,否则在需要用到某
  个类的时候,就无法找到类。
 (5)、命令行中,不能进入包内来执行class文件: 为什么,因为classpath在没有指定值的情况下,缺省为当前目录的值和JDK平台类路径的值,那么,我们
  进入包内执行类文件,编译器在当前目录下寻找包,但是当前目录是包内部,故找不到这个包,报错:找不到类。 我们应该在包名所在目录下进行执行。
 (6)、如果程序中报错: 无法找到类
  解决方法和步骤:
   1、检查程序中的类名是否有写错,比如大小写漏写等问题
   2、检查类是否属于某个包,检查和包相关的问题
   3、classpath变量的当前值问题。
 (7)、java中的类只有两个访问权限修饰符: 1、public修饰符,可以被任何类访问。2、缺省的修饰符,只能被同一个包中的类访问。
 (8)、原来可以在WinRAR中用相应的程序修改文件并保存在压缩文件中。即,未解压之前便可以更改压缩包中的文件。

原创粉丝点击