JAVA期中考试

一、判断题

1、

答案:F、T


2、

答案:T

解析:接口中的成员全是常量成员 public static final,接口中的方法全是抽象方法public abstract,也就是,在类中,只能使用接口中的成员,不能改变接口中的成员。


3、

答案:T、T、T


4、

答案:T


5、

答案:T


6、

答案:T

解析:父类的构造方法不能被子类继承


7、

答案:F

解析:子类构造方法必须调用父类构造方法,但是并不一定是通过显示调用的方法来调用父类的构造方法,还有隐式调用

https://blog.csdn.net/fighting123678/article/details/82942590


二、单选题

1、

答案:A、A、D、D


2、

答案:B、A、D


3、

答案:C、D


4、

答案:A


三、编程题

1、jmu-Java&Python-统计文字中的单词数量并按出现次数排序 

现在需要统计若干段文字(英文)中的单词数量,并且还需统计每个单词出现的次数

注1:单词之间以空格(1个或多个空格)为间隔。
注2:忽略空行或者空格行。

基本版:
统计时,区分字母大小写,且不删除指定标点符号。

进阶版:
1.统计前,需要从文字中删除指定标点符号!.,:*?
2.统计单词时需要忽略单词的大小写。

输入说明

若干行英文,最后以!!!!!为结束。

输出说明

单词数量
出现次数排名前10的单词(次数按照降序排序,如果次数相同,则按照键值的字母升序排序)及出现次数。

输入样例1

failure is probably the fortification in your pole

it is like a peek your wallet as the thief when you
are thinking how to spend several hard-won lepta

when you are wondering whether new money it has laid
background because of you then at the heart of the

most lax alert and most low awareness and left it

godsend failed
!!!!!

输出样例1

46
the=4
it=3
you=3
and=2
are=2
is=2
most=2
of=2
when=2
your=2

输入样例2

Failure is probably The fortification in your pole!

It is like a peek your wallet as the thief when You
are thinking how to. spend several hard-won lepta.

when yoU are? wondering whether new money it has laid
background Because of: yOu?, then at the heart of the
Tom say: Who is the best? No one dare to say yes.
most lax alert and! most low awareness and* left it

godsend failed
!!!!!

输出样例2

54
the=5
is=3
it=3
you=3
and=2
are=2
most=2
of=2
say=2
to=2

答案

import java.util.*;
import java.util.Map.Entry;

/*思路:首先按照键值对的方式放到TreeMap容器中
之后放到set容器中,因为放到set容器中的是Entry类型的,无法直接转换成想要的Word类类型
因此,需要一个个提取键和对应的值,然后新建Word,放到list
这么麻烦的步骤是为什么要放到list中呢?
因为最初的思路是错误的,一直不会用Map进行排序,所以想到了Collections中的sort排序方法
之后就可以排序和输出了*/

public class Main 
{
	public static void main(String[] args)
	{
		TreeMap<String,Integer> h=new TreeMap<String,Integer>();
		LinkedList<Word> l=new LinkedList<Word>();
		Scanner scan=new Scanner(System.in);
		String s;
		int sum=0;
		while(!(s=scan.next()).equals("!!!!!"))
		{
			s=s.toLowerCase();
			if(s.contains("!"))
			{
				s=s.replace("!", "");
			}
			if(s.contains("."))
			{
				s=s.replace(".", "");
			}
			if(s.contains(":"))
			{
				s=s.replace(":", "");
			}
			if(s.contains("*"))
			{
				s=s.replace("*", "");
			}
			if(s.contains("?"))
			{
				s=s.replace("?", "");
			}
			if(s.contains(","))
			{
				s=s.replace(",", "");
			}
			if(!(h.containsKey(s)))
			{
				sum+=1;
				h.put(s, 1);
			}
			else
			{
				h.put(s, h.get(s)+1);
			}
		}
		Set<Entry<String, Integer>> set=h.entrySet();
		Iterator<Entry<String, Integer>> it=set.iterator();
		while(it.hasNext())
		{
			Entry entry=it.next();
			String s1=(String) entry.getKey();
			Integer in=(Integer)entry.getValue();
			Word wo=new Word(s1,in);
			l.add(wo);
		}
		System.out.println(sum);
		Collections.sort(l);
		Iterator<Word> ite=l.iterator();
		int i=0;
		while(ite.hasNext())
		{
			i+=1;
			Word m=ite.next();
			System.out.println(m.getS()+"="+m.getNum());
			if(i>=10) break;
		}
	}
}
class Word implements Comparable
{
	String s;
	int num;
	public Word(String s,int num)
	{
		this.s=s;this.num=num;
	}

	public String getS() {
		return s;
	}

	public void setS(String s) {
		this.s = s;
	}

	public int getNum() {
		return num;
	}

	public void setNum(int num) {
		this.num = num;
	}

	public int compareTo(Object o) 
	{
		Word w=(Word) o;
		if(this.num>w.num) return -1;
		else if(this.num<w.num) return 1;
		else 
		{
			if(this.s.compareTo(w.s)<0) return -1;
			else if(this.s.compareTo(w.s)>0) return 1;
			else return 0;
		}
	}
}

 


四、主观题

1、System.arraycopy (5 分)

请解释System.arraycopy(a,2,b,3,4)的含义?(5分)

答案

 


 2、Java程序为何能够跨平台? (8 分)

请说明为何Java程序能够实现跨平台?(8分)

答案

因为每台电脑上都有虚拟机,java程序是通过虚拟机进行的工作,所以,通过java程序能够实现跨平台操作

https://blog.csdn.net/woailuo453786790/article/details/51660015

        因为Java程序编译之后的代码不是能被硬件系统直接运行的代码,而是一种“中间码”——字节码。然后不同的硬件平台上安装有不同的Java虚拟机(JVM),由JVM来把字节码再“翻译”成所对应的硬件平台能够执行的代码。因此对于Java编程者来说,不需要考虑硬件平台是什么。所以Java可以跨平台。
       因为它有虚拟机(JVM),JAVA程序不是直接在电脑上运行的,是在虚拟机上进行的,每个系统平台都是有自己的虚拟机(JVM),所以JAVA语言能跨平台。 java代码不是直接运行在CPU上,而是运行在java虚机(简称JVM)上的。java是先把java文件编译成二进制字节码的class文件,jvm就解释执行class文件。   就是因为java是运行在jvm上的,所以它的代码就能不经修改,就能在不同平台的jvm上运行(在UNIX用UNIX的jvm,在linux上用linux的jvm,在windows上用windows的jvm)假如用windows移植到UNIX,只需把java文件是UNIX的jvm上编译成class文件,然后用jvm运行就可以了。

Java虚拟机(Java Virtual Machine) 简称JVM
Java为什么能跨平台
Java之所以能跨平台,是因为java虚拟机能跨平台。

 

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值