java面试题总结
1、JDK和jre的区别?
JDK--- 是一种工具,提供了各种编译运行工具,从jdk的安装路径可以看出,jdk包含jre
JRE---是java虚拟机,它为java运行提供了环境
JRE和JDK安装到路径中的jre是不同的,这里的jre是开发java项目的
环境变量设置
CLASSPATH: JAVA虚拟机的内加载路径
2、如何利用JDK来开发编译java程序??
JDK是一个基础的开发包
如何编译java文件
javac HelloWorld.java
运行java文件
java HelloWorld
3、CLASSPATH对于java开发的作用是什么??
配置java类加载的地方,一般在【环境变量】里面进行设置,这样在cmd中执行编译、运行java程序就可以找到类正确的路径了
主要是为java提供一个类搜索路径
4、用动态命令来设置classpath?
c:\> javac -cp c:\java HelloWorld.java
c:\> java -classpath c:\java HelloWorld
5、什么是jvm及其运行原理(运行机制)?
jvm-- java虚拟机,是用软件模拟出硬件的效果,它只是认识.class文件---即字节码文件
大家都知道java语言是跨操作系统平台,这是为什么呢,它还是java虚拟机的功劳,对于不同的操作平台java虚拟机都会把java语言生成计算机读懂的机器指令。在任何操作系统
中java虚拟机的功能都是一样的。java语言写的源程序通过java编译器,编译成与平台无关的‘字节码程序’(.class文件),然后在OS之上的JAVA解释器重解释执行,而JVM是java
的核心和基础,在java编译器和os平台之间的虚拟处理器。
6、java虚拟机为什么不用delete去掉堆栈中不要的变量?
因为java的垃圾回收机制,自动去掉不被引用的变量,释放内存
7、如何把一个java文件归档(打包成jar)?
cmd命令框
c:\>jar ---查看帮助文档
打包:将HelloWorldl.class打包成hello.jar
c:\>jar cvf hello.jar HelloWord.class
8、变量
static 修饰的变量 --- 充当着全局变量的范围
局部变量 --- 函数里面定义的变量 or 参数
成员变量 --- 类变量
public static void main(String[] args){
int b ; error
if(false){
int b;//在内部的变量能够看到外面的b变量,但是外面定义的变量看不到里面的
}
int b;//在这里就可以
}
9、java变量是哪两种大的类型??
1)基本数据类型(值类型)
2) 引用数据类型
10、包装类
好处: 便于传递参数,都是传递同一类型Object,然后到方法里面再转换成各自需要的类型
byte b = (byte)1;// 8 字节 Byte
boolean bool = false;// 8字节 Boolean
short s = (short)1; // 16字节 Short
char c = 'a'; // 16字节 Character
int i = 1; // 32字节 Integer
float f = 1.0f; // 32字节 Float
long l = 1L;// 64字节 Long
double d = 1.0; //64字节 Double
Integer inte = Integer.valueOf(i);
i = inte.intValue();
11、java的装箱和拆箱
jdk 5.0 ----> 自动装拆箱
12、== 和equals的区别
for example:
Integer a =10000;
Integer b = new Integer(10000) ; //开辟了全新的空间区域
System.out.println(a==b); false
System.out.println(a.equals(b)); true
== 在存储空间中的引用的地址是不是同一块地址
equals object类重写的方法