第一章
1.
Java最大的特点就是可以运行在不同的平台环境上。
2.
Java 编写一次,运行!
3.
Java 是架构中立的。
4.
Java版本分为:JSE标准版; JEE企业版; JME 小型设备版。
5.
Java和C++的区别:(-3+1)去除指针、去除多重继承、去除运算符重载; 添加自动内存分配和回收机制。
6.
Java的面向对象特性包括:封装、继承、多态。
7.
Java 分布式:Java 中的网络编程就像从文件发送和接收数据一样简单。
8.
Java的健壮性:异常处理机制、内存管理的自动垃圾收集处理。
9.
Java安全性:不支持指针和沙箱运行模式(Java程序的代码和数据在一定的空间中执行)
10.
Java解释和执行:代码被编译成JVM字节码,字节码的执行不依赖于硬件配置。 这是Java能够在不同平台上运行的基础。
11.
javac 名称.java 名称.class java 名称
12.
javac 是编译命令 java 是解释执行命令
13.
一个程序最多只能有一句话,并且只能放在第一句中。
14.
可选,必须放在所有类定义之前。
15.
JVM是运行java字节码的机器。
第二章
1.Java使用字符集,16位,支持大部分字符集。
2.Java标识符不能以数字开头,名称与大小写有关。
三、标识符的使用习惯: 1、名称首字母大写; 2、动名词和动词首字母小写,名字首字母大写; 3、常量全部大写; 4、变量首字母小写,其余大写。
4、Java数据类型:8种基本类型:byte、short、int、long、float、char、; 3种扩展类型:类、数组。
5.Java中逻辑类型和整数类型不能直接转换。
6.Final修饰的符号常量,它们的值在赋值后不能改变。
7、类成员变量自动赋初值,局部变量不赋初值报错,作为类成员的引用自动赋NULL。
8、Java中取消运算符:->、*、&,其中三个与指针有关。
9. 基本类型赋值在栈上; 引用类型分配在堆上; 引用本身位于堆栈上。
10、直接引用时,用=来比较地址。 要比较对象的实际内容,请使用 equal() 方法。
11. Java中逻辑运算符&& || 有短路掩码,但位运算符 & | 才不是。
12、自动类型转换:低精度到高精度; 高精度到低精度需要强制类型转换。
13.Java是一种结构化编程语言:顺序结构、选择结构、循环结构。
14. -case 中只能使用整数、字符和枚举类型。
15.break跳转到最新的}之后; 跳出当前循环进入下一个循环。 为while时,直接判断条件。 For还需要进行自增操作。
16、break和Label的区别:break跳转到Label,跳过最近的{}; 跳转到 Label 并输入 {}。
17.返回类型不是void,必须执行并且只执行一次。
18. 返回结果和控制。
第三章
1.类变量、实例变量、类方法、实例方法。
2. 可以使用类名和实例名来访问类变量和类方法。
3. 强度变量和实例方法只能使用实例名称来访问。
4、类方法中只能访问类变量,类方法中不能包含this和super指针。
5.访问权限:,,包(默认),。
6.:1个自用; 2 个子类别; 3 个在同一包中使用。
7、不同访问权限的访问个体包括:1类; 2包; 3个子类别; 不同包中的 4 个非子类别。
8、构造函数是与类同名的特殊方法,无返回类型,通过new()调用。
9、Java中没有析构函数,系统自动收集垃圾。 对于没有通过new()申请的空间,使用终结方法()
10、对象声明(标识符); 实例化(使用new分配空间); 初始化(赋值)。
11.栈:基本类型和对象引用堆:所有Java对象,new产生的数据。
12、类成员的初始化顺序:1个静态成员; 2个复合对象成员; 班级本身的其他 3 名成员。
13. 静态成员仅初始化一次。
14.Java包有一定的级别,对应于外部存储上的目录结构。 同一包中不能有相同的类名。
15、当程序中没有语句时,放入默认包中。
16、一个编译单元只能有一个公共类,公共类名与文件名相同,也可以有多个支持类。
17、当两个导入的包中存在同名的类时,使用时使用全名来区分。
18、使用类库中的类导入包时,使用全名引用; 对于自定义包,请使用 java + 类名。
19.java.lang 自动加载默认包:基础数据封装类、数学函数、字符串、线程等。
20.java.util工具库:日期、日历、堆栈、向量、集合、哈希集。
21、Class:在lang包中,所有类的基类,定义了所有类应该具有的公共函数。
22、Class:在lang包中,无法实例化,所有方法都可以直接引用,与系统属性相关。
23. Math类:在lang包中,静态方法没有声明为实例。 Math.PI 和Math.E 是常用的。
24、Class:在lang包中,字符常量在创建时没有new时从栈引用到常量池(不重复); 使用 new 创建时可以重复它们。 剪掉中间部分并修剪以去除两端的空间。
25.,:对于经常需要修改的字符串,它比 更高效,在线程上是安全的,并且比大多数实现过程更快。
26、相当于字符中的常量。 只要值改变,内存空间就改变。
27.中的方法:追加、插入、删除、反转。
第四回
1. () 函数,该函数在所有非基本类型中都可用。 当不被覆盖时,默认输出是对象的内存地址。
2.组合:黑盒复用,依赖少,高效动态。
3、继承性:白盒复用、高粘度、易维护、破坏封装。
4、优先考虑组合。
5.super必须出现在构造函数的第一行。
6、重写:子类修改父类已有的方法(覆盖)。 重写的方法名称、返回类型、参数类型必须完全相同,并且重写的方法不能有更多限制性的访问权限。 这种情况发生在多个状态中没有新检测到的异常。
7、重载:同一个类中同名但参数列表不同的方法只能通过参数列表进行重载,不能通过访问权限、返回类型、抛出异常等方式进行重载; 重载可以有不同的返回类型、访问权限和异常。 ,但不作为超载的标志。
8. 抽象类 抽象类不能被实例化。 如果类中有抽象方法,函数声明后有{}则执行class a1{void test();}。
9. 构造函数、静态方法和final方法不能被修改。
10.接口默认为抽象类。 事实上,接口是一个抽象的抽象类。
11、final类不能被继承,因此final类中的成员函数没有机会被覆盖,默认是final的。
12. Final方法:如果一个类不允许其子类重写某个方法,则将该方法声明为final。
13、将类方法声明为final、编译时绑定、静态绑定效率更高。
14.最终变量→常量。 被修改成员的值一旦给出,就不能更改:静态变量、实例变量和局部变量。
15.最终变量可以自动分配默认值。
16.this() 该类的构造函数 this。 此类的变量或方法
Super() 超类 super 的构造函数。 超类的变量或方法
16.
当子类和超类有同名变量时,用this和super来区分。
17.
向上转型:子类转型为超类; 超类的引用指向子类的对象。
18.
超类的引用不能调用: 1. 子类中定义但超类中未定义的方法; 2. 被子类重写的方法。
19.
只有子类类型的引用可以分配给超类类型的引用。
20.
每个类实例对象都带有一个虚函数表,其中存储了指向虚函数的指针。
21。
只有超类和子类中同时存在的方法才会导致多态动态绑定问题。
22。
重写的重要特点:除了功能实现外,其他部分相同; 覆盖范围:只有相同的情况下才能覆盖。
23。
Java中的所有成员方法都包含在虚表中,而在C++中只声明了虚函数。
24。
动态绑定和静态绑定的适用条件::、final、构造函数。
25.
在动态绑定的过程中,对象首先在实际类型的虚表中进行匹配。 如果找不到,则追溯到其基类的虚表。
26.
this 指针始终指向实际类型。
27.
动态绑定指的是成员方法,而成员变量总是静态绑定的。
28.
如果要动态调用变量成员,请将变量成员封装在方法中并返回它们。
29.
就是覆盖,同名方法只有一个; 重载就是并行,哪个参数匹配哪个就调用哪个。
30.
多态的实现有三种方式: 1. 继承实现; 2.抽象类实现; 3.接口实现。
31.
接口中只有常量和抽象方法。
32.
Java接口中的成员变量默认是final类型的。 这些关键字可以省略,但必须初始化。
33.
Java接口中的方法默认都是类型,不能有方法体或实现。
34.
抽象类和接口的区别:抽象类可以有现实的方法,但至少有一个方法必须是抽象的; 接口中的所有方法都必须是抽象的。
35.
Java接口只能包含final成员变量和成员方法。
36.
接口继承接口,类实现接口,类继承类。
37.
Java接口必须通过类来实现。
38.
当一个类实现了一个接口,当所有的方法都没有写出来的时候,该类就应该被声明为抽象类。
39.
不允许创建接口实例,但允许对已定义接口的引用指向实现该接口的类实例对象。 (类似于向上转型)
40.
抽象类只能在继承体系中实现,而接口可以任意实现。
41.
接口中的常量可以是不定常量,其值在第一次访问时建立,此后保持不变。
42.
内部类的访问控制符号有:、、、、嵌套内部类。
43.
创建非静态内部类时,一定要先创建其对应的外部类对象。
44.
.=.new()
45.
创建嵌套类对象时,无需创建其外部类对象。
46.
.=.new()
47.
静态内部类不能访问外部类的非静态成员。
48.
局部内部类:定义在方法或语句块中。
49.
当局部内部类访问外部类的局部变量时,它只能访问最终类型。
50.
局部内部类的访问优先级:内部类>外部类>局部final变量。
51.
内部类的作用:实现权限和权限的更小级别的封装。
52.
内部类一般与接口结合使用,可以更好地实现多重继承。
53.
匿名内部类:new 接口 name(){} new 超类 name(){}
54.
内部类编译时生成的.class文件$.class
匿名内部类$#.class#是一个数字,从1开始,每生成一个,数字就加1。
55.
在内部类中调用 this 与返回外部类时调用 new 的区别在于,this 获取的是创建内部类的外部类对象的引用; 而 new 创建一个新的引用。
56.
当存在内部类的实例作为外部类的成员时,构造外部类时,首先创建内部类的成员实例,然后再创建外部类实例的其他成员。 (相当于组合关系)
57.
当外部类的内部类被另一个类继承时,超类的构造函数将在子类的构造函数中调用外部类的实例。 。极好的()。
58.
一般来说,super() 调用默认为类名中的构造函数。
59.
类子 {super();}
60.
类儿子.{.super();}
更多名企笔试题解析、面试经验交流、招聘信息推荐,尽在牛客!
找工作之前,先去牛客吧! 立即下载并获取优惠!
牛客APP下载_C++Java前端经典笔试面试题库_牛客网
第五章
1.AWT:重量级控制:依靠本地方法实现功能,在不同平台上不统一。
2.Swing:轻量级控件:提供了AWT的所有功能,并对其进行了极大的扩展。
3. 在Swing中,除了 、 、 、 之外,都是轻量级控件。
4.在AWT中,在Swing中; 其他名称类似。
5.Java采用向容器添加组件的方式来构建图形界面,通常使用顶层容器作为所有组件的载体。
6.容器可以完全嵌套。
7、GUI组件分为:容器类、控件类、辅助类。
8.常用组件及相关功能
(窗口):,,,tion,
(按钮):,,,
(标签):,,,上
(文本框):,,
(单选按钮); (对话框); (文件对话框); (组合框):(文本字段),JMenu(菜单)。
9.布局管理:()中有一个方法
10. 不同的布局方式包括:;;
11. 是的,默认布局。 组件分为东、西、北、南、中5个区域。
12.添加(位置,组件)
13.顺序布局:从左到右,从上到下,
14. 网格布局:组件在网格中从左到右、从上到下排列。
15、事件处理:1个事件; 2源事件; 3 事件处理程序。
16、事件处理步骤: 1、注册事件监听器; 2、外部作用于事件源; 3.生成事件对象; 4、将事件对象传递给事件处理器; 5. 事件处理器对其进行处理。
17、定义监听器:,用new创建监听器对象,注册监听器add***()
18.监听器的实现有三种方式: 1.实现→注册→现实; 2、内部课程; 3、匿名内部类的实现。
19、GUI编程中用到的三个包:java.awt.*; javax.swing.*; java.awt.event.*。
20.适配器::适配器的必要性:接口中有很多抽象函数,不现实。 当要使用其中一项功能时,所有功能都需要真实,这带来了不便; 适配器实现所有方法,但不执行任何操作。 可以继承然后只写你想用的方法而不用担心其他方法。
21、适配器是接口和类之间的过渡产品,省去了很多实现上的麻烦。
第六章
1.异常的分类:处理后可以恢复正常,无需中断现有程序; 如果无法恢复,则必须中断当前程序并退出。
2.常见异常:数学异常、内存溢出异常、空指针异常、离子下标边界异常。
3. JVM抛出错误。
4、异常分为检查异常和非检查异常: 1、非检查异常(编译器可以处理):不需要程序员处理。 它们最终可以从 main() 中抛出并与 () 一起使用。 它们一般是逻辑错误,包括Error及其子类; 2 检查异常:迫使程序员检测并处理它们。
5、异常处理方法: 1、使用try-catch-结构捕获并处理; 2. 逐层向上抛出异常,直至转入JVM处理。
6、当有多个catch块时,只会匹配其中一个异常类,并执行catch代码。 catch匹配的顺序是从上到下。
7、无论try语句块中是否发生异常,该语句块都必须被执行。
8、try-catch-这三个语句块不能单独使用。 它们可以由三种结构组成:try-catch-、try-catch 和 try-。 catch 块可以有多个,但只能有一个。
9. try-catch-block中的变量作用域在语句块内,并且它们不能独立访问彼此。
10、当catch块的参数有父子关系时,子类在前,父类在后。
11.返回类型+函数名+形参列表+{}
12.异常传递链:不进行处理或执行。 该方法在抛出异常的地方退出。 如果不想终止该方法,请使用 try 捕获异常。
13. 在构造函数中使用 super() 来调用具有自定义异常的类构造函数。
14、声明方法时,放在方法中,扔到方法体中,放在具体的中。
15、如果抛出的异常没有被处理,就会沿着函数向上抛出。 从main函数中抛出后,会被JVM处理。 这时可以调用()打印异常的位置、类型等信息。
第七章
1、Java中数组的下标是从0开始编号的,数组中除了元素之外,只有可访问的属性。
2.数组声明:type[]数组名 type[]数组名[]表示数组类型
3、数组的初始化:静态初始化、动态初始化。
4、静态初始化:[]中没有数字,每个元素的值都是显式给出的。
5、动态初始化:如果[]中有数字或变量,使用关键字new,可以为数组中的每个元素自动赋值。
6、new申请空间时,是在堆上的,可以自动在堆上分配。
7、对象数组的初始化:type[]数组名=new type{new ()…}
8、对于大数组或者对象数组,一般结合循环语句来赋值。
9.多维数组:n维数组存储对n-1维数组的引用。
10、不规则数组:数组元素引用的数组长度不相等: 指一维数组的长度; 人工智能]。 指对应维数组的长度。
11.数组是一种特殊的对象,数组名存储了对对象的引用。
12. 数组名本质上是一个引用,因此可以用作参数。
13.数组工具类:,类功能:复制数组中的值; 按升序排序; 找到具体的值; 判断两个数组是否相等。
14.对象比较接口:int(o)
整型(o1,o2)
15、当类使用sort来比较大小时,会自动调用该方法来比较大小。
16. 枚举:有限的、不可变的值集合。
17、枚举类型变量只能存储声明时给出的枚举值。
18.数组:静态容量,容量从一开始就确定了。
19. 类集具有动态容量:有两个子集: 1. 列表对象是有序的,允许重复; 2. Set是无序的,不能重复。
20.Map映射:键值对,键唯一,值可以重复。
21.列表:(按顺序,下标索引)
22.List l=new(),改变集合类型时代码不需要改变。 它类似于引用实现它的类的接口。 当使用特定于类的方法时,不能使用接口定义,而应使用特定的类。
23、数组内部维护了一个类型的数组; 内部维护一个带有头节点的双向链表。
24. 可以使用 轻松构建堆栈和队列。
25、泛型,C++中的一个模板,声明泛型时,使用尖括号指定类型参数,应用时用具体类型填充类型参数。
26.泛型:类模板、函数模板。