java基础知识2

Posted 9797ch

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java基础知识2相关的知识,希望对你有一定的参考价值。

1、请对比synchronized与java.util.concurrent.locks.Lock的异同

主要相同点:Lock能完成synchronized所实现的所有功能
主要不同点:Lock有比synchronized更精确的线程语义和更好的性能。synchronized会自动释放锁,而Lock一定要求程序员手工释放,并且必须在finally从句中释放。

2、作用域public、private、protected 以及不写时的区别

private修饰的成员变量和函数只能在类本身和内部类中被访问。

protected 修饰的成员变量和函数能被类本身、子类及同一个包中的类访问。

public修饰的成员变量和函数可以被类、子类、同一个包中的类以及任意其他类访问。

3、HashMap和Hashtable的区别

 1.(同步性)HashTable的方法是同步的,HashMap不能同步。

 2.(继承的父类不同)HashTable是继承自Dictionary类,而HashMap是继承自AbstractMap类。不过它们都实现了同时实现了map、Cloneable(可复制)、Serializable(可序列化)这三个接口。

 3.(对null key和null value的支持不同).HashTable不允许null值(key和value都不可以),HashMap允许使用null值(key和value)都可以。这样的键只有一个,可以有一个或多个键所对应的值为null。

 4.(遍历方法不同)HashTable使用Enumeration遍历,HashMap使用Iterator进行遍历。

 5.(初始化和扩容方式不同)HashTable中hash数组初始化大小及扩容方式不同

 6.计算hash值的方法不同。

Hashtable直接使用key对象的hashCode。hashCode是JDK根据对象的地址或者字符串或者数字算出来的int类型的数值。然后再使用除留余数法来获得最终的位置。

 7.(对外提供的接口不同 )Hashtable比HashMap多提供了elements() 和contains() 两个方法。

elments() 方法继承自Hashtable的父类Dictionnary。elements() 方法用于返回此Hashtable中的value的枚举。

contains()方法判断该Hashtable是否包含传入的value。它的作用与containsValue()一致。事实上,contansValue() 就只是调用了一下contains() 方法。

4、java创建对象的方式有哪些

 1.使用new关键字

 2.使用反射机制创建对象:

 (1)使用Class类的newInstance方法

 (2)java.lang.reflect.Constructor类里也有一个newInstance方法可以创建对象。

 3.使用clone方法:先实现Cloneable接口并实现其定义的clone方法

 4.使用反序列化

5、JDBC使用步骤过程

 1、加载JDBC驱动程序:  

 2、提供JDBC连接的URL

 3、创建数据库的连接    

 4、创建一个Statement    

 5、执行SQL语句   

 6、处理结果

 7、关闭JDBC对象    

6、Java 抽象类:具有抽象方法的类一定为抽象类。


在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不fv是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。

由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。

父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法。

在Java中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口。

7、Java 接口

接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。

接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。

除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。

接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。

接口与类相似点:

  • 一个接口可以有多个方法。
  • 接口文件保存在 .java 结尾的文件中,文件名使用接口名。
  • 接口的字节码文件保存在 .class 结尾的文件中。
  • 接口相应的字节码文件必须在与包名称相匹配的目录结构中。

接口与类的区别:

  • 接口不能用于实例化对象。
  • 接口没有构造方法。
  • 接口中所有的方法必须是抽象方法。
  • 接口不能包含成员变量,除了 static 和 final 变量。
  • 接口不是被类继承了,而是要被类实现。
  • 接口支持多继承。

接口特性

  • 接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是 public abstract,其他修饰符都会报错)。
  • 接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量(并且只能是 public,用 private 修饰会报编译错误)。
  • 接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法。

抽象类和接口的区别

  • 1. 抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。
  • 2. 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的。
  • 3. 接口中不能含有静态代码块以及静态方法(用 static 修饰的方法),而抽象类是可以有静态代码块和静态方法。
  • 4. 一个类只能继承一个抽象类,而一个类却可以实现多个接口。

8、什么是Spring框架?

Spring框架:

Spring是一个J2EE框架,这个框架提供了对轻量级IoC的良好支持,同时也提供了对AOP技术非常好的封装。

相比其他框架,Spring框架的设计更加模块化,框架内的每个模块都能完成特定的工作,而且各个模块可以独立的

运行,不会相互牵制,因此,在使用Spring框架开发时,开发人员可以使用整个框架,也可以只使用框架内的一部分

模块,例如只使用Spring AOP模块来实现日志管理功能,而不需要使用其他模块。

Spring框架主要由7个模块组成,分别是Spring AOP、Spring ORM、Spring DAO、Spring Web、Spring Context、

Spring Web MVC、Spring Core等。

 

Spring框架图: 
技术图片

 

下面是各模块的作用:

Spring AOP:采用了面向切面编程的思想,使Spring框架管理的对象支持AOP,同时这个模块也提供了事务管理,

可以不依赖具体的EJB组件,就可以将事务管理集成到应用程序中

Spring ORM:提供了对现有ORM框架的支持,例如Hibernate、JDO等

Spring DAO:提供了对数据访问对象(Data Access Object,DAO)模式和JDBC的支持。DAO可以实现把业务逻辑与

数据库访问的代码实现分离,从而降低代码的耦合度。通过对JDBC的抽象,简化了开发工作,同时简化了对异常的

处理(可以很好的处理不同数据库厂商抛出的异常)

Spring Web:提供了Servlet监听器的Client和Web应用的上下文。同时还集成了一些现有的Web框架,例如Structs

Spring Context:扩展核心容器,提供了Spring上下文环境,给开发人员提供了很多有用的服务

Spring MVC:提供了一个构件Web应用程序的MVC的实现

Spring Core:Spring框架的核心容器,它提供了Spring框架的基本功能,这个模块中最主要的一个组件为BeanFactory,

它使用工厂模式来创建所需的对象。同时BeanFactory使用IOC思想,通过读取XML文件的方式来实例化对象,可以说

BeanFactory提供了组件生命周期的管理,组建的创建、装配、销毁等功能

 

以上是关于java基础知识2的主要内容,如果未能解决你的问题,请参考以下文章

Android逆向-Android基础逆向(2-2)

java基础知识总结2

java基础知识2

Java-100天知识进阶-JVM内存-知识铺

java---基础知识2

Java 8实战- Java 8基础知识