`
wuxiaozeng2440
  • 浏览: 25793 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java各种区别

    博客分类:
  • Java
 
阅读更多

ArrayList LinkedList Vector

1.ArrayList:底层用数组实现的List 

特点:查询效率高,增删效率低 轻量级 线程不安全 

2.LinkedList:底层用双向循环链表 实现的List 

特点:查询效率低,增删效率高 

3.Vector: 底层用数组实现List接口的另一个类 

特点:重量级,占据更多的系统开销 线程安全

 

Hashtable和HashMap不同之处。

1.hashMap去掉了HashTable 的contains方法,但是加上了containsValue()和containsKey()方法。

2.hashTable同步的,而HashMap是非同步的,效率上比hashTable要高。

3.hashMap允许空键值,而hashTable不允许。

 

String StringBuffer StringBuilder 

1.String 字符串常量,是不可变类,任何对String的改变都会引发新的String对象的生成

2.StringBuffer 线程安全的可变字符序列。一个类似于 String 的字符串缓冲区

3.StringBuilder 字符串变量(非线程安全)

 

sleep和wait的区别

1.这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类。

2.sleep方法没有释放锁,不出让系统资源,而wait方法释放了锁,出让系统资源,使得其他线程可以使用同步控制块或者方法。

3.wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用.

4.sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常

 

final,finally,finalize的区别 

1.final—修饰符(关键字)

final可以修饰类,这样的类不能被继承。 

final可以修饰方法,这样的方法不能被重写。 

final可以修饰变量,这样的变量的值不能被修改,是常量。 

2.finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。 

3.finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。

 

抽象类和接口

接口是特殊的抽象类,以下三个方面比较

1.属性:抽象类可以有普通成员变量,接口不行;

2.方法:抽象类有非抽象的方法和构造方法,并且修饰符可以是私有的,接口只能是抽象的方法,并且修饰符是public

3.关系:只能继承一个抽象类,但能实现多个接口。

 

equals和==的区别 

==比较的是2个对象的地址,而equals比较的是2个对象的内容。

值类型是存储在内存中的栈,而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。

==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。

equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。

 

堆和栈

1.堆是存放对象的,但是对象内的临时变量是存在栈内存中

2.栈是跟随线程的,有线程就有栈,堆是跟随JVM 的,有JVM 就有堆内存。

 

类变量和实例变量

1.静态变量是类变量,非静态变量是实例变量

2.静态变量存在方法区中,实例变量存在堆内存中。

 

OutOfMemoryError:java heap size”和”OutOfMemoryError: PermGenspace”

1.“heap size” 是说申请不到新的内存了,这个很常见,检查应用或调整堆内存大小。

2.“PermGen space”是因为永久存储区满了,这个也很常见,一般在热发布的环境中出现,是因为每次发布应用系统都不重启,久而久之永久存储区中的死对象太多导致新对象无法申请内存,一般重新启动一下即可。

 

&和&&

&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式.

&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作.

 

Error和Exception

Error:表示由JVM所侦测到的无法预期的错误,由于这是属于JVM层次的严重错误,导致JVM无法继续执行,因此,这是不可捕捉到的,无法采取任何恢复的操作,顶多只能显示错误信息。

Exception:表示可恢复的例外,这是可捕捉到的。

Java提供了两类主要的异常:runtime exception和checked exception。

 

运行时异常与一般异常

异常表示程序运行过程中可能出现的非正常状态.

运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java 编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。

 

局部变量和成员变量

成员变量:作为类的成员而存在,直接存在于类中。

局部变量:作为方法或语句块的成员而存在,存在于方法的参数列表和方法定义中。

1.成员变量可以被public,protect,private,static等修饰符修饰,而局部变量不能被控制修饰符及static修饰;两者都可以定义成final型

2.成员变量存储在堆,局部变量存储在栈

3.存在时间不同

4.成员变量有默认值

 

静态变量与实例变量,

成员变量又分成俩中类型:实例变量和静态变量。

1.语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。

2.程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。

 

字节流和字符流

1.字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件。

2.字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串; 

3.字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以。

4.字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节, 操作字节和字节数组。

5.如果是 音频文件、图片、歌曲,就用字节流好点,如果是关系到中文(文本)的,用字符流好点. 

6. InputStream是所有字节输入流的祖先,OutputStream是所有字节输出流的祖先

7. Reader是所有读取字符串输入流的祖先,而writer是所有输出字符串的祖先。

 

应用服务器和web server

应用服务器处理业务逻辑,web服务器是用于处理HTML文件的。应用服务器通常会包含web服务器。

应用服务器:Weblogic、Tomcat、Jboss 

WEB SERVER:IIS、 Apache

 

Overload 和Override 的区别。

方法的重写Overriding 和重载Overloading 是Java 多态性的不同表现。

重写Overriding 是父类与子类之间多态性的一种表现,重载Overloading 是一个类中多态性的一种表现。

如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。

如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded 的方法是可以改变返回值的类型。

 

Comparator或Comparable

一个类实现了Comparable接口则表明这个类的对象之间是可以相互比较的,这个类对象组成的集合就可以直接使用sort方法排序。要实现compareTo方法。

Comparator要实现compare方法,可以看成一种算法的实现,将算法和数据分离,Comparator也可以在下面两种环境下使用:

1、类的设计师没有考虑到比较问题而没有实现Comparable,可以通过Comparator来实现排序而不必改变对象本身

2、可以使用多种排序标准,比如升序、降序等。

分享到:
评论

相关推荐

    Java 各种集合的区别ArrayList Vector LinkedList map区别

    Java ArrayList Vector LinkedList map区别 各种集合的区别 写得非常详细

    javacv,opencv java版

    JavaCV 是一款开源的视觉处理库,基于GPLv2协议,对各种常用计算机视觉库封装后的一组jar包,封装了OpenCV、libdc1394、OpenKinect、videoInput和ARToolKitPlus等计算机视觉编程人员常用库的接口。 JavaCV通过其中的...

    int与Integer的区别(Java各种数据类型详细介绍及其区别).doc

    int与Integer的区别(Java各种数据类型详细介绍及其区别).doc

    Matlab与Java的区别,深入讲解Matlab代码的特点附带实例分析.docx

    # Matlab与Java的区别 Matlab是一种专门用于科学计算和数据可视化的高级编程语言,而Java是一种通用编程语言,用于开发各种类型的应用程序。两者之间有许多区别,主要包括以下几个方面: 1. 应用范围:Matlab主要...

    Java开发技术大全(500个源代码).

    integerExample.java 演示各种整型变量的使用 isPrime.java 判断素数 leapYearByIf.java 用if语句判断闰年 leapYearByLogical.java 用逻辑表达式判断闰年 lowToUpper.java 小写字母转换成大写字母 lozengeStar...

    Java-Spring各种依赖注入注解的区别.doc

    Java-Spring各种依赖注入注解的区别.doc

    javaString 和StringBuffer的区别

    JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据.这个String类提供了数值不可改变的字符串.而这个StringBuffer类提供的字符串进行修改.当你知道字符数据要改变的时候...

    java summary(java笔记)

    学习java的一些笔记和个人总结 9、Collection 和 Collections的区别。  Collection是集合类的上级接口,继承与他的接口主要有Set 和List.。Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种...

    Java2实用教程.rar

    17 3各种组件 习题">Java2实用教程 rar 第1章Java入门 1 1Java的诞生 1 2Java的特点 1 3安装Sun公司的SDK 1 4一个Java程序的开发过程 1 5一个简单的Java应用程序的开发过程 1 6一个简单的Java小应用程序 1 7什么是...

    JAVA面试题最全集

    1.Java有那些基本数据类型,String是不是基本数据类型,他们有何区别。 2.字符串的操作: 写一个方法,实现字符串的反转,如:输入abc,输出cba 写一个方法,实现字符串的替换,如:输入bbbwlirbbb,输出...

    java jdk实列宝典 光盘源代码

    连接各种数据库DBconnector.java; 获得数据库和表的元数据Getmetadata.java; 查询和更新数据库OperateDatadb.java; 批处理,介绍如何一次执行一批sql语句,这些sql语句用插入、更新和删除等相关操作; 提交和...

    java常见集合类的区别

    java常见集合类的区别;java语言需要更多基础沉淀,扎扎实实,后面的各种项目都会如何天翼。进行更高阶的用法和一些框架的原理都离开最基础的东西,基础虽然枯燥,但是也很有乐趣。

    JAVA基础课程讲义

    绘制各种图形示例 207 图像处理 208 加载图片示例 208 图片任意缩放并输出新图片 209 使用JMF处理音频和视频 211 JMF的下载 211 JMF的安装和配置 211 使用JMF播放音频文件 212 上机作业 213 第十二章 GUI编程之AWT ...

    java葵花宝典——各种问题详细解答

    java中常见问题解答以及对java各种概念的理解和区别。 对深入理解学好java有很好的帮助。

    java连接各种数据库写法

    各种数据库连接写法,基本格式一样,区别在于所用驱动不同!

    java初学者必看

    16.4 Java与各种数据库连接 16.5 本章习题 第17章 Java Web应用——JSP 17.1 JSP技术概述 17.2 JSP运行环境搭建 17.2.1 Tomcat下载与安装 17.2.2 Tomcat的环境变量配置 17.3 基本语法 17.3.1 HTML注释 ...

    Java服务器程序设计

    通过阅读本书,读者不仅能够知道用java服务器体系结构开发servlet与用传统cgi编写程序的好处,而且还能够掌握编写java servlet的各种技术和技巧。  本书适用于所有对java和web感兴趣的读者使用和参考。 第1部分 ...

    Java图形用户界面

    布局管理器是java语言与其它编程语言在图形系统方面较为显著的区别,容器中各个组件的位置是由布局管理器来决定的,共有5种布局管理器,每种布局管理器都有自己的放置规律。事件处理机制能够让图形界面响应用户的...

    java2022面试宝典

    JDK(Java SE Development Ki),Java标准开发包,它提供了编译、运行Jlva程序所需的各种工具和资源,包括Java编译Java运行时环境,以及常用的Java类库等 JRE(Java Runtime Environment),Java运行环境,用于运行Jlava...

    java面试题大全-基础方面

    Java基础方面: 1、作用域public,private,protected,以及不写时的区别...Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作 6、什么时候用assert .............

Global site tag (gtag.js) - Google Analytics