本文目录一览:
这道java题应该怎么做?
Java源代码:
public class Test {
public static void main(String[] args) {
Point p1 = new Point(4, 5);
System.out.printf("点p坐标为(%f,%f)\n", p1.getX(), p1.getY());
p1.setX(3);
p1.setY(4);
System.out.printf("重置后点p坐标为(%f,%f)\n", p1.getX(), p1.getY());
System.out.printf("点(%f, %f)到原点的距离的平方为%f\n", p1.getX(), p1.getY(),
p1.distance());
Point p2 = new Point(1, 2);
System.out.printf("点(%f,%f)到点(%f,%f)的距离的平方为%f\n", p1.getX(),
p1.getY(), p2.getX(), p2.getY(), p1.distance(p2));
}
}
class Point {
protected double x;
protected double y;
public Point(){
}
public Point(double x, double y) {
this.x = x;
this.y = y;
}
public void setX(double x) {
this.x = x;
}
public double getX() {
return this.x;
}
public void setY(double y) {
this.y = y;
}
public double getY() {
return this.y;
}
public double distance() {
return Math.pow(x, 2) + Math.pow(y, 2);
}
public double distance(Point p) {
return Math.pow(this.x - p.x, 2) + Math.pow(this.y - p.y, 2);
}
}
运行测试:
java题目,这道题用守护线程怎么做?
守护线程需要将指定线程的setDaemon()置为true,整体代码为:
import java.util.Random;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
System.out.println("main线程启动");
//设置main线程退出监听线程,当maim线程真正结束时,会打印该日志
Runtime.getRuntime().addShutdownHook(new Thread(() - System.out.println("main开始退出")));
//设置线程1,死循环,每3秒输出一个随机整数
Thread thread1 = new Thread(() - {
System.out.println("线程1启动");
while (true) {
Random random = new Random();
System.out.println("线程1输出随机整数:[" + random.nextInt(100) + "]");
try {
Thread.sleep(3 * 1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
thread1.setDaemon(true);//守护线程1
//设置线程2,监听“Q”命令,收到命令后线程2结束
Thread thread2 = new Thread(() - {
System.out.println("线程2启动");
Scanner in = new Scanner(System.in);
String command = "";
while (!"Q".equals(command)) {
System.out.println("线程2等待输入");
command = in.nextLine();
System.out.println("线程2输入:[" + command + "]");
}
System.out.println("线程2收到终止命令,线程2已结束");
});
thread1.start();
thread2.start();
System.out.println("main线程结束,等待子线程结束");
}
}
关键在于第23行:thread1.setDaemon(true);//守护线程1
我们分析一下我的这段代码,main函数启动后,会先后开始执行线程1和线程2,之后main线程结束,等待所有子线程结束后,main线程即可退出,同时关闭jvm。
我们先看一下如果线程1没有设置为守护线程会咋样,可以看到,线程1是一个死循环,它自己是永远不会主动结束的,线程2则是当输入“Q”命令后,跳出while循环,结束线程2。
运行一下没有守护线程1的情况:
运行后,线程1一直在输出整数,线程2收到“Q”命令后也结束了,但是线程1还是在输出,main线程也无法停止,jvm将一直存在下去。
现在再运行守护线程1的情况:
线程2收到“Q”命令后,线程2结束,此时由于线程1被守护,main线程开始退出,之后,jvm关闭,守护线程1被自动回收。
java题目怎么做
继承就是父类继承子类,关键字extends,继承后子类拥有父类的属性和方法。子类就是继承的类,在类名后有extends关键字。好处:继承可以减少代码的重复性,提高程序的可维护性。单重继承就是只继承一个父类。多重继承就是子类继承两个或更多父类,java的抽象类不可以多重继承,但可以多层继承,多层继承就是父类还有父类。接口可以多重实现(抽象类叫继承,接口叫实现)
2.这种说法是不正确的。因为子类不可以拥有父类的私有域和私有方法。
3.覆盖就是在继承父类的子类里面写一个与父类相同的方法。域的隐藏是指子类里面有两个相同的变量,其中一个继承父类,另一个由自己定义,当子类执行继承父类的操作时,处理的是继承父类的对象,而当子类执行它自己的方法时,所操作的就是它自己定义的变量,而把父类的变量“隐藏”起来。重载是指在同一个类中有相同名称的方法,但它们的返回类型或参数类型或者参数个数不同(简单的说就是同名不同参)。
4.多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作(摘自“Delphi4 编程技术内幕”)。使用多态性的好处:
1).派生类的功能可以被基类的方法或引用变量所调用,这叫向后兼容,可以提高可扩充性和可维护性。
2).应用程序不必为每一个派生类编写功能调用,只需要对抽象基类进行处理即可。大大提高程序的可复用性。
5。。。睡觉了,以后再看吧
0 1 8
更多回答(2)
华清池兵马俑一日游兵马俑+华清宫一...
华清池兵马俑一日游 , 华清池兵马俑一日游 , 赠送自助餐...
电话咨询:兵马俑华清池一日游报价
西安中国国际旅行社..广告
兵马俑一日游 参团赠送中餐+耳麦...
兵马俑一日游 西安到兵马俑一日游 ,兵马俑一日游 ,西安...
中国康辉西安国际旅..广告
为您推荐
java题目怎么做
string a[]= new string[]
浏览38
这些java题怎么做啊???
第一张图:method1方法没有定义返回值类型会报错,method1方法参数m没有定义类型会报错,m
1 浏览29 2017-05-25
java题怎么做
在哪里学的呀,不靠谱嘛!还是到 安徽万工 系统学习下吧!这样能成功就业!
浏览37 2017-11-06
怎么做下面的java题目?
做法如下:
请问这个Java题怎么做?
按照题目要求编写的Java程序如下
import java.util.Scanner;
class RadiusException extends Exception{
public RadiusException(String message){
super(message);
}
}
public class Circle{
public double area(double r) throws RadiusException{
if(r0)
throw new RadiusException("输入错误");
else
return Math.PI*r*r;
}
public static void main(String[] args){
System.out.print("请输入圆的半径r:");
try{
Scanner sc=new Scanner(System.in);
double r=sc.nextDouble();
Circle c=new Circle();
System.out.println("圆的面积为"+c.area(r));
sc.close();
}catch(RadiusException re){
System.out.println(re.getMessage());
}
}
}