Java基础(一)

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 

重写和重载的特点和区别

  1. 特点
    * 重载(overload):同名不同参
    * 重写(override):同名同参同返回类型
  2. 区别
    * 重载是一个类中多态性的一种表现,重载是让类以统一的方式处理不同类型数据的一种手段,多个同名函数同时存在,具有不同的参数个数/类型。
    * 重写是父类与子类之间的多态性,是对父类的函数进行重新定义。

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

  1. 原子性(Atomicity)
    事务中的所有操作要么全部执行,要么都不执行。如果事务没有原子性的保证,那么在发生系统 故障的情况下,数据库就有可能处于不一致状态。
  2. 一致性(Consistency)
    主要强调的是,如果在执行事务之前数据库是一致的,那么在执行事务之后数据库也还是一致的。所谓一致性简单地说就是数据库中数据的完整性,包括它们的正确性。
  3. 隔离性(Isolation)
    一个事务所做的修改在最终提交以前对其他事务是不可见的。
  4. 持久性(Durability)
    一旦事务提交,则所做的修改会永久保存在数据库中。

final,finally,finalize的区别

  • final:用于声明属性,方法和类, 分别表示属性不可变, 方法不可被覆盖, 类不可被继承。
  • finally:只能是try/catch异常处理语句结构的一部分,表示总是执行。
  • finalize:是Object类的一个方法,在GC(garbage collection)执行的时候会调用被回收对象的此方法。该方法可以告诉GC在清理对象时要完成的一些任务,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等. JVM不保证此方法总被调用。

Servlet的生命周期

Servlet生命周期分为三个阶段:

  1. 初始化阶段:调用init()方法
  2. 响应客户请求阶段:调用service()方法
  3. 终止阶段:调用destroy()方法
posted @ 2019-11-26 23:40  秋裤队长  阅读(216)  评论(0编辑  收藏  举报