博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java基础
阅读量:4221 次
发布时间:2019-05-26

本文共 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种

  1. 逻辑型——boolean
  2. 文本型——char
  3. 整数型——byte,short,int,long
  4. 浮点数型——float,double

6、引用数据类型

  • 类——class
  • 接口——interface
  • 数组

7、基础类型转换

  • 布尔类型不可以转换为其它的数据类型
  • 容量小的类型自动转换为容量大的数据类型
  • 容量大的数据库类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出;使用时要格外注意.
  • 有多重类型的数据混合运算时,系统首相自动的将所有数据转换成容量最大的哪一种数据类型,然后在进行计算。

8、break和continue

(1)break遇见用于终止某个语句块的执行。用在循环语句体重,可以强行退出循环;
(2)continue语句用在循环语句体重,用于终止某次循环过程,跳过循环体中continue语句下面未执行的循环,开始下一次循环过程。

9、打包命令

  在要打包的最上级目录 ——控制台:jar -cvf name.jar .
这里写图片描述

10、类的继承与权限控制

  • 继承:extends
  • 一个子类只能有一个基类,一个基类可以派生出多个子类。
    这里写图片描述

11、构造方法

(1)子类的构造的过程中必须调用其基类的构造方法。
(2)子类可以在自己的构造方法中使用super(argument_listt)调用基类的构造方法。
使用this(argument_list)调用蓓蕾的另外的构造方法
如果调用super,必须写在子类构造方法的第一行
(3)如果子类的构造方法中没有显示地调用基类构造方法,则系统默认调用基类无参数的构造方法。
(4)如果子类构造方法中既没有显示调用基类构造方法,而基类中有没有无参的构造方法,则编译出错。

12、equals

  • Instanceof 比较符 :判断一个类是否是一个类型
  • If(obj instanceof cat) 如果obj对象是一个cat类,则返回真。
  • 一般该方法会被重写,具体的还要看重写的方式写的是什么。

13、对象转型(casting)

(1)一个基类的引用类型变量可以“指向”其子类的对象。
(2)一个基类的引用不可以访问其子类对象新增加的成员(属性和方法)。
(3)可以使用 引用 变量 instanceof类名 来判断该引用型变量所“指向”的对象是否属于该类或该类的子类。
(4)子类的对象可以当做基类的对象来使用称作向上转型(upcasting),反之称为向下转型(downcasting)。

14、动态绑定或多态

  动态绑定是指“在执行期间(而非编译期间)判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。”
存在的3个条件:

  1. 要有继承
  2. 要有重写
  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()

  异常类的分类:

这里写图片描述

  1. Error:称为错误,有Java虚拟机生成并抛出,包括动态链接失败、虚拟机错误等,程序对其不做处理。
  2. Exception:所有异常类的父类,期子类对应了各种各样可能出现的异常事件,一般需要用户显式的声明或捕获。
  3. Runtime Exception:一类特殊的异常,如被0除、数组下表超范围等,其产生比较频繁,处理麻烦,如果显示的声明或捕获将会对程序可读性和运行效率影响很大。因此有系统自动检测并将它们交给缺省的异常处理程序(用户可不必对其处理)。
  4. finally语句:
      finally语句为异常处理提供一个统一的出口,是的在控制流程转到程序的其它部分以前,能够对程序的状态作统一的管理。无论try所指定的程序块中是否抛出例外,finally所指定的代码都要被执行。通常在finall语句中可以进行资源的清除工作。如:关闭打开的文件、删除临时文件

  使用自定义异常

    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

  1. Collection接口—定义了存取一组对象的方法,其子接口Set和List分别定义了存储方式。
  2. Set中的数据对象没有顺序且不可以重复。
  3. List中的数据对象有顺序且可以重复。
  4. Map接口定义了存储“键(key)—值(value)映射对”的方法。

  容器类对象在调用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. 装入集合的类型都被当做Object对待,从而失去自己的实际类型。
  2. 从集合中取出时往往需要转型,效率低,容易产生错误。

  解决办法:

    在定义集合的时候同时定义集合中对象的类型
    (1)可以在定义Collection的时候指定
    (2)也可以在循环时用Iterator指定
  好处:
    增强程序的可读性和稳定性

23、IO输入输出流

  在Java程序中,对于数据的输入/输出操作以“流”(stream)方式进行;J2SDK提供了各种各样的“流”类,用以获取不同种类的数据;程序中通过标准的方法输入或输出数据。
这里写图片描述

ObjectIO

  序列化

Interface Serializable  可以序列化的接口    (标记接口)transient 关键字,透明的,作用:使该成员不以考虑

24、多线程

  进程是一个静态的概念,是指放在内存中未被执行的程序。

  1. 开始一个并行线程的方法

    (1)实现Runnable接口,使用Thread对象创建一个线程
    (2)继承Thread对象
      能使用接口,就不用继承。

  2. 开启一个并行的新线程,需要实现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时别的线程也不可以访问锁定对象,结束后会自动唤醒。

你可能感兴趣的文章
c++使用宏检测类是否包含某个函数或者变量属性
查看>>
CSS之Multi-columns的column-gap和column-rule
查看>>
CSS之Multi-columns的跨列
查看>>
CSS之浮动(一)
查看>>
CSS之浮动(二)
查看>>
AtomicInteger源码解析
查看>>
CopyOnWriteArraySet源码学习
查看>>
Openfiler 配置 NFS 示例
查看>>
Oracle 11.2.0.1 RAC GRID 无法启动 : Oracle High Availability Services startup failed
查看>>
Oracle 18c 单实例安装手册 详细截图版
查看>>
Oracle Linux 6.1 + Oracle 11.2.0.1 RAC + RAW 安装文档
查看>>
Oracle 11g 新特性 -- Online Patching (Hot Patching 热补丁)说明
查看>>
Oracle 11g 新特性 -- ASM 增强 说明
查看>>
Oracle 11g 新特性 -- Database Replay (重演) 说明
查看>>
Oracle 11g 新特性 -- 自动诊断资料档案库(ADR) 说明
查看>>
Oracle 11g 新特性 -- RMAN Data Recovery Advisor(DRA) 说明
查看>>
CSDN博客之星 投票说明
查看>>
Oracle wallet 配置 说明
查看>>
Oracle smon_scn_time 表 说明
查看>>
VBox fdisk 不显示 添加的硬盘 解决方法
查看>>