java面试题(三)

21,JDK是什么?JRE是什么?JVM是什么

答:

JDK  是java语言的软件开发的工具包

JRE   jar包中存在的都是一些已经封装好的类文件

JVM java虚拟机,因为有jvm的存在所以java才具备跨平台的特性

 

22, abstract classinterface有什么区别?
答:

使用了Abstract的方法,被该关键字修饰后的方法,该方法所在的类也必须用该关键字修饰,abstract修饰的类中允许存在带有方法体的方法

使用interface关键字的类中存在的方法全部都是抽象,并且不存在方法体,而且修饰符必须是public

 

23,接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承实体类(concrete class)?

答:

1:接口可以继承接口,并且可以多继承。

2:抽象类可以实现接口

3:抽象可以继承实体类

 

24, GC是什么?为什么要有GC

答:GC垃圾回收器,在c语言中程序员经常性的会因为内存的问题而导致程序崩溃,因为c语言中的GC需要程序员手动的去调用,因为忘了结果因为内存元婴导致程序崩溃。

但是javajava提供的GC功能能够自动监测对象是否超过作用域,并且它会自动在空闲的时候去对内存中的垃圾进行回收。

只有有了GC我们才补需要担心内存的泄漏,能够有效的使用内存。

 

25,描述一下JVM加载class文件的原理机制?

答:类的加载是指把类的.class文件中的数据读到内存中,通常是创建一个字节数组读入.class文件然后产生与所加载类对应的class对象。加载完成后。类被加载进连接阶段。其中包括,验证,准备和解析三个步骤。最后jvm对类进行初始化

 

26,静态变量和实例变量的区别?

答:

静态变量是在加载该类之前就已经存在于方法区中,并且绑定到了该类上,可以通过类名.变量的形式使用该变量,并且其他对象去操作该变量是,会改变该变量的值(永久性的)

实例变量只有创建实例之后通过对象的引用去调用该变量,一个对象对该变量的操作补会改变该实例变量的值,也就是说不会影响其他对象实例化后去使用该实例变量。

 

27, thissuper用法和区别?

答:

This代表的是本类

Super代表的是父类

在一个方法中thissuper都需要存在与代码的第一行。所以他们不能同时存在。

 

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]);
		}
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值