您的位置  > 互联网

Java与C++的区别,你知道几个?

第一章

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.泛型:类模板、函数模板。