Java样题

除了List、Set、Map、Queue这四个接口外,其他的都是实现类。例如,ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap、TreeMap等都是实现类,而不是接口。

.
子类构造方法调用父类构造方法要使用 super ( 实参 ),要放在 第一句,当没调用时,系统会自动调用父类 无参 构造方法。
.

String和StringBuffer区别?
前者表示字符串常量,后者表示字符串变量。
.

流按照方向和读取单位分为哪四种?
输入字节流,输出字节流,输入字符流,输出字符流
.

简述this和super的含义和用法?
this指代当前对象,super指代父类对象
this修饰成员变量或方法,类内部构造方法相互调用
super修饰父类成员变量或方法;调用父类构造方法
.

图形用户界面设计中容器的常用布局有哪些(列举3个)?
流布局,边界布局,格布局
FlowLayout,BorderLayout,GridLayout
.

介绍静态成员和实例成员的区别?
静态成员属于类,用static修饰。
实例成员属于对象。
.

输出1000-9999之间所有能被17整除的回文数字。如:2992。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;

public class Main {
	public static void main(String[] args){
		Scanner cin=new Scanner(System.in);
        for(int i=1000;i<9999;i++)
        {
        	if(hui(i)&&i%17==0)
        	{
        		System.out.println(i);
        	}
        }
	}
	static boolean hui(int num)
	{
		String s=num+"";
		if(s.equals(new StringBuffer(s).reverse().toString()))
		{
			return true;
		}
		return false;
	}
}

.

定义促销接口ICuxiao,包含抽象方法double calculate(double m),m表示商品原价,返回促销后价格。分别定义两个类实现该接口,一个类为打折类Dazhe,包含成员double zhekou,表示折扣值,如打八折,折扣值就为0.8。另一个类为MaiJian,包含两个成员int mai,jian,表示买mai减jian。并编写main方法进行检验。(10分)

import java.io.File;
import java.io.FileWriter;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;


public class Main {
	public static void main(String[] args){
		ICuxiao c1=new Dazhe(0.8);
		System.out.println(c1.calculate(200));
		ICuxiao c2=new MaiJian(200,50);
		System.out.println(c2.calculate(199));
	}
}
interface ICuxiao
{
	double calculate(double m);
}
class Dazhe implements ICuxiao
{
	double zhekou;
	public Dazhe(double zhekou) {
	    super();
	    this.zhekou = zhekou;
    }
	@Override
	public double calculate(double m) {
		// TODO Auto-generated method stub
		return m*zhekou;
	}
}
class MaiJian implements ICuxiao
{
	double mai,jian;
	public MaiJian(double mai,double jian) {
	    super();
	    this.mai = mai;
	    this.jian = jian;
    }
	@Override
	public double calculate(double m) {
		// TODO Auto-generated method stub
		return m-(int) ((int)m/mai)*jian;
	}
}

注意:
1、直接复制,不要手敲
2、实现接口时类不用加参数
3、int b=(int) ((int)m/mai); double转int要int两下
4、从 Source 中找 @Override

.
d:/1.txt文件里存放了若干整数,递增排序后存到d:/2.txt中(10分)。

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;


public class Main {
	public static void main(String[] args) throws IOException{
		Scanner cin=new Scanner(new File("d:/1.txt"));
		List<Integer> list=new ArrayList<Integer>();
		while(cin.hasNext()) {
			list.add(cin.nextInt());
		}
		Collections.sort(list);
		FileWriter fw=new FileWriter("d:\2.txt");
		for(int i:list)
		{
			fw.write(i+"\r\n");
		}
		fw.close();
	}
}

注意:
1、使用 Scanner 类读取文件时,实际上是通过 FileInputStream 或者 RandomAccessFile 类来读取文件的。Scanner 类在读取文件完成后,会自动关闭底层的 FileInputStream 或者 RandomAccessFile 流,因此不需要手动调用 close() 方法。但写完文件记得关闭文件。
2、ArrayList 是动态数组,
方便存储:ArrayList 可以方便地将读取的整数存储到集合中。
方便排序:使用 Collections.sort() 方法可以方便地对 ArrayList 中的元素进行排序。
方便遍历:使用 for-each 循环可以方便地遍历 ArrayList 中的元素,并将它们逐个写入 到文件中。
空间自动扩展:使用 ArrayList 可以避免在读取文件时需要提前确定数组的大小,而是可以动态地扩展数组大小,以适应文件中的元素个数。
3、想要运行代码要抛出异常

.
编写图形界面,给用户出10以内加法题,用户答完后给出对或错的判断(15分)。用户输入答案不是整数给出提示。部分代码:

public class Test {
public static void main(String[] ar) {
    new Fr();
}
}
class Fr extends JFrame {
	JTextField n1=new JTextField(10);	
	JLabel op=new JLabel("+");
	JTextField n2=new JTextField(10);
	JLabel eq=new JLabel("=");
	JTextField sum=new JTextField(10);;
	JButton chuti=new  JButton("出题");
	JButton panduan=new  JButton("判断");
	JLabel result=new JLabel("");
    Fr() {    
    	this.setLayout(new FlowLayout());
    	//设计界面,事件源注册监听器
    	this.setSize(400,150);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	this.setVisible(true);       
}
}

提示:10以内随机数产生方法:(int)(Math.random()*10);
字符串转整数:int a=Integer.parseInt(s);

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class Main {
    public static void main(String[] ar) {
        new Fr();
    }
}
 
class Fr extends JFrame implements ActionListener{
	JTextField n1=new JTextField(10);	
	JLabel op=new JLabel("+");
	JTextField n2=new JTextField(10);
	JLabel eq=new JLabel("=");
	JTextField sum=new JTextField(10);;
	JButton chuti=new  JButton("出题");
	JButton panduan=new  JButton("判断");
	JLabel result=new JLabel("");
    Fr() {    
    	this.setLayout(new FlowLayout());
    	//设计界面,事件源注册监听器
    	this.add(n1);this.add(op);this.add(n2);this.add(eq);
    	this.add(sum);this.add(chuti);this.add(panduan);
    	this.add(result);
    	chuti.addActionListener(this);
    	panduan.addActionListener(this);
    	this.setSize(400,150);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	this.setVisible(true);
        
}
	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
	    if(e.getSource()==chuti)
	    {
	    	n1.setText((int)(Math.random()*10)+"");
	    	n2.setText((int)(Math.random()*10)+"");	    	
	    }
	    else
	    {
	    	int sum1=Integer.parseInt(n1.getText());
	    	int sum2=Integer.parseInt(n2.getText());
	    	try {
				int sum3=Integer.parseInt(sum.getText());
				if(sum1+sum2==sum3)
				{
					result.setText("right");
				}
				else
				{
					result.setText("wrong");
				}
			} catch (Exception e2) {
				// TODO: handle exception
				result.setText("format error");
			}
	    }
	}
}

注意:
1、setText() 是输出文本,getText() 是获取文本。
2、Alt+\ 找 try - catch

你可能感兴趣的:(#,Java复习,java,jvm,开发语言)