一、Java语言中,覆盖和重载相同和不同的地方。
答:Java语言中,方法重载和方法覆盖的相同点如下。
- 都要求方法同名。
- 都可以用于抽象方法和非抽象方法。
不同点如下。
- 方法覆盖要求参数必须一致,而方法重载要求参数必须不一致。
- 方法覆盖要求返回类型必须一致,而方法重载对此不作限制。
- 方法覆盖只能用于子类覆盖父类的方法,方法重载用于同一个类的所有方法(包括从父类中继承而来的方法)。
- 方法覆盖对方法的访问权限和抛出的异常有特殊的要求,而方发重载在这方面没有任何限制。
- 父类的一个方法只能被子类覆盖,而一个方法在所在的类中可以被重载多次。
二、请说出equals()和==的区别。
答:equals()方法是Object类中定义的一个方法,用来比较两个对象引用是否相等,这一点和“==”表达式是一样的。
所不同的是equals()方法可以在子类或者特定类中重写,例如String类就重写了该方法,使用String类的equals()方法可以比较两个String实例的内容是否相等。
三、forward()和redirect()方法的区别?
答:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。
四、 表单中的get和post有什么区别?
答:
- Get是用来从服务器上获得数据,而Post是用来向服务器上传递数据。
- Get将表单中数据的按照variable=value的形式,添加到action所指向的URL后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;Post是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向URL。
- Get是不安全的,因为在传输过程中,数据被放在请求的URL中,而如今现有的很多服务器、代理服务器或者用户代理都会将请求URL记录到日志文件中,然后放在某个地方,这样就可能会有一些隐私的信息被第三方看到。另外,用户也可以在浏览器上直接看到提交的数据,一些系统内部消息将会一同显示在用户面前。Post的所有操作对用户来说都是不可见的。
- Get传输的数据量小,这主要是因为受URL长度限制;而Post可以传输大量的数据,所以在上传文件只能使用Post(当然还有一个原因,将在后面的提到)。
- Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集。
- Get是Form的默认方法。
五、冒泡排序
1.思路
从0到n-1,两两比较数组中的元素,如果前者大于后者,则交换之(如a[0]>a[1],则交换a[0]和a[1])。作一趟冒泡排序后,最大值就在最后一个位置a[n-1]上了。然后对余下的0到n-2个元素作第二趟冒泡排序,次最大值就去到倒数第二个位置a[n-2]上了,如此类推。
例如对10,-3,5,34,-34,5,0,9进行排序
第一趟:-3,5,10,-34,5,0,9,34
第二趟:-3,5,-34,5,0,9,10,34
第三趟:-3,-34,5,5,0,9,10,34
第四趟:-34,-3,5,0,5,9,10,34
第五趟:-34,-3,0,5,5,9,10,34
这时不再发生交换,排序结束。
2.算法
1 public static void main(String[] args) { 2 int a[] = { 4, 5, 2, 1, 6, 7, 8, 0, 0, 0 }; 3 bubbleSort(a); 4 for (int each : a) { 5 System.out.print(each + " "); 6 } 7 8 } 9 10 static void bubbleSort(int[] array) { 11 boolean isSwap = false; 12 int length = array.length; 13 for (int i = 1; i < length; i++) { 14 for (int j = 0; j < length - i; j++) { 15 if (array[j] > array[j + 1]) { 16 int temp = array[j]; 17 array[j] = array[j + 1]; 18 array[j + 1] = temp; 19 isSwap = true; 20 } 21 } 22 if (!isSwap) 23 break; 24 } 25 }