JavaSE编码试题强化练习1
1. 编写应用程序,创建类的对象,分别设置圆的半径、圆柱体的高,计算并分别显示圆半径、圆面积、圆周长,圆柱体的体积。
/**
* 定义父类--圆类
*/
public class Circle {
/**
* 私有属性:成员变量--圆半径
*/
private double radius;
/**
* 构造方法
*/
public Circle() {
radius = 0.0;
} public Circle(double radius) {
this.radius = radius;
} /**
*成员方法--求圆周长
*/
double getPerimeter(){
return 2*Math.PI*radius;
} /**
* 成员方法--求圆面积
*/
double getArea(){
return Math.PI*radius*radius;
}
/**
* 成员方法--显示圆半径、周长、面积
*/
void show(){
System.out.println("圆半径:"+radius);
System.out.println("圆周长:"+getPerimeter());
System.out.println("圆面积:"+getArea());
}
}
/**
* 定义子类--圆柱类
*/
public class Cylinder extends Circle {
/**
* 私有属性:成员变量--圆柱体的高
*/
private double hight;
/**
* 构造方法、调用父类方法
*/
public Cylinder() {
} public Cylinder(double r, double h) {
super(r);
this.hight = h;
} /**
* 成员方法--求圆柱体的体积
*/
public double getVolume(){
return getArea()*hight;
}
/**
* 成员方法--显示圆柱体体积
*/
void showVolume(){
System.out.println("圆柱体的体积 = "+getVolume());
}
}
/**
* 测试类
*/
public class Test {
public static void main(String[] args) {
/**
* 创建圆类对象、调用方法
*/
Circle c = new Circle();
/**
* 调用圆类方法
*/
c.show();
/**
* 创建圆柱体对象(实例)、调用方法
*/
Cylinder cy = new Cylinder();
/**
*调用父类方法
*/
cy.show();
/**
* 调用子类方法
*/
cy.showVolume();
}
}

2.设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。
编写实现,要求:使用内部类实现线程,对j增减的时候不考虑顺序问题。
/**
* 测试类
*/
public class ThreadTest {
/**
* 声明成员变量
*/
private int j;
/**
* 程序主入口:main方法
*/
public static void main(String[] args) {
/**
* 创建对象
*/
ThreadTest tt = new ThreadTest();
/**
* 创建线程内部类对象
*/
Inc inc = tt.new Inc();
Dec dec = tt.new Dec();
for (int i = 0;i < 2;i++){
/**
* 创建线程对象并启动线程
*/
Thread t = new Thread(inc);
t.start();
t = new Thread(dec);
t.start();
}
}
/**
* 实现同步对j的值+1操作
*/
private synchronized void inc(){
j++;
System.out.println(Thread.currentThread().getName()+"-inc :"+j);
}
/**
* 实现同步对j的值-1操作
*/
private synchronized void dec(){
j--;
System.out.println(Thread.currentThread().getName()+"-dec :"+j);
}
/**
* 内部类
*/
private class Inc implements Runnable {
@Override
public void run() {
for (int i = 0;i < 100;i++){
/**
* 调用加的方法
*/
inc();
}
}
}
private class Dec implements Runnable{
@Override
public void run() {
for (int i = 0; i < 100; i++) {
/**
* 调用减的方法
*/
dec();
}
}
}
}

3.Java的通信编程,用Java Socket编程,要求从客户端录入几个字符,发送到服务器端,由服务器端将接收到的字符进行输出。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket; /**
* 线程通信--服务器端
*/
public class Server {
/**
* 声明ServerSocket对象
*/
private ServerSocket ss;
/**
* 声明Socket对象
*/
private Socket socket;
/**
* 声明输入流对象BufferedReader
*/
private BufferedReader br;
/**
* 声明输出流对象
*/
private PrintWriter pw;
public Server(){
try {
/**
* 创建一个ServerSocket对象,指定等待端口
*/
ss = new ServerSocket(8848);
while (true){
/**
* 使用ServerSocket接收用户请求(服务器端处于监听状态)
*/
/**
* 获得客户端的socket对象
*/
socket = ss.accept();
/**
* 创建输入流并读取信息
*/
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line = br.readLine();
System.out.println("客户端请求:"+line);
/**
* 创建输出流并输出信息
*/
pw = new PrintWriter(socket.getOutputStream(),true);
pw.print("请求已接收!");
/**
* 关闭流
*/
pw.close();
br.close();
socket.close();
}
} catch (IOException e) {
pw.println("出现异常!");
}
}
/**
* 程序主入口
*/
public static void main(String[] args) {
/**
* 创建服务器端对象
*/
new Server();
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket; /**
* 线程通信--客户端
*/
public class Client {
/**
* 声明Socket对象
*/
Socket socket;
/**
* 声明输入流对象
*/
BufferedReader br;
/**
* 声明输出流对象
*/
PrintWriter pw;
/**
* 构造方法
*/
public Client(){
try {
/**
* 创建Socket对象用来发送请求
*/
socket = new Socket("127.0.0.1",8848);
/**
* 创建字符缓冲区对象并输出
*/
BufferedReader line =
new BufferedReader(new InputStreamReader(System.in));
/**
* 创建输出流对象并输出
*/
pw = new PrintWriter(socket.getOutputStream(),true);
pw.println(line.readLine());
/**
* 创建输入流对象
*/
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
System.out.println(br.readLine());
/**
* 关闭流
*/
pw.close();
br.close();
socket.close();
} catch (IOException e) {
System.out.println("请求出错!");
}
}
/**
* 程序主入口
*/
public static void main(String[] args) {
/**
* 创建客户端对象
*/
new Client();
}
}
线程通信在自己的电脑上测试过程:
1、先运行服务器端程序,运行结果如下图

*红色方框中的红色方块按钮亮起代表程序已运行,正在等待(监听)客户端请求
2、再运行客户端程序,并输入请求,运行如下图
2.1 客户端处于等待输入指令状态

2.2 客户端完成指令输入并得到服务器端回应,红色方块按钮灭掉

2.3 服务器端,收到客户端请求给出回馈信息,并未关闭监听状态,需手动停止(现实中服务器一般是时刻处于监听状态的,维护期间会关闭)

JavaSE编码试题强化练习1的更多相关文章
- JavaSE编码试题强化练习7
1.编写应用程序,创建类的对象,分别设置圆的半径.圆柱体的高,计算并分别显示圆半径.圆面积.圆周长,圆柱体的体积. /** * 圆类 */ public class Circle { /** * 类属 ...
- JavaSE编码试题强化练习6
1.写出选择排序的代码实现,对一个int数组进行排序 public class TestSelectSort { public static void main(String[] args) { in ...
- JavaSE编码试题强化练习5
1.不使用函数实现字符串的翻转 /** * 1.不使用函数实现字符串的翻转 */ public class TestStringReverse { public static void main(St ...
- JavaSE编码试题强化练习4
1.编写一个Worker类,为Worker类添加相应的代码,使得Worker对象能正确放入TreeSet中.并编写相应的测试代码. /** * Worker类 */ public class Work ...
- JavaSE编码试题强化练习3
1.给20块钱买可乐,每瓶可乐3块钱,喝完之后退瓶子可以换回1块钱,问最多可以喝到多少瓶可乐. public class TestCirculation { public static void ma ...
- JavaSE编码试题强化练习2
1.编写递归算法程序:一列数的规则如下: 0.1.1.2.3.5.8.13.21.34...... 求数列的第40位数是多少. public class TestRecursion { public ...
- JavaSE面试题
JavaSE面试题 欢迎到我的Git仓库去提交您觉得优秀的内容! 1.是否可以从一个static方法内部发出对非static方法的调用? 不可以.当一个static方法被调用时,可能还没有创建任何实例 ...
- [002] - JavaSE面试题(二):基本数据类型与访问修饰符
第一期:Java面试 - 100题,梳理各大网站优秀面试题.大家可以跟着我一起来刷刷Java理论知识 [002] - JavaSE面试题(二):基本数据类型与访问修饰符 第1问:Java的数据类型有哪 ...
- JavaSE 面试题: 类初始化和实例初始化等
JavaSE 面试题 类初始化和实例初始化等 class Father { private int i = test(); private static int j = method(); stati ...
随机推荐
- jquery blur()函数 语法
jquery blur()函数 语法 作用:当元素失去焦点时发生 blur 事件.blur() 函数触发 blur 事件,或者如果设置了 function 参数,该函数也可规定当发生 blur 事件时 ...
- jquery checked选择器 语法
jquery checked选择器 语法 作用::checked 选择器选取所有选中的复选框或单选按钮.直线电机参数 语法:$(":checked") jquery checked ...
- CSS3 box-sizing:content-box | border-box
box-sizing:content-box | border-box 默认值:content-box 适用于:所有接受width和height的元素 继承性:无 content-box: paddi ...
- Java进阶知识06 Hibernate一对一单向外键关联(Annotation+XML实现)
1.Annotation 注解版 1.1.创建Husband类和Wife类 package com.shore.model; import javax.persistence.Entity; impo ...
- numpy中np.max() 和 np.maximum() 的区别
np.max(a, axis=None, out=None, keepdims=False) # 接收一个参数a # 取a 在 axis方向上的最大值 np.maximum(x, y) # 接收两个参 ...
- 快速乘(O(1))
inline long long multi(long long x,long long y,long long mod) { long long tmp=(x*y-(long long)((long ...
- Leetcode题目20.有效的括号(简单)
题目描述: 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合.左括号必须以正确的顺序闭合.注意空字符 ...
- 20175215 2018-2019-2 第十周java课程学习总结
第十二章 Java多线程机制 12.1 进程与线程 12.1.1 操作系统与进程 程序是一段静态的代码,它是应用软件执行的蓝本. 进程是程序的一次动态执行过程,它对应了从代码加载.执行至执行完毕的一个 ...
- 编译openwrt时报错build_dir/hostpkg/libubox-2018-07-25-c83a84af/blobmsg_json.c:21:19: fatal error: json.h: No such file or directory
答: 一. 详细日志: build_dir/hostpkg/libubox-2018-07-25-c83a84af/blobmsg_json.c:21:19: fatal error: json.h: ...
- 简单说 JavaScript实现雪花飘落效果
说明 这次实现的雪花飘落的效果很简单,主要是为了练习练习JavaScript中的定时器,setTimeout 和 setInterval. 效果图 解释setTimeout() setTimeout函 ...