Java编程基础与JDBC、MySQL详解

需积分: 5 0 下载量 13 浏览量 更新于2024-07-09 收藏 345KB DOCX 举报
"java、宝典.docx" Java作为一门广泛使用的编程语言,其基础知识和面试常见问题涵盖了多个方面。以下是一些重要的Java知识点: 1. JDK、JRE、JVM三者关系:JDK(Java Development Kit)是开发工具包,包含编译器、调试器等工具,以及JRE(Java Runtime Environment)。JRE是运行环境,提供了执行Java程序所需的核心库和JVM(Java Virtual Machine)。JVM是Java程序的核心,负责解释和执行字节码。 2. 面向过程和面向对象的区别:面向过程编程关注的是步骤和函数,而面向对象编程更注重对象和它们之间的交互,通过封装、继承和多态来组织代码。 3. Java基本数据类型:包括整型(byte, short, int, long)、浮点型(float, double)、字符型(char)和布尔型(boolean)。 4. Java注释:有单行注释(//)、多行注释(/*...*/)和文档注释(/**...*/),用于解释代码或生成API文档。 5. 数组与集合:数组是固定大小的,存储同类型数据;集合长度可变,可存储不同类型的对象,如ArrayList、LinkedList、Vector等。 6. final关键字:final用来声明常量或确保变量不被修改,也可用于类和方法,表示不可继承或不可重写。 7. finally与finalize:finally确保代码块中的内容总会被执行,而finalize是对象被垃圾回收前调用的方法。 8. 面向对象三大特性:封装、继承和多态。 9. ==和equals区别:==比较的是对象的引用,而equals比较的是对象的内容。 10. String类:提供许多操作字符串的方法,如concat()、substring()、indexOf()等。String是不可变的,每次修改都会创建新对象。 11. String与StringBuilder/StringBuffer:String是不可变的,而StringBuilder和StringBuffer线程安全,用于构建可变字符串,效率高于String。 12. 自动装箱与拆箱:基本类型与对应包装类型之间的自动转换,如int到Integer。 13. int与Integer:int是原始类型,Integer是int的包装类型,可支持更多面向对象的操作。 14. 原始类型与包装类型:Java为每个原始类型提供了对应的包装类,如Integer、Double等。 15. ArrayList、LinkedList、Vector:ArrayList基于动态数组,查询快但插入删除慢;LinkedList基于双向链表,插入删除快但查询慢;Vector线程安全,性能较低。 16. HashMap与Hashtable:HashMap非同步,允许null键值对;Hashtable同步,不接受null键值对。 17. Synchronized:用于实现线程同步,保证共享资源的安全访问。 18. Synchronized非公平锁:线程获取锁的机会不是绝对公平的,可能导致某些线程长时间等待。 19. Synchronized悲观锁:认为并发环境中存在冲突,所以进行加锁操作。乐观锁如CAS(Compare and Swap)假设不会有冲突,只有在更新时检查,无冲突则更新,有冲突则重试。 20. JDBC技术:用于与数据库交互,如MySQL。使用场景包括CRUD操作、事务处理等。 21. JDBC访问步骤:加载驱动、建立连接、创建Statement或PreparedStatement、执行SQL、处理结果集、关闭资源。 22. PreparedStatement优点:防止SQL注入,提高执行效率,可预编译。 23. ResultSet:存储查询结果,按行遍历获取数据。 24. java.util.Date与java.sql.Date:前者用于通用日期,后者用于数据库交互,只包含日期部分。 25. 事务:一组操作要么全部成功,要么全部失败。JDBC中,通过setAutoCommit(false)开启手动事务,提交commit(),回滚rollback()。 26. 连接池:管理数据库连接,减少创建和销毁连接的开销,提高性能。例如C3P0、HikariCP、Apache DBCP。 27. 数据库优化:包括SQL优化(避免全表扫描,使用索引)、表结构优化、数据库设计优化等。 28. 分页查询:通常使用LIMIT和OFFSET或子查询实现。 29. SQL查询:例如JOIN操作,用于合并两个或更多表的数据。 以上内容只是Java、数据库和JDBC基础的冰山一角,深入学习还需要了解设计模式、框架、网络、并发等多个方面。