本文共 4498 字,大约阅读时间需要 14 分钟。
1、递归概念
简单的递归Public class Test{ Public static void Main(String [] args) { System.out.println(method(5)); } Public int method(int n) { If(n==1) Return 1; Else Return n*method(n-1); }}
2、结束程序
直接return 或者 return -1 自己提示3、标识符
Java对各种变量、方法和类等要素明时使用额字符序列成为标识符。凡是自己可以起名字的地方豆角标识符,都遵守标识符的规则。4、程序执行过程
(1)Load到内存区 (2)找到main方法开始执行5、Java基本数据类型
4类8种6、引用数据类型
7、基础类型转换
8、break和continue
(1)break遇见用于终止某个语句块的执行。用在循环语句体重,可以强行退出循环; (2)continue语句用在循环语句体重,用于终止某次循环过程,跳过循环体中continue语句下面未执行的循环,开始下一次循环过程。9、打包命令
在要打包的最上级目录 ——控制台:jar -cvf name.jar .10、类的继承与权限控制
11、构造方法
(1)子类的构造的过程中必须调用其基类的构造方法。 (2)子类可以在自己的构造方法中使用super(argument_listt)调用基类的构造方法。 使用this(argument_list)调用蓓蕾的另外的构造方法 如果调用super,必须写在子类构造方法的第一行 (3)如果子类的构造方法中没有显示地调用基类构造方法,则系统默认调用基类无参数的构造方法。 (4)如果子类构造方法中既没有显示调用基类构造方法,而基类中有没有无参的构造方法,则编译出错。12、equals
13、对象转型(casting)
(1)一个基类的引用类型变量可以“指向”其子类的对象。 (2)一个基类的引用不可以访问其子类对象新增加的成员(属性和方法)。 (3)可以使用 引用 变量 instanceof类名 来判断该引用型变量所“指向”的对象是否属于该类或该类的子类。 (4)子类的对象可以当做基类的对象来使用称作向上转型(upcasting),反之称为向下转型(downcasting)。14、动态绑定或多态
动态绑定是指“在执行期间(而非编译期间)判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。” 存在的3个条件:15、抽象类
(1)用abstract关键字来修饰一个类时,这个类叫做抽象类;用abstract来修饰一个方式时,该方法叫做抽象方法。 (2)含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写。 (3)抽象类不能实例化 (4)抽象方法只需声明,而不需实现。16、Final关键字
(1)final的变量的值不能够被改变 (2)final 的方法不能够被重写 (3)final的类不能够被继承17、接口
• 多个无关的类可以实现同一接口 • 一个类可以实现多个无关的接口 • 与继承关系类似,接口与实现类之间存在多态性 接口(interface)是抽象方法和常量值的定义的集合。从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和 方法的定义,而没有变量和方法的实现。特性: a. 接口考科一多重实现 b. 接口中声明的属性默认为public static final的;也只能是public static final的 c. 接口中只能定义抽象方法,而且这些方法默认为public的,也只能是public的 d. 接口可以继承其它的接口,并添加新的属性和抽象方法使用implements来实现,实现多个接口,使用“,”隔开
18、异常处理
打印异常的堆栈信息:e.printStackTrace()异常类的分类:
使用自定义异常
a. 通过集成java.lang.Exception类(或者RuntimeException)声明自己的异常类 b. 在方法适当的位置生成自定义异常的实例,并用throw语句抛出。 c. 在方法的声明部分用throws语句声明该方法可能抛出的异常。19、数组的使用(引用类型)
数组声明:Type var[]; 或 type [] var;
Java语句中声明数组时不能指定其长度,使用关键字new创建数组对象。
数组名=new 数组元素的类型 [ 数组元素的个数 ] 数组是引用类型,它的元素相当于类的成员变量,因此数组分配空间后,每个元素也被按照成员变量的规则被隐式初始化。数据的拷贝:使用java.lang.System类的静态方法
Public statci void arraycopy ( object src, int srcPos, object dest, int destPos, int length )
可以用与数组src从第srcPos项元素开始的length个元素拷贝到目标数组从destPost项开始的length个位置。如果原数据书面超过目标数组便捷会抛出“IndexOutOfBoundsException”异常。
20、StringBuffer类
代表可变的字符序列21、容器
容器API容器类对象在调用remove、contains等方法是需要比较对象是否相等,这回涉及到对象类型的equals方法和hashCode方法;对于自定义的类型,需要重写equals和hashCode方法以实现自定义的对象相等规则。
重写equals方法必须重写hashCode方法。当对象被作为“索引”的时候,会使用到hashCode方法。Iterator接口:a. 所有实现了Collection接口的容器类都有一个iterator方法用以返回一个实现了Iterator接口的对象。b. Iterator对象称作迭代器,用以方便的实现对容器内元素的便利操作。c. Iterator接口定义了如下方法: i. Boolean hasNext(); //判断游标右边是否有元素 ii. Object next(); //返回游标右边的元素并将游标移到到下一个位置 iii. Void remove(); //删除游标左面的元素,在执行完next之后该操作只能执行一次
22、泛型
起因: JDK1.4以前类型不明确解决办法:
在定义集合的时候同时定义集合中对象的类型 (1)可以在定义Collection的时候指定 (2)也可以在循环时用Iterator指定 好处: 增强程序的可读性和稳定性23、IO输入输出流
在Java程序中,对于数据的输入/输出操作以“流”(stream)方式进行;J2SDK提供了各种各样的“流”类,用以获取不同种类的数据;程序中通过标准的方法输入或输出数据。ObjectIO
序列化Interface Serializable 可以序列化的接口 (标记接口)transient 关键字,透明的,作用:使该成员不以考虑
24、多线程
进程是一个静态的概念,是指放在内存中未被执行的程序。开始一个并行线程的方法
(1)实现Runnable接口,使用Thread对象创建一个线程 (2)继承Thread对象 能使用接口,就不用继承。开启一个并行的新线程,需要实现Runnable接口,或继承Thread
Thread t1=new Thread(具体对象);T1.start();//调用一个线程,但不是同时运行T1.run();
3. 线程同步问题
解决方案:使资源独占。synchronized关键字 :锁定当前对象4. 死锁问题 加大锁的粒度来解决。
wait方法 来自object类This.wait(); This.notify(); 唤醒等待在某一个对象上的线程 this.notifyAll(); 唤醒所有等待的线程。
Wait 和sleep 区别:
①、wait时别的线程可以访问锁定对象,不能自动唤醒,需要别的线程来唤醒。(调用wait方法的时候必须锁定该对象) ②、Sleep时别的线程也不可以访问锁定对象,结束后会自动唤醒。