Java数据类型
基本数据类型都有默认值,数值型默认为该数据类型的0值,如(byte)0,(long)0,(float)0...基本数据类型的boolean默认为false,char默认为空格(控制台表现为输出" "),引用数据类型的默认值为null
- 基本数据类型:byte,short,int,long,float,double,char,boolean
- 引用数据类型:类(对象),接口,数组。例如:int[],String,ArrayList,Object
程序示例
import java.util.ArrayList;
public class DataTypeInit {
// 基本数据类型
private static byte initByte;
private static short initShort;
private static int initInt;
private static long initLong;
private static float initFloat;
private static double initDouble;
private static char initChar;
private static boolean initBoolean;
// 引用数据类型
private static int[] initIntArr;
private static String initString;
private static ArrayList initArrayList;
private static Object initObject;
public static void main(String[] args) {
System.out.println("initByte: " + initByte);
System.out.println("initShort: " + initShort);
System.out.println("initInt: " + initInt);
System.out.println("initLong: " + initLong);
System.out.println("initFloat: " + initFloat);
System.out.println("initDouble: " + initDouble);
System.out.println("initChar: " + initChar);
System.out.println("initBoolean: " + initBoolean);
System.out.println("initIntArr: " + initIntArr);
System.out.println("initString: " + initString);
System.out.println("initArrayList: " + initArrayList);
System.out.println("initObject: " + initObject);
}
}
输出结果
initByte: 0
initShort: 0
initInt: 0
initLong: 0
initFloat: 0.0
initDouble: 0.0
initChar:
initBoolean: false
initIntArr: null
initString: null
initArrayList: null
initObject: null
JDBC访问数据库的步骤
JDBC操作数据库的基本步骤:
1)加载(注册)数据库驱动(到JVM)。
2)建立(获取)数据库连接。
3)创建(获取)数据库操作对象。
4)定义操作的SQL语句。
5)执行数据库操作。
6)获取并操作结果集。
7)关闭对象,回收数据库资源(关闭结果集-->关闭数据库操作对象-->关闭连接)。
程序示例
import java.sql.*;
public class JDBCDemo {
public static void main(String[] args) {
String driver = "oracle.jdbc.driver.OracleDriver"; //MySQL:com.mysql.jdbc.Driver
String url = "jdbc:oracle:thin:@127.0.0.1:1521:ccdb"; //MySQL:jdbc:mysql://127.0.0.1:3306/ccdb
String userName = "oracc";
String passWord = "oracc";
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
// 1、注册数据库驱动
Class.forName(driver);
// 2、建立数据库连接
connection = DriverManager.getConnection(url, userName, passWord);
// 3、创建数据库操作对象
statement = connection.createStatement();
// 4、定义SQL
String sql = "select * from tb_kb_users";
// 5、执行操作并获取结果集
resultSet = statement.executeQuery(sql);
while (resultSet.next()) {
String id = resultSet.getString("USER_ID");
String name = resultSet.getString("USER_NAME");
String createTime = resultSet.getString("CREATE_TIME");
System.out.printf("工号: %s,\t姓名:%s,\t\t创建时间: %s %n", id, name, createTime);;
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 6、关闭对象
if (resultSet != null) {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (statement != null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
输出结果
工号: kf113, 姓名:杨立平, 创建时间: 20180717111505
工号: kf129, 姓名:张海青, 创建时间: 20180717113535
工号: kf121, 姓名:赵海兄, 创建时间: 20180717112227
工号: kf203, 姓名:崔巧玉, 创建时间: 20180712095836
重写和重载的特点和区别
- 特点
- 重载(overload):同名不同参
- 重写(override):同名同参同返回类型
- 区别
- 重载是一个类中多态性的一种表现,重载是让类以统一的方式处理不同类型数据的一种手段,多个同名函数同时存在,具有不同的参数个数/类型。
- 重写是父类与子类之间的多态性,是对父类的函数进行重新定义。
Overload程序示例
/**
* 同名不同参的函数或者方法称为重载
*/
public class OverloadDemo {
public static void fun() {
System.out.println("Execute fun() ...");
}
public static String fun(String param) {
System.out.printf("Execute fun(%s) ...", param);
return param;
}
public static void main(String[] args) {
fun();
fun("param");
}
}
Overload输出结果
Execute fun() ...
Execute fun(param) ...
Override程序示例
public class Father {
Father() {
System.out.println("Father()");
this.property();
}
public void property() {
System.out.println("I am father property");
}
}
public class Son extends Father {
/**
* 子类的所有构造函数中的第一行,其实都有一条隐身的语句super()
* 子类在进行对象初始化时,先调用父类的构造函数,这就是子类的实例化过程。
*/
Son() {
System.out.println("Son()");
super.property();
}
@Override
public void property() {
System.out.println("I am son property");
}
public static void main(String[] args) {
Son son = new Son();
son.property();
}
}
Override输出结果
Father()
I am son property
Son()
I am father property
I am son property
事务的特性ACID
- 原子性(Atomicity)
事务中的所有操作要么全部执行,要么都不执行。如果事务没有原子性的保证,那么在发生系统 故障的情况下,数据库就有可能处于不一致状态。- 一致性(Consistency)
主要强调的是,如果在执行事务之前数据库是一致的,那么在执行事务之后数据库也还是一致的。所谓一致性简单地说就是数据库中数据的完整性,包括它们的正确性。- 隔离性(Isolation)
一个事务所做的修改在最终提交以前对其他事务是不可见的。- 持久性(Durability)
一旦事务提交,则所做的修改会永久保存在数据库中。
final,finally,finalize的区别
- final:用于声明属性,方法和类, 分别表示属性不可变, 方法不可被覆盖, 类不可被继承。
- finally:只能是try/catch异常处理语句结构的一部分,表示总是执行。
- finalize:是Object类的一个方法,在GC(garbage collection)执行的时候会调用被回收对象的此方法。该方法可以告诉GC在清理对象时要完成的一些任务,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等. JVM不保证此方法总被调用。
Servlet的生命周期
Servlet生命周期分为三个阶段:
- 初始化阶段:调用init()方法
- 响应客户请求阶段:调用service()方法
- 终止阶段:调用destroy()方法