Java基础知识及面试题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java基础
1.什么是类?类是某一种事物的一般性的集合体,是相同的或相似的各个事物共同特性的一种抽象。
2.什么是对象?在面向对象概念中,对象是类的实例。对象与类的关系就像变量与数据类型的关系一样。
3.类的核心特性
封装性:类的封装性为类的成员提供公有的、缺省的、保护的、私有的等多级访问权限。目的是隐藏类中的私有变量和类中方法的实现细节。
继承性:类的继承性提供从已存在的类创建新类的机制,继承使一个新类自动拥有被继承类的全部可继承的成员。
多态性:类的多态性提供类中方法执行的多样性,有两种表现形式:重载和覆盖。
4.方法:对象中方法表达了对象所具有的行为。
5.属性:一个对象的属性是能够被外界或对象所处的环境所感知或操纵的数据或状态。
6.什么是Java?Java是一门易于编程的跨平台编程语言,同时又是一个开发、应用、执行和部署的平台。
7.为什么要有Java?Java与平台无关、一次编译处处运行、以及他的易于编程的特性。
8.Java开发程序的步骤?编写源代码(2)编译(3)执行
9.Java的环境变量
1)JAVA –HOME jdk的安装路径
2)CLASSPATH jvmclass字节码文件时的搜索路径
3)PATH 是系统的环境变量、命令的搜索路径
10.JVM :Java Virtual Machine 是一个逻辑的操作系统、它屏蔽了硬件和平台的信息、jvm能将字节码文件解释并执行、正
是这种独立执行的方式是Java 具有与平台无关的特性。
11.类的加载过程:类加载器加载字节码文件到存、jvm存数据区将对象状态放置在堆区、各线程使用的变量放在栈区、类的
特征放在方法区、然后进行字节码验证再执行。
12.常用的Java命令:Javac、java、javadoc、jar
13.类的语法与规
一个源文件只能有一个public的类
Public源文件可以有多个类定义
源文件名必须与public类名保持一致
包名必须放在第一行
包名可以有0个或1个但不能有多个
源文件如果带包的话最好存放在包结构对应的目录下
标识符程序语言用于标识变量名类名方法名的字符串就是标识符。
标识符必须字母下划线美元符开头大小写敏感。
类名要求首字母大写
方法名首字母小写每个单词首字母大写
常量名所有字母大写如果有两个或几个字母的联合用下划线连接
关键字:程序语言中、程序已经所有用户不能再使用的单词一般关键字都是小写
14 .数据类型:基本数据类型: 整型(byte、short、int、long)默认是int
浮点型(float、double)、默认是double
布尔型(boolean)、
字符型(char)
引用类型:类、接口、数组
15 .main()方法执行过程
1)先到方法区搜索student、如果搜索不到则去加载student的字节码文件
2)通过classpath查找对应的student字节码文件找不到就返回错误(ClassNotFound)
3)将字节码文件的二进制数据转换为class对象放置于方法区(class对象描述了student类的方法特征及静态成员等)加载完成
4)验证字节码文件
5)在堆区中划分空间放置student对象
6)在栈区放置应用类型变量stu 、stu指向student对象的地址
7)student对象存放了class对象的地址
8) 通过student stu引用类型变量的值找到student对象、通过student对象
存放class对象的地址找到对应的study()方法然后执行。
9)释放资源jvm运行结束
16 .基本类型和引用类型的区别
引用类型存放的是对象的地址、基本类型存放的是变量的实际值
引用类型变量可用指向复杂的数据结构
引用类型变量可使用“.”操作来访问它所指向的方法或属性
17 .表达式
运算符和操作数按照一定的规则组成的语句.
赋值运算符“=”
比较运算符“<”“>”“<=”“>=”
相等运算符“==”
位运算符~ :取反、^ :异或、| :或、& :与
逻辑运算符“&&”“||”
条件运算符a ?b :c
18. 变量的作用域
(1)类的成员变量:
静态成员变量:生命周期从类加载开始到类被卸载结束初始化后被放在方法区
实例成员变量:变量初始化放在堆区、生命周期从生成对象开始到对象被回收时结束(2)局部变量:方法或代码块中定义的变量、局部变量从栈区弹出结束、局部变量在使用前必须初始化(3)方法的参数
(4)异常的参数
19 .数组:是相同类型元素的线性集合是一个指向数组的引用对象
20. 集合框架
Iterator是一个迭代器接口
ListIterator继承自Iterator是子接口只能用于list接口
Collection是集合框架的顶层接口
List 有序可重复
ArrayList 实现了可变数组的数据结构
LinkedList 实现了双向链表的数据结构
Set 无序不可重复
HashSet 实现了无序不可重复
LinkedHashSet 有序不可重复(插入的顺序)
TreeSet 升序不可重复
Map 是一个key 、value 对映射
HashMap 按照key无序
LinkedHashMap 按照key 有序
TreeMap 按照key升序
Collections是集合框架的辅助类(工具类)里边的所有方法都是static的
Arrays是对数组的工具类
Comparable、Comparator是做比较排序的
21.Vector和ArrayList的区别:
1)Vector是线程安全的(同步的)ArrayList不是ArrayList的效率高一些
2)当初始容量满的时候Vector增加原来的一倍、ArrayList增加原来的一半
22.HashTable和HashMap的区别:
1)HashTable是线程安全HashMap不是HashMap的效率会高一些
2)HashMap允许null的key存在HashTable不允许
23.Set set=Map.keySet();
Iterator it=set.iterator();
While(it.hasnext()){
}
24.类的结构
类名、属性名(静态属性、实例属性)、方法(静态方法、实例方法)、构造器(缺省构造器、带参构造器)
静态代码块static、实例代码块this.
25 .参数传递
对于基本类型将实际的变量的值原样的赋值以便传值
对于引用类型将引用类型变量的地址赋值给实参
26.this关键字都在什么地方使用
1)实例变量与局部变量同名用this区分实例变量名与局部变量名
2)在构造器重载时、用this调用其它构造器
3)在实例方法中用来当作当前对象的引用传给其它方法
27.方法的重载
方法名要相同、在同一类中多个方法有不同的方法签名方法签名具有参数类型参数个数和参数顺序、返回类型不做要求28.类的初始化过程
1)在堆区分配空间new的过程
2)给对象属性赋默认值
3)调用构造方法进一步赋值
29.构造器
类中提供的用于初始化对象的特殊的方法、这个方法于类同名无返回值、类中没有提供构造器jvm会提供一个不带参的缺省构造器、类中有带参的构造器jvm就不提供了
30.详细说明封装、继承、和多态
封装:将类的实现细节隐藏起来、对外提供一致的接口、提高系统的维护性
继承:定义:一个类自动获得另一个类的属性或者方法的过程
使用方面:extends关键字、单根继承、所有类都是Object类的子类、构造器不能被继承、子类初始化时会默认情况下调用父类缺省的构造器、子类调用父类带参的构造器则父类可以不提供缺省的构造器否则一定要有
个缺省的构造器
如何使用继承?1)区分has -a 和is -a
2)子类要扩充父类的功能