Java一些基础知识点
1.面向对象的特征有哪些方面?
封装,继承,多态(重载【编译时确定类型】和重写【运行时确定类型】两种)
2.有了基本数类型,为什么还要包装类型?
基本数据类型:Java提供八种基本数据类型,boolean,int,float等
包装类型:每个基本数据类型都会对应一个包装类型
装箱拆箱:
装箱:把基本数据类型转化成对应的包装类型
Integer i = 1; 实际上在编译时会调用Integer.valueOf方法来装箱
拆箱:int j = i;相当于int j = i,intValue();
Java是一种面向对象的语言,而基本的数据类型不具备面向对象的特性。
Null Integer--null int--0 分别用Integer和int表示Person这个类的id
MAX
MIN
缓存值:Integer i =1; Integer j =1;i==j;
3.说一下“==”和equal方法的区别?
==比较两个变量是否相等,变量有两种,如果是基本类型变量,直接比较两个变量的值,吐过是应用类型变量,比较的是两个变量的地址。
equal方法是object类的方法,equals方法比较的是两个对象是否具有一些相同的属性值。
4.讲一下String Stringbuilder Stringbuffer?
在Java中,提供三个类String ,Stringbuilder ,Stringbuffer 来表示和操作字符串。
String是内容不可变的字符串,String 底层使用了一个final修饰的字符数组(final char【】)String str= new String(“aaa”);
Stringbuilder和Stringbuffer是可变的字符串,底层使用的是可变的字符数组(没有fanal修饰)
最经典的字符串拼接:
String str = “a”+"b";(创建了三个对象)
Stringbuilder stringbuilder = new Stringbuilder(“a”).append("b");
Stringbuilder:线程不安全,效率高
Stringbuffer:线程安全(需要加锁保证同步),效率底
5.说一下Java中的集合?
Java中的集合分为两种:一种存储值(Collection),一种存储键值对(Map)
Collection又可以分为两种:
List:有序可以重复
Set:无须不可重复。根据equals方法和hashcode判断,也就是说如果一个对象要存储在set中,必须重写equals和hashcode方法。
6.ArrayList和LinkedList的区别?
ArrayList底层使用的是数组,LinkedList底层使用的链表
ArrayList:查询特定元素比较快(因为有索引),插入和删除比较慢(因为数组在内存中是一段连续的存储空间,插入和删除元素需要移动数组)。
LinkedList:查询效率低(链表不要求内存是连续的,查询需要从头部开始,按照指针方向一个一个找),插入和删除效率高(不需要移动内存,只需要改变引用的指向即可)。
使用场景:
ArrayList使用在查询比较多,但是插入和删除比较少的情况,LInkedList使用在查询比较少,而插入和删除比较多的情况。
7.简单说一下你对jdbc的理解?
Java database connection (Java 数据库连接),数据库管理系统有很多,每个数据库管理系统支持的命令是不一样的,java只要定义数据库连接接口,不同数据库厂商实现接口,
java程序员只需要面向接口编程,就可以实现同一套访问不同的数据库。
8.JDBC中PreparedStatement和Statement的区别?
1.PreparedStatement是预编译的,比Statement的速度快
2.前者的可读性和可维护性比后者强
3.前者可以有效防止sql注入攻击
9.数据库连接池的作用?
1.限制数据库连接的个数,不会导致由于数据库连接过多导致系统运行缓慢或者崩溃
2.数据库连接不需要每次都去创建和销毁,节约了资源
3.数据库连接需要每次都去创建,节约了时间
10.