JAVA企业面试题精选 Java SE 71-80
2017-07-25 16:24
696 查看
3.71.什么是标示接口(Mark Interface),它与接口的区别在什么地方,并简单列举你知道的标示接口
参考答案:
标示接口:标示接口是没有任何方法和属性的接口.标示接口不对实现它的类有任何语义上的要求,它仅仅表明实现它的类属于一个特定的类型.当一个类实现了一个标示接口之后就像是给自己打了个标签.区别:标识接口没有任何方法和属性;而接口有方法或属性,或者既有方法又有属性.
举例:java.io.Serializable,java.rmi.Remote
3.72.请使用Java语言定义一个具备栈功能的类,实现以下接口:
public interface StackInterface{ void push(Object value); Object pop(); boolean isEmpty(); }
参考答案:
public class Stack implements StackInterface{ private int capacity = 100; private Object[] items; private int top = 0; //不带参数构造器 public stack(){ this(100); } //带参数构造器,参数为堆栈大小 public stack(int cap){ this.capacity = cap; items = new Object[cap]; } @Override public boolean isEmpty(){ if*(top == 0){ return true; } return false; } @Override public Object pop(){ Object temp = items[top]; items[top] = null; top--; return temp; } @Override public void push(Object value){ top++; items[top] = value; } }
3.73.编写一个程序,用户输入任何一个字符串之后,翻转输出其结构.其运行结果如下所示:
请输入一个字符串:我在学习Java程序设计 您输入了:计设序程avaJ习学在我
参考答案:
import java.util.Scanner; public class Q073{ public static void main(String[] args){ System.out.println("请输入一句话"); Scanner in = new Scanner(Sytem.in); String input = in.nextLine(); System.out.println("您输入了:") System.out.println(reverseString(input)); } public static reverseString(String str){ char[] chars = str.toCharArray(); StringBuilder sb = new StringBuilder(); for(int i = chars.length - 1; i >= 0; i--){ sb.append(char[i]); } return sb.toString(); } }
3.74.请用面向对象的思想设计一个计算器程序,请写出程序框架(主要使用的类和方法)
参考答案:
Operation类:public class Operation{ private double numberA = 0; private double numberB = 0; public double GetResult(){ double result = 0; return result; } public double getNumberA(){ return numberA; } public void setNumberA(double numberA){ this.numberA = numberA; } public double getNumberB(){ return numberB; } public void setNumberB(double numberB){ this.numberB = numberB; } }
OperationAdd类:
public class OperationAdd extends Operation{ public double GetResult(){ double result = 0; result = getNumberA() + getNumberB(); return result; } }
OperationDiv类:
public class OperationDiv extends Operation{ public double GetResult(){ double result = 0; result = getNumberA() / getNumberB(); return result; } }
OperationMul类:
public class OperationMul extends Operation{ public double GetResult(){ double result = 0; result = getNumberA() * getNumberB(); return result; } }
OperationSub类:
public class OperationSub extends Operation{ public double GetResult(){ double result = 0; result = getNumberA() - getNumberB(); return result; } }
OperationFactory类:
public class OperationFactory{ public static Operation createOperate(char operate){ Operation oper = null; switch (operate){ case '+': Oper = new OperationAdd(); break; case '-': oper = new OperationSub(); break; case '*': oper = new OperationMul(); break; case '/': oper = new OperationDiv(); break; default; break; } return oper; } }
Calculator类:
import java.util.Scanner; public class Calculator{ public static void main(String[] args){ Operation oper; oper = OperationFactory.createOperate('+'); System.out.println("请输入_numberA:"); Scanner s = new Scanner(System.in); oper.setNumberA(s.nextDouble()); System.out.println("请输入_numberB:"); oper.setNumberB(s.nextDouble()); double result = oper.GetResult(); System.out.println("结果是:" + result); } }
3.75.写一个函数,2个参数,1个字符串,1个字节数,返回截取的字符串,要求字符串中的中文不能出现乱码:如(“我ABC”,4)应该截为”我AB”,输入(“我ABC 汉DEF”,6)应该输出为”我ABC”而不是”我ABC+汉的半个”.
参考答案:
public static String subString(String str, int subBytes){ int bytes = 0;//用来储存字符串的总字节数 for(int i = 0; i < str.length(); i++){ if(bytes == subBytes){ return str.substring(0,i); } char c = str.charAt(i); if(c < 256){ bytes += 1;//英文字符的字节数看作1 } else { bytes += 2;//中文字符的字节数看作2 if(bytes - subBytes == 1){ return str.substring(0,i); } } } return str; }
3.76.日期和时间:
1)如何取得年月日,小时分秒?
2)如何取得从1970年到现在的毫秒数?
3)如何取得某个日期的当月的最后一天?
4)如何格式化日期?
参考答案:
1)创建java.util.Calendar实例(Calendar.getInstance()),调用其get()方法传入不同的参数即可获得参数所对应的值,如:calendar.get(Calendar.YEAR);//获得年2)以下方法均可获得该毫秒数:
Calender.getInstance().getTimeInMillis(); System.currentTimeMillis();
3)取得某个日期的当月的最后一天的示例代码如下:
Calendar time = Calendar.getInstance(); time.getActualMaximum(Calendar.DAY_OF_MONTH));
4)利用java.text.DateFormat类中的format()方法可将日期格式化.
3.77.写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数
参考答案:
public int countWords(String file,String find) throws Exception{ int count = 0; Reader in = new FileReader(file); int c; while((c = in.read()) != -1){ while(c == find.charAt(0)){ for(int i = 1; i < find.length(); i++){ c = in.read(); if(c != find.charAt(i)){ break; } if(i == find.length() - 1){ count++; } } } } return count; }
3.78.写一个函数,要求输入一个字符串和一个字符的长度,对该字符串进行分割隔
参考答案:
public String[] split(String str, int chars){ int n = (str.length() + chars - 1) / chars; String ret[] = new String ; for(int i = 0; i < n; i++){ if(i < n - 1){ ret[i] = str.substring(i * chars, (i + 1) * chars); } else { ret[i] = str.substring(i * chars); } } return ret; }
3.79.Java类实现序列化的方法.在COLLECTION框架中,实现比较要实现什么样的接口?
参考答案:
Java类实现序列化的方式为使用序列化的类实现java.io.Serializable接口;Collection框架中实现比较要实现Comparable接口或Comparator接口.
3.80.设计4个线程,其中两个线程每次对j增加1,另两个线程对j每次减少1;写出程序
参考答案:
public class TestThread{ private int j; private Object obj = new Object(); public TestThread(int j){ this.j = j; } class Dec extends Thread{ public void run(){ synchronized(obj){ j--; } } } class Inc implements Runnable{ public void run(){ synchronized(obj){ j++; } } } public static void main(String[] args){ new TestThread(0).new Dec().start(); new TestThread(0).new Dec().start(); new Thread(new TestThread(0).new Inc()).start(); new Thread(new TestThread(0).new Inc()).start(); } }
相关文章推荐
- JAVA企业面试题精选 Java SE 21-30
- JAVA企业面试题精选 Java SE 31-40
- JAVA企业面试题精选 Java SE 51-60
- JAVA企业面试题精选 Java SE 1-10
- JAVA企业面试题精选 Java SE 41-50
- JAVA企业面试题精选 Java SE 11-20
- JAVA企业面试题精选 Java SE 91-100
- JAVA企业面试题精选 Java SE 81-90
- JAVA企业面试题精选 Hibernate 1-10
- JAVA企业面试题精选 数据库41-44
- JAVA企业面试题精选 Struts 1-10
- JAVA企业面试题精选 Servlet和JSP 21-30
- JAVA企业面试题精选 Java基础 21-30
- JAVA企业面试题精选 Struts 11-18
- JAVA企业面试题精选 Hibernate 11-20
- JAVA企业面试题精选 数据库21-30
- JAVA企业面试题精选 Web基础 41-42
- JAVA企业面试题精选 Web基础 11-20
- JAVA企业面试题精选 Web基础 21-30