21,JDK是什么?JRE是什么?JVM是什么
答:
JDK 是java语言的软件开发的工具包
JRE jar包中存在的都是一些已经封装好的类文件
JVM java虚拟机,因为有jvm的存在所以java才具备跨平台的特性
22, abstract class和interface有什么区别?
答:
使用了Abstract的方法,被该关键字修饰后的方法,该方法所在的类也必须用该关键字修饰,abstract修饰的类中允许存在带有方法体的方法
使用interface关键字的类中存在的方法全部都是抽象,并且不存在方法体,而且修饰符必须是public
23,接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承实体类(concrete class)?
答:
1:接口可以继承接口,并且可以多继承。
2:抽象类可以实现接口
3:抽象可以继承实体类
24, GC是什么?为什么要有GC?
答:GC垃圾回收器,在c语言中程序员经常性的会因为内存的问题而导致程序崩溃,因为c语言中的GC需要程序员手动的去调用,因为忘了结果因为内存元婴导致程序崩溃。
但是java中java提供的GC功能能够自动监测对象是否超过作用域,并且它会自动在空闲的时候去对内存中的垃圾进行回收。
只有有了GC我们才补需要担心内存的泄漏,能够有效的使用内存。
25,描述一下JVM加载class文件的原理机制?
答:类的加载是指把类的.class文件中的数据读到内存中,通常是创建一个字节数组读入.class文件然后产生与所加载类对应的class对象。加载完成后。类被加载进连接阶段。其中包括,验证,准备和解析三个步骤。最后jvm对类进行初始化
26,静态变量和实例变量的区别?
答:
静态变量是在加载该类之前就已经存在于方法区中,并且绑定到了该类上,可以通过类名.变量的形式使用该变量,并且其他对象去操作该变量是,会改变该变量的值(永久性的)。
实例变量只有创建实例之后通过对象的引用去调用该变量,一个对象对该变量的操作补会改变该实例变量的值,也就是说不会影响其他对象实例化后去使用该实例变量。
27, this和super用法和区别?
答:
This代表的是本类
Super代表的是父类
在一个方法中this和super都需要存在与代码的第一行。所以他们不能同时存在。
28,编写一个程序用选择法对数组a[]={20,10,50,40,30,70,60,80,90,100}进行由大到小的排序。
public class SelectSort {
public static void main(String[] args) {
int [] arr = {20,10,50,40,30,70,60,80,90,100};
int x;
for(int i = 0;i<arr.length;i++)
{
for(int j = i+1;j<arr.length-1;j++ )
{
if(arr[i]>arr[j]){
x=arr[i];
arr[i]=arr[j];
arr[j]=x;
}
}
}
}
}
29,某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。(输入一个四位数,求出传递的结果)
public class Password {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个四位数的整数");
int x = sc.nextInt();
int i = (x/1000 + 5)%10;
int j = (x/100%10 + 5)%10;
int k = (x/10%10 + 5)%10;
int l = (x%10 + 5)%10;
System.out.println(l*1000+k*100+j*10+i);
}
}
30, 将一个数组逆序输出a[]={77,10,50,44,67,83,19,48,170,1}。
public class asdsadasd {
public static void main(String[] args) {
int [] arr = {77,10,50,44,67,83,19,48,170,1};
int x;
for(int i = 0;i<((int)(Math.floor(arr.length/2)));i++)
{
x=arr[i];
arr[i]=arr[arr.length-(i+1)];
arr[arr.length-(i+1)]=x;
}
for(int i = 0;i<arr.length;i++)
{
System.out.println(arr[i]);
}
}
}