基础知识
1、JVM、JRE和JDK的区别
JVM:Java虚拟机,用于保证Java跨平台的特性。
JRE:Java运行环境,包括JVM和Java核心类库。
JDK:Java开发工具,包括JRE和开发工具。
2、环境变量path和classpath区别
path是exe文件所在目录,用于指定DOS窗口命令的路径。
classpath是配置class文件所在的目录,用于指定类搜索路径,JVM就是通过它来找到class文件的。
3、变量有什么作用?为什么要定义变量?
变量用来存储数据。
定义变量可以不断地存取同一种类型的数据,并且可以不断地被重复使用。
4、&和&&的区别。
1)&不会发生短路,&&会发生短路。即使用&&时若第一个表达式可以判断出结果则不会在运算第二个表达式
2)&可以用来操作boolean类型以及操作数( 按为与:如2&3结果为1;5&9结果为1 ),&&只能用来操作boolean类型。
5、Java内存(大概)
程序计数器,虚拟机栈,堆,方法区,运行时常量池,本地方法栈。
栈内存:基本数据类型和引用数据类型的引用
堆内存:存放引用数据类型(对象和数组)。
在堆内存中产生了一个对象或数组后,还能在栈内存中定义一个特殊的变量,这个变量等于对象或数组在堆中的首地址,这个变量就叫做引用变量。可以通过引用变量来访问该对象或数组。
6、数据类型(四类八种)
整数类型:long(8字节)、int(4字节)、short(2字节)、byte(1字节)
浮点数类型:double(8字节)、float(4字节)
字符类型:char(2字节)
布尔类型:boolean(1字节)
基本数据类型和包装类型区别
1、声明方式不同。基本数据类型直接定义,包装类型new。
2、存储方式和位置不同。基本数据类型直接定义后存储在栈内存中,包装类型存储在堆内存中。
3、初始值不同。如int为0、boolean为false,包装类型为null。
4、使用方式不同。基本类型直接使用,包装类型使用泛型时使用。
7、类型转换
精度从高到低排:double、float、long、int、short、byte
高精度—>低精度:强制类型转换(可能会损失精度)
低精度—>高精度:自动类型转换
8、继承
多个类拥有相同的属性和方法时,可以将这些属性和方法抽取出来组成一个新的类,那么这些类就无需再声明这些属性和方法,直接继承这个类即可。
实现继承(单实现):直接使用父类的属性和方法无需重写(也可以重写)
接口继承(多继承):继承接口必须实现接口中的方法。
9、封装
把客观事物封装成抽象的类,并且可以隐藏类中的属性和实现细节,只向外部提供公共访问的方式。
10、多态
类实例的同一个方法在不同情形下产生不同的效果。
前提:要有继承,要有方法的重写,父类或接口的引用要指向子类。
11、重载
同一个类中允许出现多个重名函数,前提是这些函数的参数类型或数量不一样。
特点:与返回值类型无关,至于参数类型或数量有关。
好处:方便阅读,优化了程序设计。
12、自动拆箱、装箱
一个变量声明为包装类型赋值为基本类型时会自动装箱。
一个变量声明为基本类型赋值为包装类型时会自动装箱。
//java文件
Integer a = 100;
int b = a;
//class文件
Integer a = Integer.valueOf(100);
int b = a.intValue();
已经有了基本类型为什么还要包装类?
- 方便对现实事物对象化。如把年龄设为int当某个人没出生时设为0感觉不是太好,设为Integer类型没出生设为null即可。
- 为泛型提供了支持。
- 提供了丰富的属性和API。