javaSE学习笔记解决方案

javaSE学习笔记
对于初学者来说,java入门确实不太容易,尤其是java的配置比起C或C++来说要复杂的多。本人建议初学者可以去到网上去下载一些视频来看学习,我当时就是看尚学堂马士兵的视频学习java SE的,讲的很详细,比起大学里的一些老师来说要好得多了。(这绝对不是做广告,是我自己的亲身体会)

话不多说,下面就是我通过视频学习时做的一些笔记,供大家参考一下。


  一,遇到问题的解决办法步骤:
  1,查文档,做实验。
  2,Google
  1,关键词的选择
   1),由精细到粗化
   2,略读页面介绍,分析可能性
   1),超过5页没找到,不要往后翻。
   3,先中文,后英文。
  3,论坛
   1),问题问清楚
   2),www.csdn.net
   3),国外的论坛
     基础知识
  1,打开命令提示符的方式有两种:1,开始\程序\附件\命令提示符;2,开始\运行\输入cmd后,按Enter键。
  2,java是解释型语言。java虚拟机能实现一次编译多次运行。
  3,JDK(java software Development kit 软件开发包),JRE(java Runtime Environment java运行环境)。
  4,javac编译java程序,java运行java程序。
  5,经过编译运行之后会形成三个文件.java、.class和.bak文件。bak文件是UltraEdit备份的一个文件。可以在UltraEdidt中进行设置,选择“高级\配置\文件处理\备份”,选择"不备份".
  6,一个文件最多有一个public class。
  7.java中switch语句只能探测int类型值。
  T1,(T表示后面添加的内容)在java中一个字节是八位,一个字符占两个字节(16位unicode字符串)。
  T2,内存中int占4个字节,long类型占8个字节;float占4个字节,double占8个字节;boolean类型占1个字节;
  T3,java不提供运算符的重载。
      类和对象
  8,在static方法中不能访问非static的成员。static方法是指在函数前面加上static限定符,如:public staticvooid main();public static void print(); 例子:视频第三章第19节。
  9,约定俗成的给package取名时把自己公司的域名倒过来,后面再跟上项目名。如:com.bjsxt.java140。
  10,如果你要把一个类放在包里面,第一句话写package,编译出来的类必须位于正确的目录下面。如:package com.bjsxt.java140;依次的目录是com\bjsxt\java140也就是一层层的子文件夹。编译出来的class文件必须位于正确的子目录下。如果你想在第二个类里面应用这一个类必须把名字给写全了,如:com.bjsxt.java140.Cat c = new com.bjsxt.java140.Cat();
  11,还有一个简写是用import引入这个类。如 a,import com.bjsxt.java140.Cat;表示引入Cat这一个类; 
   b,import com.bjsxt.java140.Cat.*;表示引入这一个包里的所有类。 一下三种用法都是正确的:
    (1)
     import com.bjsxt.java140.*;
   public class Dog {
   public static void main(String args[]) {
   Cat c = new Cat();
   c.print();
   }
   }
   (2)
   import com.bjsxt.java140.Cat;
   public class Dog {
   public static void main(String args[]) {
   Cat c = new Cat();
   c.print();
   }
   }
   (3)
   public class Dog {
   public static void main(String args[]) {
   //com.bjsxt.java140.Cat c = new com.bjsxt.java140.Cat();
   Cat c = new Cat();
   c.print();
   }
   }
  12,必须class文件的最上层包的文件目录位于classpath路径(设计环境变量)下。 在执行的时候也要把包名给写全了,即执行一个类需要写全包名
  13,java.lang的包在引用时不需要写上包名,除了lang这个包之外的所有包里的类在引用时必须写入包名。
  14,jar的路径:C:\jdk\jre\lib\rt
  15,打成jar包的方法:
  1,打开命令提示符,定位到包的根目录的上一层目录,如E:\java\package>  
  2,然后再输入-cvf,
  3,再输入jar名,如test.jar ,
  4,再输入*。*后按Enter建。如: E:\java\package> -cvf test.jar *.*  
  16,默认的访问权限是default。
  
      继承
  17,(1)、(函数)重写(overwrite)要注意的机几点:
  1),重写方法(函数)必须和被重写方法具有相同的方法名称、参数列表和返回类型;
  2),重写的时候要从父类的函数声明中拷贝函数的声明(即函数名设参数的类型和个数)。
  3),重写方法不能使用比被重写方法跟严格的访问权限。(为避免名称出错,重写时必须从基类中copy函数的声明)
   (2)、super关键字指向当前类的父类。
   (3)、构造方法:a,子类的构造的过程必须调用其基类的构造方法;b,子类可以在自己的构造方法中使用super(argument_list参数列表)调用基类的构造方法;即使用this(argument_list_)调用本类的另外的构造方法,如果调用super,必须写在子类构造方法的第一行。 c,如果子类的构造方法中没有显示地调用基类的构造方法,则系统默认调用基类无参数的构造方法; d,如果子类的构造方法中没有显示地调用基类的构造方法,而基类中又没有无参数的构造方法,则编译出错。
   (4),object类是java所有类的根基类,如果在类的声明中未使用extends指明其基类,则默认为object类。
   (5),对象转型:a,一个基类的引用类型对象可以“指向”其子类的对象;b,一个基类的引用的不可以访问子类对象新增加的成员(属性和方法);c,可以使用引用变量instanceof类名来判断该引用变量所“指向”的对象该类或该类的子类;d,子类的对象可以当作基类的对象来使用称作向上转型(upcasting),反之称为向下转型(downcasting)。
   (6),动态绑定是指在“执行”期间(而非在编译期间)判定所引用对象的实际类型,根据实际的类型调用相应的方法。
   要符合的条件:a,要有继承;b,要有重写;c,父类引用指向子类对象。
   (7),抽象类;
   a,用abstract关键字来修饰一个类时,这个类叫做抽象类;用abstract来修饰一个方法时,这个方法叫做抽象方法;
   b,含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写;
   c,抽象类不能被实例化;
   d,抽象方法只需声明,而不需实现。
   (8),final关键字(类似于C++中的const)
   a,final的变量的值不能被改变;1),final的成员变量; 2)final的局部变量;
   b,final的方法不能被重写;
   c,final的类不能被继承。
  
      接口
  18,接口(interface)是抽象方法和常量值的定义的集合;从本质上讲,接口是一种特殊的抽象类,这种抽象类包含常量和方法的定义,而没有变量和方法的定义。
  19,接口特性:
   (1),接口可以多重实现;
   (2),接口中声明的属性默认为public static final的;也只能是public static final的;
   (3),接口只能定义抽象方法,而且这些方法默认为public的,也只能是public的;
   (4),接口可以继承其他的接口,并添加新的属性和抽象方法。
  20,接口和接口之间可以继承,类和类之间可以    继承,但是类和接口之间只能通过类来实现接口。
  异常处理
  21,异常的分类(图)
   throwable  error     无法处理
        exception  其他类型         必须处理
   RuntimeExcption  可以处理也可以不处理,视情况而定。
  22,异常处理通常的结构是:try{...} catch{...} finally{...}//不管try块中是否抛出异常,finally中的语句必须被执行。
  24,异常与重写的关系:重写方法需要抛出与原方法所抛出类型一致的异常,或不抛出异常。
  25,总结:1,一个图(分类);2,五个关键字:try,catch,finally,throw,throws;3,先逮小的,再逮大的;4,异常与重写的关系。
  数组
  26,一维数组的形式:(1),  int a[]; a = new int[5];  等同于 int a[] = new int[5];
      (2),  int[] a; a = new int[5];  等同于  int[] a = new int[5];
  27,二维数组:int a[][] = {{1,2}, {3,4,5,6}, {7,8,9}};二维数组可看成以数组为元素的数组。
   java中多维数组的声明和初始化应按从高维到低维的顺序进行,如: