1、简述面向对象和面向过程的区别和联系?
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
2、对象和类的关系是?
类是抽象的,对象是具体的,是类的实例。
3、栈的特点是?存放什么内容?
先进先出。
4、堆的特点是?存放什么内容?
堆内存有内存地址,都是将内存的地址赋值给引用变量
堆内存变量无用后由垃圾回收机制回收;
堆内存会自动初始化;
堆内存存放引用数据类和new出来的
5、【上机】画出如下程序的内存结构(课堂上的代码):
//测试类和对象 public class TestObject{ public static void main(String[] args){ Car c1 = new Car(); c1.changeColor("红色"); c1.showColor(); System.out.println(Car.tyreNum); System.out.println(c1.tyreNum);
Car c2 = new Car(); Engine e = new Engine(); e.speed = 1000; e.weight = 10; c2.engine = e; c2.color="黑色"; c2.tyreNum = 10; System.out.println(c1.tyreNum); } } class Car { static int tyreNum=4; Engine engine; String color; //char sequence :字符序列
void changeColor(String c){ color = c; }
void showColor(){ System.out.println("我的颜色是:"+color); } } class Engine{ int speed; int weight; } |
6、局部变量、成员变量、静态变量分别怎么声明?
局部变量:在方法或代码块中声明的变量
成员变量:在类中生命的变量称为 成员变量
静态变量:用static 修饰额成员变量,也叫类变量
7、局部变量使用之前,必须要手动初始化吗?
对
8、如果不手动指定成员变量的值,系统将会自动初始化。那么初始化的规则是?
整型初始化为0;
浮点型初始化为0.0
引用数据类型初始化为null;
boolean型初始化为false;
char 型初始化为\uoooo
8、成员变量从属于谁? 静态变量又叫什么以及从属于谁? 局部变量从属于谁?
成员变量从属于对象;
静态变量也叫类变量,属于类;
局部变量的从属于方法或者代码块
9、构造方法的作用是两个:一个构造类的对象,另一个作用是初始化对象的属性。这
种说法对不?
对
10、构造方法的名称必须保持跟类名一致吗?
必须一致
11、构造方法有没有返回值?详细用文字描述返回值问题。
构造方法没有返回值,也不能加void
12、构造方法如何被调用?
实例化对象的时候调用,new
13、构造方法中能不能有return语句?
不能
14、系统一定会给我们添加无参数的构造方法吗? 请详细解释。
没有构造方法的时候,java会默认添加无参构造方法
15、下面的代码有什么问题:
class Computer { int price; int type; String brand;
public void start(){ System.out.println("启动中...."); }
computer(int _price, int type, String _brand){ //this.price = price; price = _price; type = type; brand = _brand; } } |
当局部变量的名称与成员变量的名称相同时,使用this代表成员变量
16、【上机】设计一个类代表二维空间的一个点
17、【上机】设计一个类代表二维空间的一个圆。要求两个成员变量。一个是圆心,一
个是半径提供计算面积的方法。
18、【上机】为上述Cricle类添加一个方法,计算一个点(Point对象)是否在圆(Cricle
对象)内,并写程序验证
19、构造方法能不能重载?
可以
20、this在普通方法中,指的是哪个对象?在构造方法中,指的是?
this在普通方法中总是指向调用该方法的对象
this在构造方法中总是指向正要初始化的对象
21、static变量在内存中放置在哪个区? static变量和方法为什么被称为类变量和类方
法?可以被该类所有对象共享吗?
static 变量存在数据区
static修饰的归类所有,可以用类名调用
可以被该类所有对象共享
22、静态初始化块和main方法哪个先被执行?
静态初始化代码块先执行
23、一个构造方法调用另一个构造方法怎么调用? this(),这样的调用方式必须位于第
一句吗?
this()调用本类的无参构造方法
this(实参列表) 调用本类的带参构造方法
super(),super(实参列表)则是调用父类的;
this()调用必须位于构造方法的第一句
24、package的两个作用是什么?
解决类的重名问题,
方便类的管理;
25、增加package以后,我们在DOS下编译怎么做?
javac -d . Test.java
26、import是用于导入包还是导入类?
导包,也就是导入包中的类
27、import Java.util.*; 会不会降低程序运行速度?为什么?
因为只有在程序运行时用到了某个类时,才会加载它(且只加载一次),未用的类都不会加载,即类是动态加载的。因此不会影响运行速度。
28、import static 静态导入的作用是导入类还是导入类的静态属性和静态方法?
导入类的静态属性和静态方法
29、如果同时导入:Java.util.Date; Java.sql.Date; 在程序中怎么区分它们?
用包名加类名的形式来显示,例如:Java.util.Date表示Date
30、【上机】 完成this、static、package、import的测试代码
31、Javadoc注释怎么写?
/**开头
结尾*/
32、Java项目的API文档如何生成?请将步骤写出。
创建java源文件包。java文件都是存放在一个package包中,这样方便对java文件进行操作和区分,首先在磁盘上创建文件夹一样的方式创建package包。
创建java源文件。在包下,创建与文件名相同的java源文件,输入一些文档注释,这些文档注释用于自动的api文件进行说明使用。
进入java源文件目录。通过cd等windows命令进入java源文件包所在的磁盘位置。
查看javadoc命令使用说明。如果是第一次使用javadoc命令,可以通过javadoc -help命令查看javadoc使用说明。
开始创建api文件。使用命令输入javadoc -d javaapi -header 测试的API -doctitle 这是我的第一个文档注释 -version -author javadoc/Hello.java 进行文档生成。-d:文件存储位置; -head:文件头部名称; -version:显示版本; -author:显示作者; javadoc/Hello.java 处理的文件包以及java源文件.
查看生成的api文件。创建成功之后,就会自动创建指定的文件夹下生成api文件。打开index.html就是api文件的入口。
33、面向对象中的封装,追求的是“高内聚,低耦合”。解释一下,内聚什么?什么叫
耦合?
内聚就是一个模块内各个元素彼此结合的紧密程度,
高内聚就是一个模块内各个元素彼此结合的紧密程度高。
34、封装的几个关键字:private,default,protected,public的含义。
35、一般属性是否要设置为private?
是的,防止数据泄露和非法修改
36、如果属性设置为private,如何让外部访问该属性?
提供public的get方法
37、提供getter、setter方法的操作,Eclipse中如何实现?
source->Generate getter and setter
38、对于boolean类型的属性,提供的getter方法是:getXXX或是isXXX?
isXXX
39、Javabean就是只包含属性和相关getter、setter方法,不包含业务逻辑处理的类,
这种说法对吗?
javabean 既可以封装数据,也可以封装业务逻辑
40、继承的好处是什么?
一、类是对象的抽象,继承是某一批类的抽象
二、代码复用
41、Java中有多继承吗?C++中有多继承吗? 单继承相比多继承优势在什么地方?
java只有单继承,但可以实现多个接口;
c++有多继承;
单继承有利于系统维护,简化
42、【上机】模仿课堂上动物世界的例子,我们自己写个例子。
43、Java的继承使用哪个关键字实现?
extends
44、定义某个类时,如果没有使用extends,那么继承了哪个类?
Objective类
45、Java中,有没有多继承? 请说明,Java为什么取消了多继承?
没有。太难了
45、重写(override)指的是什么?
子类对父类 方法的重写
46、假如父类有main方法,子类能不能继承?
子类不能继承父类的main方法,因为会造成死循环,最后导致栈内存溢出
47、Object是所有类的根类吗?是所有类的直接父类吗?
Object是所有类的根类。但不是直接父类
48、在哪里查看Object类的源代码?
jdk ->src
49、Object类中的toString方法能否被子类重写?请做测试。
可以
50、【上机】完成继承、Object相关的测试代码
51、super指的是什么?
直接父类
52、构造方法中,第一个话总是super吗?
不一定,也可以是this()
53、叙述一下,有继承结构时,构造方法的调用顺序?
结论:先执行父类构造函数,再执行子类构造函数
54、重写中,子类的返回值类型可不可以跟父类不完全一致?说出你的理由。
可以,可以相同也可以是子类
55、如何判断两个对象内容是否相同?重写equals(()有什么要求?
重写equals()
56、举一个现实的例子,说明多态。
57、多态的三个必要条件是什么?
继承、方法重写、父类引用指向子类对象
59、什么是向上转型?什么是向下转型?
向上转型:父类引用指向子类对象
向下转型:父类引用转化为子类对象
60、多态的常用使用场合有哪些?
父类做返回值,可以返回父类的任何子类对象,父类做形参,实参可以是父类的任何子类对象
61、Java的方法绑定采用动态绑定还是静态绑定?
对象象方法是动态绑定,静态方法、private、构造器、super的是静态绑定
62、final修饰变量、方法、类分别表示什么含义?
final修饰的变量是常量,不可改变
final修饰的方法不能被子类重写;
final修饰的类不能被继承
63、final修饰的方法能不能被重载?能不能被重写?
可以重载,但不能覆盖(重写)
64、String类能不能被继承?为什么?
不能,String类是final
65、包含抽象方法的类是抽象类吗? 抽象类一定包含抽象方法吗?
包含抽象方法的是抽象类,
抽象类不一定包含抽象方法,
注意:必须
66、抽象类中能不能有普通方法?能不能定义构造方法?
可以,可以
67、抽象类能不能被new出来?即抽象类的构造方法能不能被调用?
不能实例化,但构造方法可以被子类调用
68、接口中只能定义常量和抽象方法吗?
69、接口描述了现实世界中什么逻辑?
70、接口中的常量一定是public static final吗?抽象方法一定是public abstract吗?
是的
71、接口中能不能定义普通变量,普通方法?从设计接口的角度说明为什么这么做?
不能,接口就是制定规则的。
72、接口能不能被new?
不能
73、接口中有没有多继承?
有
74、一个类能不能实现多个接口?
可以
75、【上机】完成抽象类、接口的语法测试代码
76、【上机】使用接口,定义电子产品系统(智能手机、MP3、智能手表)。
77、如何对一个数组的多个对象按照不同的依据进行排序;
实现compareable接口或者comparator接口
78、模拟实现Comparable和Comparator接口;
79、GC指的是什么?写出英文全称。垃圾回收机制中,程序员能不能调用垃圾回收器?
80、System.gc()指的是什么意思?
运行垃圾回收器
81、finalize方法可以用来做什么?
82、通过两个事例描述C++,Java不同的内存回收机制。
一个自动,一个手动
很久很久以前,每家每户“自扫门前雪”,自己收垃圾。
现在,环保局的垃圾车自动收垃圾。
通过,这些例子类比Java和C++不同的回收机制及特点。