Java 编程练习

编程练习:

1、通过实现Runnable接口的方式创建线程类Cat和Dog,run()方法实现的功能为:加入一个循环长度为3的for循环,分别循环输出信息“A cat”和“A dog”。

2、在测试类中分别创建Cat和Dog类的对象,启动两个线程。

3、在测试类中创建一个循环长度为3的for循环,打印输出信息“main thread”。

测试类

public class Test {

    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        for(int i=0;i<3;i++) {
            System.out.println("main thread");
        }
        Cat one=new Cat();
        Dog two=new Dog();
        Thread t1=new Thread(one);
        Thread t2=new Thread(two);
        t1.start();
        t2.start();
//        new Thread(t1).start();
//        new Thread(t2).start();
    }
}

Cat类

class Cat implements Runnable {
	public void run() {
		for (int i=0;i<3; i++) {
			System.out.println(Thread.currentThread().getName() + "A cat");
		}
 
	}
}
 

Dog类

class Dog implements Runnable {
	public void run() {
		for (int i=0;i<3; i++) {
			System.out.println(Thread.currentThread().getName() + "A dog");
		}
 
	}
}

 

2.(单选题) 

 用Runnable接口创建线程的主要工作如下,它们正确的先后顺序为()

     (1) 通过实现类的对象创建线程类的对象

     (2) 声明实现Runnable接口的类

     (3) 调用start()方法启动线程

     (4) 创建实现类的对象

     (5) 在实现类内实现run()方法 

           正确答案: C      我的答案: C

  • A. 

    1-4-2-5-3

  • B. 

    2-1-4-5-3

  • C. 

    2-5-4-1-3

  • D. 

    1-5-2-4-3

线程

//process(进程)可以同时运行多个程序块,达到多任务处理的目的      
//同时激活多个线程
/*使一个类可激活线程,使用以下语法表示:
 * class 类名称 extends Thread   //从Thread类扩展出子类
 * {
 *      属性
 *      方法
 *      修饰符 run(){            //覆盖Thread类里的run()方法
 *          以线程处理的程序
 */

3.编程练习:

通过继承Thread类的方式创建线程,并在线程体中通过循环打印输出如演示效果所示的内容。

public class Test {
       public static void main(String[] args) {
           new TestThread().start();      
       }
}
class TestThread extends Thread{
    public void run() {
        for(int i=1;i<=10;i++) {
            System.out.println("打印机正在运行"+i);
        }
    }
}

 4.以下代码中,在划线处加入什么语句能成功启动线程。

 答案:one.start();

5.(多选题) 选项中,哪两句的说法是错误的?(选择两项)

正确答案: BC              我的答案:BC

  • A. 

    线程是比进程还要小的运行单位

  • B. 

    Thread类位于java.thread包下

  • C. 

    run()方法用于启动线程

  • D. 

    CPU使用时间片轮转的工作方式,可以让多个程序轮流占用CPU,达到同时运行的效果

6.(简答题) 编程练习:应用对象序列化和对象反序列化向文件写入对象,并将对象读取出来输入到控制台上。效果图:

任务要求:

1、创建Product类,并声明它的属性:id,name,categories,price

2、实现Serializable接口;

3、定义Product类构造方法;

4、在Test类里面,创建Product类的对象:iphone,ipad,macbook,iwatch

5、实例化对象输入流和对象输出流;

6、写入Product类的四个对象;

7、从文件里读取四个product类的四个对象。

 Product类:

import java.io.Serializable;
public class Product implements Serializable {
	private int ID;
	private String name;
	private String categories;
	private Double price;
	public Product() {
		
	}
	public Product(int iD, String name, String categories, Double price) {
		super();
		ID = iD;
		this.name = name;
		this.categories = categories;
		this.price = price;
	}
 
	public int getID() {
		return ID;
	}
 
	public void setID(int iD) {
		ID = iD;
	}
 
	public String getName() {
		return name;
	}
 
	public void setName(String name) {
		this.name = name;
	}
 
	public String getCategories() {
		return categories;
	}
 
	public void setCategories(String categories) {
		this.categories = categories;
	}
 
	public Double getPrice() {
		return price;
	}
 
	public void setPrice(Double price) {
		this.price = price;
	}
 
	public String toString() {
		return "产品ID:" + ID + "\n产品名称:" + name + "\n产品属性:" + categories + "\n产品价格:" + price + "元";
	}
 
}

ProductTest类:

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
 
public class ProductTest {
 
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Product iphone = new Product(123, "iphone", "telephone", 4888.0);
		Product ipad = new Product(234, "ipd", "computer", 5088.0);
		Product macbook = new Product(345, "macbook", "computer", 10688.0);
		Product iwatch = new Product(256, "iwatch", "watch", 4799.0);
		try {
			FileOutputStream fos = new FileOutputStream("product.txt");
			ObjectOutputStream oos = new ObjectOutputStream(fos);
			FileInputStream fis = new FileInputStream("product.txt");
			ObjectInputStream ois = new ObjectInputStream(fis);
			oos.writeObject(iphone);
			oos.writeObject(ipad);
			oos.writeObject(macbook);
			oos.writeObject(iwatch);
			oos.flush();
			System.out.println("apple系列产品信息:");
			
			// 方式1输出产品信息
			Product pro = (Product) ois.readObject();
			Product pro1= (Product) ois.readObject();
			Product pro2 = (Product) ois.readObject();
			Product pro3 = (Product) ois.readObject();
			System.out.println("apple系列产品信息");
			System.out.println(pro);
			System.out.println();
			System.out.println(pro1);
			System.out.println();
			System.out.println(pro2);
			System.out.println();
			System.out.println(pro3);
			System.out.println();
			oos.close();
			fos.close();
			ois.close();
		} catch (FileNotFoundException e) {
//			 TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
 
	}
 
}

 

 

7.(单选题) 请阅读下列程序,选择正确的语句排序后填写在横线上 (选择一项)

使得运行结果为:

I.      oos.writeObject(doberman);

II.     Dog dog1=(Dog)ois.readObject();

III.    oos.write(doberman);

IV.    ObjectOutputStream oos=new ObjectOutputStream(fos);

V.     ObjectInputStream ois=new ObjectInputStream(new FileInputStream("Dog.txt"));

VI.    OutputStreamWriter oos=new OutputStreamWriter(fos);

VII.    String toString()

VIII.   String()

IX.     public class Dog implements Serializable

X.     public class Dog extends Serializable

正确答案: D       我的答案: D

  • A. 

    X VII  IV  V   I   II

  • B. 

    IX VIII  VI  V  III   II

  • C. 

    X  VIII  VI  V  III   II

  • D. 

    IX  VII  IV   V  I   II

8.(简答题) 编程练习:利用System.in从键盘输入多行字符串,输入一行控制台输出一行,同时利用PrintWriter输出到文件一行,直到输入为“exit”,退出程序。运行效果:

import java.io.*;
import java.io.InputStream;
import java.io.PrintWriter;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class Test {
    public static void main(String[] args) throws IOException{
    	BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
		  BufferedWriter buf2 = new BufferedWriter(new FileWriter("test.txt"));
		  System.out.println("请输入小写英文字符串");
		  String str = buf.readLine();
		   while(!str.equals("exit")){
			   System.out.println(str);
//			   System.out.println("程序结束");
		   buf2.write(str);
		   buf2.newLine();
		   System.out.println();
		   str = buf.readLine();
		    }
		   System.out.println("程序结束");
		  buf.close();
		  buf2.close();
    }
}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

四维空间中的未知点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值