Java面试
王俊凯夫人
这个作者很懒,什么都没留下…
展开
-
Java中boolean和它的包装类的区别在哪里?
boolean是基础数据类型,而Boolean是一个类,这是它们最本质的区别。Java之所以为每一个基础数据类型都提供一个相应包装类的目的,在于将Java的所以东西都抽象成对象,可以更方便的控制和使用。区别如下:1.boolean是基础数据类型,而Boolean是一个类2.boolean一般存在于桟空间中,而Boolean对象存在堆空间中3.boolean有true和false俩种原创 2016-08-09 21:23:42 · 8720 阅读 · 0 评论 -
Java中什么是JVM及其工作原理?
JVM是Java程序运行的平台,它就像一台虚拟出来的计算机一样,负责执行Java编译好的字节码文件。JVM具有非常严格的实现规范,大多数操作系统都可以安装JVM,为Java语言的跨平台性起到了关键的作用。 JVM(Java虚拟机)是一个想象中的机器,在实际的计算机上通过软件模拟来实现。Java虚拟机有自己想象的硬件,堆栈,寄存器等,还具有相应的指令系统。 说明: JVM有很原创 2016-08-08 21:11:34 · 3203 阅读 · 0 评论 -
Java和C++在编译和运行上有什么区别?
众所周知,任何一门计算机高级语言都会最终编程机器码(也就是二进制)以后,才会被计算机所识别。其中,与机器码最为接近的就是汇编了,而Java和C++都会直接或间接的变成汇编之后,然后在运行。 对于像c,c++这类高级计算机语言来说,它们的编译器(例如:Unix的CC命令,Windows的CL命令)都是直接把源码直接编译成计算机可以认识的机器码,如exe,dll之类的文件,然后直接运行即可。原创 2016-08-08 21:09:41 · 2953 阅读 · 1 评论 -
Java中JDK和JRE的区别是什么?它们的作用分别是什么?
JDK和JRE是Java开发和运行工具,其中JDK包含了JRE,但是JRE是可以独立安装的~它们在Java开发和运行的时候起到不同的作用~ 关于JDK和JRE,大家一定会记得,在安装JDK的时候需要分为俩个步骤:安装JDK和JRE,大家一般会一起安装,也建议大家分开装,因为这样更能帮助大家弄清它们的区别 JRE是Java Runtime Environment的缩写,是Java原创 2016-08-07 17:50:15 · 67942 阅读 · 8 评论 -
Java程序为什么无须delete语句进行内存回收?
垃圾回收机制是Java相对于C++的一种巨大改进,它避免了因为程序员忘记释放内存而造成内存溢出的错误。所以在Java程序中,根本不需要使用delete语句,JVM会自动的去检查哪些内存应该回收了,在后台就自动回收了,为程序员省了不少的事情。 大家知道,Java除了那8种基本类型以外,其他都是对象类型(又称为引用类型)的数据。JVM会把程序创建的对象存放在堆空间中,那什么是堆空间呢?其实,堆原创 2016-08-08 21:49:44 · 3201 阅读 · 0 评论 -
Java的变量分哪俩种大的数据类型?
先来分析一下: Java一共有8种基本数据类型,分别是byte,int,short,long,float,double,boolean和char,它们存储的都是数据量比较小的数据,只需要1个或少量几个字节就可以了。因此,这些数据类型的变量的二进制值就直接保存着它们的值。而引用数据类型指的是除开基本数据类型以外的数据类型,它主要用来指向某个对象,有一点像C/C++指针,但是没有指针灵活。对原创 2016-08-09 20:42:29 · 2821 阅读 · 0 评论 -
Java包含哪些基本数据类型及包装类?
Java一共有8种基本数据类型,分别是byte,int,short,long,float,double,boolean和char。它们所对应的包装类均在java.lang包中,分别是Short,Integer,Long,Float,Double,Boolean,Character。当有的地方必须要使用对象或引用数据类型的时候,例如集合类(List,Set等),基本数据类型就不能使用了,因为原创 2016-08-09 20:52:57 · 1200 阅读 · 0 评论 -
Java的引用和C++的指针有什么区别?
Java的引用和C++的指针都是指向一块内存地址的,通过引用或指针来完成对内存数据的操作,就好像风筝的线轴一样,通过线轴总是能够找到风筝,但是它们在实现,原理作用等方面却有区别。(1)类型:引用其值为地址的数据元素,Java封装了的地址,可以转换成字符串查看,长度也可以不必担心。C++指针是一个装地址的变量,长度一般是计算机字长,可以认为是个int。(2)所占内存:引用声明时没有实体,不占原创 2016-08-09 20:56:04 · 1002 阅读 · 0 评论 -
Java中equas和==的区别是什么?
看下列代码: String aa="123"; String bb="123"; String cc=new String("123"); System.out.println(aa==bb); System.out.println(aa==cc); System.out.println(aa.equals(cc));结果分别为true,false,tr原创 2016-08-09 21:00:53 · 6920 阅读 · 1 评论 -
Java中说明private,protected,public和default的区别
除了default以外,其他都是Java语言的关键字。default代表的是对类成员没有进行修饰的情况。它本身也代表了一种访问控制符。对于它们4中访问控制符来说,它们都可以修饰类的成员(包括静态和非静态成员),这些修饰也就控制了成员能被其他地方访问的限制情况。 对于范围概念来说,Java指的范围包括类内部,所在包下,子父类之间和外部包4种情况。如果一个成员需要被外部包所访问,则必须使用pu原创 2016-08-09 21:03:21 · 21368 阅读 · 0 评论 -
Java中int和Integer有什么区别?
int是8种基础数据类型的一种,它的字节长度为4,用于表示现实中的正负整型数字。由于它属于基础数据类型,它的创建不会在堆内存中开辟空间,一般是保存在桟内存中的,它可以用算术运算符进行加,减,乘,除等操作。在参数传递的时候,直接传递它的值。说明:所有的整型字面默认为int型。Integer是int的包装类,在java.lang包下,它不属于基础数据类型,而是一个类。它的含义也就是表示一个整型原创 2016-08-09 21:14:06 · 5058 阅读 · 0 评论 -
Java中的实型与整型的相互转换
因为实型比整型要多出小数部分,从整型转为实型时不会有精度丢失,但是由实型转为整型时则会丢失小数部分的数据。显式转换,也就是强制类型转换,例如下面的代码:int i=123;double d=(double)i;int k=(int)d;在以上代码中,首先将int型的变量转换为double型,在赋值给变量d,然后又把double型的变量d转换为int型并赋值给int型的变量k。因原创 2016-08-09 21:18:28 · 4672 阅读 · 0 评论 -
Java char能否存储汉字?
Java的char型字采用的是Unicode编码,在这些编码中就包含有简体中文和繁体中文所需要的字符。因此,char是可以用来表示汉字的,代码如下:public class ChineesTest{ public static void main(String[]args){ char c='中';//定义一个‘中’字符 int i=c; //把c变量原创 2016-08-09 21:25:49 · 1250 阅读 · 0 评论 -
Java中如何使用转义转义字符?
一些特殊的字符不能用一个特定的数字,例如,换行符,制表符,双引号。为了表示这些特殊的字符,需要引入转义字符的概念。所有的计算机语言都无法回避转义字符的概念,它们都统一的用了反斜线来表示转义。系统在解析这些字符的时候,一旦遇到“\”符号,就会把它后边紧跟的字符一起分析,看他们组合成了另外哪一些字符。以下为一些常见的转义字符:\a 响铃\b 退格\r 表示接受键盘输入,相当于按下回车。原创 2016-08-09 23:17:21 · 11988 阅读 · 0 评论 -
Java中环境变量CLASSPATH的作用是什么?
CLASSPATH环境变量是用来指定Java程序搜索类的路径的,对于Java应用程序来说,该变量的意义是非常重要的。 CLASSPATH环境变量是在编译Java源码和运行程序时使用的,也就是为Java程序所依赖的接口,类等指定一个搜索路径。 其写法与Path变量类似,每个路径用分号进行分开,如果是一个jar文件,则直接写明该文件的绝对路径,如下所示:.;c:\jar\lo原创 2016-08-08 21:01:44 · 10950 阅读 · 3 评论 -
如何为Java程序动态的指定类的搜索路径?
大家知道,在默认情况下,Java程序在编译和运行的时候,会通过JRE下的rt.jar文件和CLASSPATH环境变量所指定的路径进行类的搜索和加载,但是如果有时需要动态为Java程序指定类加载路径,那该怎么办?有的时候,为了动态的为Java程序指定类加载路径,开发者会写出一些批处理文件来进行Java程序的编译或允许,如Windows的bat文件和Linux下的sh文件。此时,就有一个问题了,这原创 2016-08-08 21:05:05 · 3057 阅读 · 0 评论 -
Java中如何利用JDK编译和运行应用程序?
JDK是Sun公司提供给Java程序员的开发工具包,除了提供必要的运行环境以外,最主要的感觉就是编译和运行,也就是javac和java命令,如何使用这俩个命令呢? JDK安装好以后,就可以使用javac和java命令工具了,它们均在安装目录>的bin文件夹下,所以,还需要把这个目录的路径配置到Path环境变量中,大致步骤如下:1.打开环境变量设置对话框2.新建JAVA_HOME环境原创 2016-08-08 20:52:56 · 11347 阅读 · 1 评论 -
Java中字符串字面量是否自动生成一个String对象?
在开发过程中,经常会需要直接写出一个字符串变量,也就是双引号包括的字符数据,这样一种字面量写法的字符串,是否已经创建了一个String对象呢?如果没有,那么数据存放在哪里呢?如果有,并没有new语句啊,是怎么创建的呢?看下面代码:String str1=“abc”;//创建abc字符串对象String atr2=new String("abc");//用new语句,创建abc字符串对象原创 2016-08-15 20:03:29 · 3344 阅读 · 1 评论 -
Java 字符串对象池的作用是什么?
从Java5.0开始,Java虚拟机在启动的时候回实例化9个对象池。这9个对象池分别用来存储8中基本类型的包装类对象和String对象,主要是为了效率问题。大家应该知道,创建String对象有俩种办法,代码如下:String str1="hello";String str2=new String("hello"); 这俩种创建String对象的方法有什么区别吗?区别就在于第一种原创 2016-08-15 20:05:21 · 2142 阅读 · 0 评论 -
Java 如何理解数组在Java中作为一个类?
Java数组的使用语法与C和C++的比较类似,但是它的本质是一个Java类,只是这个类比较特殊,所以很容易被人误解。 大家知道,Java的数据类型可以分为俩种:基本数据类型和引用数据类型。那么数组属于哪种呢?很显然,数组不会是基本数据类型,因为基本类型就只有那8中,那他应该就属于引用数据类型了,也就是说每一个数组实例都是一个对象,这些对象同属于一个类。首先,看一看如何使用一个Java数原创 2016-08-15 20:10:57 · 3119 阅读 · 0 评论 -
Java 数组中new Object[5]语句是否创建了5个对象?
Java 数组的本质是一个Java类,它是通过new语句来实例化,但是这个new语句却不会实例化数组中的对象,我们对它的理解有些偏差。 对于基本类型的数组,在new语句创建数组实例时,会为该数组分配指定长度的内存空间,并把数组的每个元素的初始化为0。那么,引用类型的数组又是如何来创建和初始化这些内存空间的?其实,引用数据类型的数组也会分配指定长度的内存空间,只不过这些内存空间是用来保存原创 2016-08-15 20:28:32 · 16313 阅读 · 0 评论 -
Java 如何拷贝数组的数据?
我们在操作Java数组的时候,其实是通过一个引用来操作数组的,如果使用简单的=操作符进行赋值的话,只是复制了引用,并没有把数组的数据复制一份。 我们在拷贝数组时,最容易犯的一种错误就是使用赋值运算符=来复制数组,然后对新数组的操作的操作也影响到原数组的数据,那是因为它们根本指向的是同一内存空间。代码如下:public class Test3 { public static voi原创 2016-08-15 21:49:43 · 2152 阅读 · 0 评论 -
Java 中二维数组的长度是否固定?
数组的本质是一种Java类,它的这种特性就导致它的多位数组就比较有特点,可以无限的扩展维度,并且每个维度元素的长度也可以参差不齐。java的二维数组其实这样的:先创建一个一维数组,然后该数组的元素在引用另外一个一维数组。在使用二维数组的时候,通过俩个中括号[]来访问每一层维度的引用,直到访问到最终的数据。示例代码如下:public class Test3 { public static原创 2016-08-15 21:52:11 · 5438 阅读 · 0 评论 -
Java 什么是集合?
集合,顾名思义,就是用来存储数据的对象,只不过在Java中,这些数据就是其他对象,它是一种数据结构的体现,也是对数组在功能上的扩展。java.util包下的集合框架主要由几个接口和实现类组成,大致组成如下图:列表(List):有序存放,允许重复,可以存放不同类型的对象集合(Set):无序存放,不允许重复,可存放不同类型的对象SortedSet:排好序列的Set映射(Ma原创 2016-08-16 21:00:35 · 1037 阅读 · 0 评论 -
Java中迭代器是什么?
可迭代是Java集合框架下的所有集合类的一种共性,也就是把集合中的所有元素遍历一遍。迭代的过程需要依赖一个迭代器对象,那么什么是迭代器呢? 迭代器(Iterator)模式,又叫做游标模式,它的含义是,提供一种方法访问一个容器对象中各个元素,而又不需暴露该对象的内部细节。 注意:Java的集合陆昂家的集合类,有的时候也称为容器。从定义上看,迭代器是为容器而生,它本质上就是一种遍历原创 2016-08-16 21:31:31 · 18703 阅读 · 1 评论 -
Java中Vector与ArrayList的区别?
Vector与ArrayList都是List接口的实现类,它们都代表链表形式的数据结构。但是,它们的实现和使用场景却有所区别。 它们二者的实现非常相似,都是用一个对象数组来存储元素的。但是,Vector的大多数成员方法都会加上synchronized关键字,也就是说Vector线程是安全的。由于Vector操作成员的方法必须保证同步,因此它的执行效率没有ArrayList高。所以,一般情原创 2016-08-16 21:38:48 · 698 阅读 · 0 评论 -
Java中集合泛型带来了什么好处?
首先,了解一下Java关于泛型的概念。泛型,在C++中被称为模板,就是一种抽象的编程方式。当我们定义类和方法的时候,可以用一种通用的方式进行定义,而不必写出具体的类,这些未知的东西会在真正使用的时候在确定。 对于集合类来说,它们可以存放各种类型的元素。如果在存放之前,就能确定元素的类型,那么就可以更加直观,也让代码更加简洁。示例代码如下:public class Test4 { pu原创 2016-08-16 21:50:09 · 7439 阅读 · 0 评论 -
Java中如何使用随机存取文件RandomAcessFile类?
InputStream和OutputStream都只是单方面的读和写文件的内容,如果有随机的读取和写入文件内容的需要那该怎么办?Java为我们提供了一个RandomAcessFile类,它就是专门用来随机存取文件的内容的。 RandomAcessFile操作文件内容的时候,就好像操作一块内存区域一样。把字节用下标数字来进行定位,通过调用RandomAcessFile的API方法,把指针的原创 2016-08-16 21:56:48 · 3181 阅读 · 0 评论 -
Java中什么是序列化?
序列化,又称为“串化”,可以形象的把它理解为把Java对象内存中的数据采编成一串二进制的数据,然后把这些数据存放在可以可以持久化的数据设备上,如磁盘。当需要还原这些数据的时候,在通过反序列化的过程,把对象又重新还原到内存中。 java.io.Serializable接口是可以进行序列化的类的标志性接口,该接口本身没有任何需要实现的抽象方法,它仅仅是用来告诉JVM该类的对象可以进行反序列化的原创 2016-08-16 22:02:08 · 3998 阅读 · 0 评论 -
MySql与Oracle的区别
Mysql与Oracle区别:今天面试,那面试官问了关于Mysql与Oracle的区别问题,以前没有总结,回答也不是很好,只是凭感觉,先总结如下:1. Oracle是大型数据库而Mysql是中小型数据库,Oracle市场占有率达40%,Mysql只有20%左右,同时Mysql是开源的而Oracle价格非常高。2. Oracle支持大并发,大访问量,是OLTP最好的工具。3.原创 2016-08-05 20:14:00 · 650 阅读 · 0 评论 -
Java 中HashMap和HashTable的区别?
对于Map接口来说,它有俩种比较重要的实现类HashMap和HashTable,它们保存元素的时候,都是无序的。但是,它们也有一定的区别,适用于不同的情况。 HashTable相对于HashMap更早提出,应用也非常广泛,HashMap后来提出是为了代替HashTable的类,也就是说建议使用HashMap,不要使用HashTable。可能我们觉得HashTable很好用,为什么不用呢?这里原创 2016-08-16 21:46:19 · 964 阅读 · 2 评论