# Java面试复习准备

Java面试复习准备(一)

一、基本知识

1、JVM、JRE和JDK的区别:

-**JVM(Java Virtual Machine):**java虚拟机,用于保证java的跨平台的特性。JVM上执行的代码都存放在.CLASS文件中。JVM只执行字节码文件。java语言是跨平台,jvm不是跨平台的。
JRE(Java Runtime Environment):java的运行环境,包括jvm+java的核心类库。
JDK(Java Development Kit):java的开发工具,包括jre+开发工具

2、环境变量path和classpath的作用是什么?

(1)path是配置Windows可执行文件的搜索路径,即扩展名为.exe的程序文件所在的目录,用于指定DOS窗口命令的路径。
(2)Classpath是配置class文件所在的目录,用于指定类搜索路径,JVM就是通过它来寻找该类的class类文件的。

3、什么是变量?变量有什么用?为什么要定义变量?什么时候用?变量两个要素?

变量的定义:内存中一块独立的存储区域
变量的作用:用来存储数据。
为什么要定义变量:用来不断的存放同一类型的常量,并可以重复使用
变量的两个要素:数据类型 变量名

注意:

  1. 变量必须要定义
  2. 相同区域不能定义相同的变量

4、什么是包?

简单说就是文件夹,可以把包看作是管理类文件的文件夹,使用原因是项目越来越大,文件和类越来越多。使用包的好处也很明显:
第一 :当Java源文件多时,可以通过声明包的形式分类存放,这样有**利于查找**;
第二 :当有Java源文件同名时,通过使用声明包的形式存放,这样也可以**避免同名冲突**。

5、&和&&的区别?

(1)&&会出现短路,如果可以通过第一个表达式判断出整个表达式的结果,则不继续后面表达式的运算;只能操作boolean类型数据;
(2)&不会出现短路,将整个表达式都运算。既可以操作boolean数据还可以操作数。

6、标示符命名规则:

由数字(0-9),大小写英文字母,以及_和$组成。
不能以数字开头。
不能使用关键字。
不要出现中文。
不能出现空格
严格区分大小写。

7、数据类型

1)基本数据类型(4类8种):
整数类型

整数类型长度
byte8位
short16位
int32位
long64位
浮点数类型长度
float32位
double64位
字符类型
char16位
布尔类型长度
boolean(ture false)1位

2) 引用数据类型:SUN公司和其他程序员为简化开发所创造的新的数据类型

类class
Object :Object是一个很重要的类,Object是类层次结构的根类,每个类都使用Object作为超类,所有对象(包括数 组)都实现这个类的方法。用Object可以定义所有的类
如:

    Object object= new Integer(1); //来定义一个Interger类 
Integer i=(Integer) object; // 在来把这个Object强制转换成Interger类
  String类代表字符串,Java 程序中的所有字符串字面值(如"abc")都作为此类的实例来实现。检查序列的单个字符、比较字符串、搜索字符串、提取子字符串、创建字符串副本、在该副本中、所有的字符都被转换为大写或小写形式。 

Date :Date表示特定的瞬间,精确到毫秒。Date的类一般现在都被Calendar 和GregorianCalendar所有代替 

Void :Void 类是一个不可实例化的占位符类,它保持一个对代表 Java 关键字 void 的 Class 对象的引用。 

同时也有对应的Class如:Integer  Long  Boolean  Byte  Character  Double  Float   Short 

接口interface

数组array

8、类型转换

精度从高到低 double float long int short(char) byte
(1)自动类型转换 将一个低精度—高精度
double a = 12;
(2)强制类型转换 将一个高精度—低精度(精度会下降)
int b = 12.8;

9、java语言的三种技术架构

J2EE:企业版

是为开发企业环境下的应用程序提供的一套解决方案。
该技术体系中包含的技术如 Servlet、Jsp等,主要针对于Web应用程序开发。
J2SE:标准版
是为开发普通桌面和商务应用程序提供的解决方案。
该技术体系是其他两者的基础,可以完成一些桌面应用程序的开发。比如Java版的扫雷。
J2ME:小型版
是为开发电子消费产品和嵌入式设备提供的解决方案。
该技术体系主要应用于小型电子消费类产品,如手机中的应用程序等。

10、java的跨平台性:

通过Java语言编写的应用程序在不同的系统平台上都可以运行。
跨平台的原因:
只要在需要运行java应用程序的操作系统上,先安装一个Java虚拟机(JVM Java Virtual Machine)即可。
由JVM来负责Java程序在该系统中的运行。

11、有符号数据的表示法(次重点)

原码,反码(原码取反),补码(反码+1)。

12、自增自减(i++和++i)

相同点:i++和++i表达式中变量i的值都会加1
不同点:i++表达式的值是i本身
int i =20;
int sum = i+++++i+i++;
//第一个 i= 20,i++=20,i=21
//第二个 i= 21,++i=22,i=22
//第二个 i= 22,i++=22,i=23
sum = 64;

13、条件运算符

int c=a>b?a:b;

12、方法(函数)

  • 定义:方法(函数)就是定义在类中的具有特定功能的一段独立小程序。 特点:定义函数可以将功能代码进行封装 便于对该功能进行复用
    函数只有被调用才会被执行 函数的出现提高了代码的复用性
    对于函数没有具体返回值的情况,返回值类型用关键字void表示,那么该函数中的return语句如果在最后一行可以省略不写。 方法三要素:返回值类型 方法名 参数列表

13、形参和实参

  • 形参:方法中的参数,只有调用该方法,系统才会给方法中的参数开辟空间,用来接收调用端传递过来的参数(实参)的值。
    实参:真实存在的参数调用,调用方法时把参数传给形参。
    注意:方法结束调用后,形参释放存储空间,实参依然存在。

14、 重载与重写

重载概念:在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。
特点:与返回值类型无关,只看参数列表(参数类型以及参数个数)。
好处:方便于阅读,优化了程序设计。
重写(覆盖):如果在子类中定义一个方法,其名称、返回值类型和参数列表正好与父类中的相同,那么,称为方法覆盖或方法重写。
被覆盖的方法在子类中只能通过super调用。
方法覆盖的原则:

  1. 覆盖方法的返回类型、方法名称、参数列表必须与原方法的相同。 覆盖方法不能比原方法访问性差(即访问权限不允许缩小)。

  2. 覆盖方法不能比原方法抛出更多的异常。 被覆盖的方法不能是final类型,因为final修饰的方法是无法覆盖的。

  3. 被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。
  4. 被覆盖的方法不能为static。如果父类中的方法为静态的,而子类中的方法不是静态的,但是两个方法除了这一点外其他都满足覆盖条件,那么会发生编译错误;反之亦然。即使父类和子类中的方法都是静态的,并且满足覆盖条件,但是仍然不会发生覆盖,因为静态方法是在编译的时候把静态方法和类的引用类型进行匹配。

变量的隐藏:子类定义的一个属性和父类定义的一个属性名称一致,子类新定义的属性会覆盖父类继承的属性。

覆盖和重载的不同
方法覆盖要求参数列表必须一致,而方法重载要求参数列表必须不一致。
方法覆盖要求返回类型必须一致,方法重载对此没有要求。
方法覆盖只能用于子类覆盖父类的方法,方法重载用于同一个类中的所有方法(包括从父类中继承而来的方法)。
方法覆盖对方法的访问权限和抛出的异常有特殊的要求,而方法重载在这方面没有任何限制。
父类的一个方法只能被子类覆盖一次,而一个方法可以在所有的类中可以被重载多次。

15、数组

概念:同一种数据类型的集合。
好处:可以自动给数组中的元素从0开始编号,方便操作这些元素。

16、内存

栈内存:用于存储局部变量,当数据使用完,所占空间会自动释放。
堆内存:数组和对象,通过new建立的实例都存放在堆内存中。
方法区:静态成员、构造函数、常量池、线程池
本地方法区:window系统占用
寄存器:

17、ArrayList和Vector的区别,HashMap和Hashtable的区别

答:就ArrayList与Vector主要从二方面来说.
一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的 二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半
二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的
三.值:只有HashMap可以让你将空值作为一个表的条目的key或value

目录

[TOC]来生成目录:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值