Java基础

2018-08-19  本文已影响0人  小张同学_loveZY

Java基础概述

名次释义:

  1. Java虚拟机(Java Virtual Machine)java运行的环境。
  2. 垃圾收集机制(Garbage Collection):由系统控制。
  3. JDK(Java Development Kit) Java开发工具包
  4. JRE(Java Runtime Environment) Java运行环境

Java 代码规则:

  1. 唯一入口 main的方法:固定格式:
    public static void main(String[] args){...}
  2. 一个 Java 源文件中最多只能有一个public类,且它必须是该类名命名
  3. Java中的名称命名规范:
    • 包名:xxxyyyzzz
    • 类名接口名:XxxYyyZzz
    • 变量名和函数名:xxxYyyZzz
    • 常量名:XXX_YYY_ZZZ

建议写代码的时候:先将自己的思想通过注释先整理出来,再用代码去体现

一些细节问题:

面向对象

三大特征

封装:将函数(接口)和变量(属性)封装成class,对外开放接口、隐藏属性。

继承:实现了后扩展,精简了代码,使得后人在前人的基础上开发,并且已经搭设好的软件平台的业务逻辑不需要改动。

多态:父类引用指向子类对象,子类可能重写父类的方法,父类对象调用子类方法,从而扩展功能。并且不改动软件架构。

动态绑定:直到运行时确定绑定指定的类。现在具体类找,如果没有则在父类总找。
- 每次调用方法都要进行搜索,时间开销太大。
- 所以虚拟机预先为每个类创建一个方法表,在调用方法的时候,只需要查找这个表即可。

静态绑定:程序执行前已经被绑定。
- private: 所属的类绑定
- final: 定义final的父类绑定
- static:类绑定

构造方法: 这里一定注意,和C家族不一样,java没有析构方法。(但我记得有一个finally方法)。可以重载,且有复制构造方法、空参数构造方法。不能继承

this指针:对自身对象的引用。
super指针:指向父类。

访问控制

结论:

  1. super(…)和this(…)调用语句不能同时在一个构造函数中出现
  2. super(…)或this(…)调用语句只能作为构造函数中的第一句出现

x instanceof A:判断x是否为A类对象或者其子类对象。

高级类特性:

static 关键字

静态代码块:静态初始化,在main开始之前,且只执行一次。

static {
    total = 100;//为total赋初值
}
final 关键字
抽象类(abstract 关键字)
  1. 抽象方法:只有方法的声明,没有方法的实现。以分号结束
  2. 含有抽象方法的类必须被声明为抽象类。
  3. 不能用abstract修饰私有方法,构造方法,静态方法。不能被重写继承的方法。
接口(interface 关键字)

异常处理与集合:

异常类层次:

try-catch-finally语句:
try
{
    ......  //可能产生异常的代码
}
catch( ExceptionName1 e )
{
    ......  //当产生ExceptionName1型异常时的处置措施
}
catch( ExceptionName2 e )
{
    ......   //当产生ExceptionName2型异常时的处置措施
} 
finally{
    ......  //无条件执行的语句
} 

Java 集合

Java 集合可分为 Set、List 和 Map 三种

hash:当向 HashSet 集合中存入一个元素时,HashSet 会调用该对象的 hashCode() 方法来得到该对象的 hashCode 值,然后根据 hashCode 值决定该对象在 HashSet 中的存储位置。如果两个元素的 equals() 方法返回 true,但它们的 hashCode() 返回值不相等,hashSet 将会把它们存储在不同的位置,但依然可以添加成功。

因此重写 hashCode() 方法的应遵循以下基本原则:
  1. 在程序运行时,同一个对象多次调用 hashCode() 方法应该返回相同的值
  2. 当两个对象的 equals() 方法比较返回 true 时,这两个对象的 hashCode() 方法的返回值也应相等
  3. 对象中用作 equals() 方法比较的 Field,都应该用来计算 hashCode 值
ArrayList 和 Vector 是 List 接口的两个典型实现(细化下)
HashMap 和 Hashtable 是 Map 接口的两个典型实现类(细化)

Collections 是一个操作 Set、List 和 Map 等集合的工具类

泛型枚举与注解:

泛型:(待补充)

分为泛型类和泛型方法,仅仅是数据类型不同,而业务逻辑相同。

优点:降低代码量,实现迟绑定。

枚举:

JDK 1.5 新增的 enum 关键字用于定义枚举类,枚举类和普通类的区别:

Annotation(注解):

元数据:描述数据的数据。
三个基本的 Annotation:

spring 与 spring boot中大量的使用了Annotation,因此关于本节内容,后面在框架中在详细总结。

IO与反射

File 类

File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。

IO 流体系
对象的序列化:

如果需要让某个对象支持序列化机制,则必须让的类是可序列化的,为了让某个类是可序列化的,该类必须实现如下两个接口之一:

Class类
Java反射机制主要提供了以下功能:

多线程与网络编程:

术语: 程序、进程、线程

创建多线程的方法:
  1. 继承 java.lang.Thread 类,重写 run方 法
  2. 实现java.lang.Runnable接 口,实现接口中的 run 方法
常用方法:

Java语言为线程类设置了10个优先级,分别使用1~10内的整数表示 ,整数值越大代表优先级越高。每个线程都有一个默认的优先级,主线程的默认优先级是5。

线程的运行状态
synchronized关键字

网络编程:

客户端Socket的工作过程包含以下四个基本的步骤:
  1. 创建 Socket。根据指定的 IP 地址或端口号构造 Socket 类对象。
  2. 打开连接到 Socket 的输入/出流。 使用 getInputStream()方法获得输入流,使用 getOutputStream()方法获得输出流。
  3. 按照一定的协议对 Socket 进行读/写操作。通过输入流读取服务器放入线路的信息(但不能读取自己放入线路的信息),通过输出流将信息写入线程。
  4. 关闭 Socket。断开客户端到服务器的连接,释放线路


服务器程序的工作过程包含以下四个基本的步骤:
  1. 对于服务器和客户机而言,将上述第一步改为构造 ServerSocket 类对象,监听客户端的请求并进行响应。
  2. 调用 ServerSocket(int port) 创建一个服务器端套接字,并绑定到指定端口上。
  3. 调用 accept(),监听连接请求,如果客户端请求连接,则接受连接,返回通信套接字。
  4. 调用 Socket类的 getOutputStream 和 getInputStream 获取输出流和输入流,开始网络数据的发送和接收。
  5. 最后关闭通信套接字。


JDBC

概念:java连接访问数据库的技术。hibernate、mybatis的基础。

JDBC为访问不同的数据库提供了一种统一的途径,为开发者屏蔽了一些细节问题

JDBC URL的标准由三部分组成,各部分间用冒号分隔。
防范 SQL 注入

防范SQL注入需要对SQL语句预编译,因此JDBC使用PreparedStatement 取代 Statement,PreparedStatement 接口是 Statement 的子接口,它表示一条预编译过的 SQL 语句


DatabaseMetaData:包含数据源的各种信息。

ResultSetMetaData:包含结果集的各种信息。

事务的ACID(acid)属性:
数据库事务的隔离级别:

默认为:REPEATABLE READ
JDBC的批量处理语句包括下面两个方法:
通常我们会遇到两种批量执行SQL语句的情况:
数据库连接池:避免大量的建立连接、关闭连接的消耗。
DataSource 通常被称为数据源,它包含连接池和连接池管理两个部分:
上一篇 下一篇

猜你喜欢

热点阅读