Java面试题(三)
2022/5/11 9:23:56
本文主要是介绍Java面试题(三),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.冒泡排序代码
简单的排序算法
依次比较两个相邻的元素,
原理如下:
- 比较相邻的元素
- 从开始第一对到结尾的最后一对。
- 针对所有的元素重复以上的步骤,除了最后一个。
以下就是一个冒泡排序
public class Test { public int[] sort(int[] a){ int t=0; for (int i = 0; i < a.length-1; i++) { int f=0; for (int j = 0; j < a.length-i-1; j++) { if (a[j+1]>a[j]){ t=a[j]; a[j]=a[j+1]; a[j+1]=t; f=1; } } if (f==0){ break; } } return a; } public static void main(String[] args) { Test test = new Test(); int[] a={2,5,1,6,4,9,8,5,3,1,2,0}; int[] b=test.sort(a); for (int n:b) { System.out.print(n+" "); } } } //结果:9 8 6 5 5 4 3 2 2 1 1 0
2.选择排序的代码
简单直观的排序算法
每一次从待排序的数据元素中选出最小 (或最大)的一个元素,存放在序列的起始位置
public class Test007 { public int[] sort(int[] a){ //1.假设第一个下标值为最小值 int t=0; for (int i = 0; i < a.length-1; i++) { int minindex=i; //2.第一个和第二个值比较,如果第二个值小于第一个值,则下标换成第二个值的下标 for (int j = i+1; j < a.length; j++) { if (a[minindex]>a[j]){ minindex=j; } } //3.发现最小值不是最初的了 if (i!=minindex){ t=a[i]; a[i]=a[minindex]; a[minindex]=t; } } return a; } public static void main(String[] args) { Test007 test = new Test007(); int[] a={2,5,1,6,4,9,8,5,3,1,2,0}; int[] b=test.sort(a); for (int n:b) { System.out.print(n+" "); } } } //结果:0 1 1 2 2 3 4 5 5 6 8 9
3.插入排序的代码
在一个已经排序好的数组中插入一个数,插入之后仍然保持有序
新的排序方法——插入排序法
public class Test007 { public int[] sort(int[] arr) { if (arr == null || arr.length < 2) { return arr; } for (int i = 1; i < arr.length; i++) { //内层循环依次减少并提出结果 for (int j = i; j > 0; j--) { //如果当前数字小于前一个,则交换,否则不变 if (arr[j] < arr[j - 1]) { int temp = arr[j]; arr[j] = arr[j - 1]; arr[j - 1] = temp; } else { break; } } } return arr; } public static void main(String[] args) { Test007 test = new Test007(); int[] a = {2, 5, 1, 6, 4, 9, 8, 5, 3, 1, 2, 0}; int[] b = test.sort(a); for (int n : b) { System.out.print(n + " "); } } } //0 1 1 2 2 3 4 5 5 6 8 9
4. 可变参数的作用和特点
可变参数
- 形式 ...
- 只能是方法的形参
- 对应的实参可以0,1,2.....n个,也可以是一个数组
- 如果定义了可变参数的方法,不允许同时定义相同类型数组参数的方法
数组做形参和可变参数做形参联系和区别
联系:
- 实参都可以是数组
- 方法体中,可变参数本质就是当做数组来处理
区别:
- 个数不同 可变参数只能有一个数组参数可以多个
- 位置不同 可变参数只能是最后一个 数组参数位置任意
- 实参不同 可变参数实参可以0,1,2.....个,也可以是一个数组,数组的实参只能是数组
private static int sum(int... values) { int sum = 0; for (int i = 0; i < values.length; i++) { sum += values[i]; } return sum; }
5.类和对象的关系
类是对象的抽象,而对象是类的具体实例
人类就是一个概念
小明就是一个具体的人,也就是实例
还可以有小红,小蓝等具体的人即对象,但他们都是人类的实例,即类.
7.面向过程和面向对象的区别
比喻:
面向过程是蛋炒饭,面向对象是盖浇饭
盖浇饭的好处就是“菜”“饭”分离,从而提高了制作盖浇饭的灵活性。饭不满 意就换饭,菜不满意换菜
蛋炒饭就不 行了, 如果不满意就要丢掉重做
区别:
- 编程思路不同
- 封装性:都具有封装性,但是面向过程是封装的是功能,而面向对象封装的是数据和功能
面向对象具有继承性和多态性
8.方法重载和方法重写(覆盖)的区别
方法重载(overload):一句话”方法名字相同,而参数列表不同“
方法重写(override):子类继承父类的方法进行编写,但是不允许更改此方法的参数列表。子类根据需求定义。
重写与重载直接的区别
重载
- 发生在一个类中
- 对返回权限没有要求(但在开发中会保持一致)
- 对返回值没有要求(但在开发中会保持一致)
- 表示重载的单词是 overloading
重写:
- 发生在继承中(子类和父类)
- 子类不能拥有比父类更小的访问权限
- 如果子类和父类访问权限一样则返回值必须相同
- 表示重写的单词是 override
9.this和super关键字的作用
this:
this是对象内部指代自身的引用,同时也是解决成员变量和局部变量同名问题;this可以调用成员变量,不能调用局部变量;this也可以调用成员方法,但是在普通方法中可以省略this,在构造方法中不允许省略,必须是构造方法的第 一条语句。而且在静态方法当中不允许出现this关键字。
super:
super可以调用直接父类的成员方法(注意权限修饰符的影响,比如不能访问private成员);super可以调用直接父 类的构造方法,只限构造方法中使用,且必须是第一条语句。
若存在侵权,请联系,谢谢!
这篇关于Java面试题(三)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现
- 2024-05-30我们小公司,哪像华为一样,用得上IPD(集成产品开发)?