JAVA--面向对象编程题
一、static关键字:
package Static;
public class Dome {
public static void main(String [] args){
//StackOverflowError栈溢出
A a = new A();
System.out.println(a ==a .a);
System.out.println(a.a == a.a.a);
}
}
class A{
//int [][] arr= new int [1024][1024];
//Exception in thread "main" java.lang.OutOfMemoryError: Java heap space堆内存溢出
//A a = new A();
//显示初始化
static A a = new A();
}
/*
Exception in thread "main" java.lang.StackOverflowError
at Static.A.<init>(Dome.java:12)
Exception in thread "main" java.lang.OutOfMemoryError
俩个溢出问题:没加static是有区别的。
*/
二.
1.俩个名为width 和height 的double型数据域,他们分别表示矩形宽和高,width和height默认值都是1
2.创建默认矩形的无参构造方法
3.一个创建width 和 height 为指定值得矩形构造方法
4.一个名为getArea()的方法返回矩形的面积
5.一个名为hetperimeter()的方法返回周长
package Static;
/*
1.俩个名为width 和height 的double型数据域,他们分别表示矩形宽和高,width和height默认值都是1
2.创建默认矩形的无参构造方法
3.一个创建width 和 height 为指定值得矩形构造方法
4.一个名为getArea()的方法返回矩形的面积
5.一个名为hetperimeter()的方法返回周长
*/
public class Demo106 {
public static void main(String [] args){
Rectangle r1 = new Rectangle();
System.out.println(r1.getArea());
System.out.println(r1.getPerimeter());
Rectangle r2 = new Rectangle(5 , 10);
System.out.println(r2.getArea());
System.out.println(r2.getPerimeter());
}
}
class Rectangle{
//1.俩个名为width 和height 的double型数据域,他们分别表示矩形宽和高,width和height默认值都是1
private double width = 1;
private double height = 1;
//2.创建默认矩形的无参构造方法
public Rectangle(){}
//3.一个创建width 和 height 为指定值得矩形构造方法
public Rectangle (double width ,double height){
this.width = width;
this.height = height;
}
//4.一个名为getArea()的方法返回矩形的面积
public double getArea(){
return width * height;
}
//5.一个名为hetperimeter()的方法返回周长
public double getPerimeter(){
return 2 *(width + height);
}
}
三、设计一个名为StopWatch的类,该类包含:
1.具有访问器方法的私有数据域startTime 和endTime
2.一个无参构造方法,使用当前时间来初始化StartTime
3.一个名为start()的方法,将starttime重设为当前时间
4.一个名为stop()的方法,将endtime设置为当前时间
5.一个名为getElapsedTime()的方法,以毫秒为单位返回秒表记录的流逝时间
package Static;
/*
设计一个名为StopWatch的类,该类包含:
1.具有访问器方法的私有数据域startTime 和endTime
2.一个无参构造方法,使用当前时间来初始化StartTime
3.一个名为start()的方法,将starttime重设为当前时间
4.一个名为stop()的方法,将endtime设置为当前时间
5.一个名为getElapsedTime()的方法,以毫秒为单位返回秒表记录的流逝时间
*/
public class Demo107 {
public static void main(String [] args){
StopWatch sw = new StopWatch();
sw.start();
for (int i = 0; i < 1000000000; i++){
for(int j = 0;j<9999999;j++){
}
}
sw.stop();
System.out.println(sw.getElapsedTime());
}
}
//设计一个名为StopWatch的类,该类包含:
class StopWatch{
//1.具有访问器方法的私有数据域startTime 和endTime
private long startTime;
private long endTime;
//2.一个无参构造方法,使用当前时间来初始化StartTime
public StopWatch(){
startTime = System.currentTimeMillis();
}
//3.一个名为start()的方法,将starttime重设为当前时间
public void start(){
startTime = System.currentTimeMillis();
}
//4.一个名为stop()的方法,将endtime设置为当前时间
public void stop(){
endTime = System.currentTimeMillis();
}
//5.一个名为getElapsedTime()的方法,以毫秒为单位返回秒表记录的流逝时间
public long getElapsedTime(){
return endTime - startTime;
}
//访问器
public long getStartTime(){
return startTime;
}
public long getEndTime(){
return endTime;
}
}
四、设计一个名为Fan的类来表示一个风扇,这个类包括:
1.三个名为SLOW、MEDIUM和FAST而值为1、2和3的常量,表示风扇的速度
2.一个名为speed的int类型私有数据域,表示风扇的速度(默认值为SLOW)
3.一个名为on的boolean类型私有数据域,表示风扇是否打开(默认值为false)
4.一个名为radius的double类型私有数据域,表示风扇的半径(默认值为5)
5.一个名为color的string类型数据域,表示风扇的颜色(默认值为blue)
这四个数据域的访问器和修改器
package Static;
/*
.设计一个名为Fan的类来表示一个风扇,这个类包括:
1.三个名为SLOW、MEDIUM和FAST而值为1、2和3的常量,表示风扇的速度
2.一个名为speed的int类型私有数据域,表示风扇的速度(默认值为SLOW)
3.一个名为on的boolean类型私有数据域,表示风扇是否打开(默认值为false)
4.一个名为radius的double类型私有数据域,表示风扇的半径(默认值为5)
5.一个名为color的string类型数据域,表示风扇的颜色(默认值为blue)
这四个数据域的访问器和修改器
*/
public class Demo38{
public static void main(String[] args){
Fan debug1=new Fan();//为Fan类创建对象debug1
debug1.setSpeed(3);//调用修改器,修改里面的数据
debug1.setOn(true);
debug1.setRadius(10);
debug1.setColor("yellow");
System.out.println(debug1.toString());
Fan debug2=new Fan();//创建第二个对象
debug2.setSpeed(2);
debug2.setOn(false);
debug2.setRadius(5);
debug2.setColor("blue");
System.out.println(debug2.toString());
}
}
class Fan{
private final int SlOW=1;
private final int MEDIUM=2;
private final int FAST=3;
private int speed;
private boolean on;
private double radius;
private String color;
Fan(){
this.speed=SlOW;
this.on=false;
this.radius=5;
this.color="blue";
}
public String toString(){
if(getOn()==false){
return "Fan is off,color is "+getColor()+",radius is "+getRadius();
}else{
return "Fan is on,color is "+getColor()+",radius is "+getRadius()+",speed is "+getSpeed();
}
}
public void setSpeed(int speed){
this.speed=speed;
}
public int getSpeed(){
return speed;
}
public void setOn(boolean on){
this.on=on;
}
public boolean getOn(){
return on;
}
public void setRadius(double radius){
this.radius=radius;
}
public double getRadius(){
return radius;
}
public void setColor(String color){
this.color=color;
}
public String getColor(){
return color;
}
}
package Static;
public class Demo108 {
public static void main(String[] args) {
Fan1 f1 =new Fan1();
System.out.println(f1.toString());
f1.setSpeed(Fan1.MEDIUM);
f1.setOn(true);
f1.setColor("red");
f1.setRadius(10);
System.out.println(f1.toString());
}
}
class Fan1{
public static final int SLOW = 1;
public static final int MEDIUM = 2;
public static final int FAST = 3;
private int speed = SLOW;
private boolean on = false;
private double radius = 5;
private String color = "blue";
public Fan1(){
}
public String toString(){
if(on){
return speed +" "+ color +" "+ radius;
}else {
return "fan is off" +" "+ color +" "+ radius;
}
}
//访问器
public void setSpeed(int speed){
this.speed = speed;
}
public void setOn(boolean on){
this.on = on;
}
public void setRadius(double radius){
this.radius = radius;
}
public void setColor(String color){
this.color = color;
}
//修改器
public int getSpeed(){
return speed;
}
public boolean isOn(){
return on;
}
public double getRadius() {
return radius;
}
public String getColor(){
return color;
}
}
五、二次方程式axx+bx+c=0设计一个名为QuadraticEquation的类。这个类包括:
1.代表三个系数的私有数据域a、b和c
2.一个参数为a、b和c的构造方法
3.一个名为getDiscriminant()的方法返回判别式,bb-4ac
4.名为getRoot1()和getRoot2()的方法返回等式的两个根:
package Static;
/*
为二次方程式axx+bx+c=0设计一个名为QuadraticEquation的类。这个类包括:
1.代表三个系数的私有数据域a、b和c
2.一个参数为a、b和c的构造方法
3.一个名为getDiscriminant()的方法返回判别式,bb-4ac
4.名为getRoot1()和getRoot2()的方法返回等式的两个根:
*/
public class Demo39{
public static void main(String[] args){
QuadraticEquation q=new QuadraticEquation(2,1,5);
q.getRoot1();
q.getRoot2();
}
}
class QuadraticEquation{
private double a,b,c;//私有域a、b、c
public QuadraticEquation(double a,double b,double c){//构造方法
this.a=a;
this.b=b;
this.c=c;
}
public double getDiscriminant(){
return b*b-4*a*c;
}
public void getRoot1(){
double delt=getDiscriminant();
if(delt<0){
System.out.println("The equation has no roots.");
}else if(delt==0){
System.out.println((-b)/(2*a));
}else{
System.out.println((-b+Math.sqrt(delt))/(2*a));
}
}
public void getRoot2(){
double delt=getDiscriminant();
if(delt<0){
System.out.println("The equation has no roots.");
}else if(delt==0){
System.out.println((-b)/(2*a));
}else{
System.out.println((-b-Math.sqrt(delt))/(2*a));
}
}
//a、b、c的三个get方法
public double getA(){
return this.a;
}
public double getB(){
return this.b;
}
public double getC(){
return this.c;
}
}
六、设计一个名为MyInteger的类。这个类包括
1.一个名为value 的int 型数据域,存储这个对象表示的int值
2.一个指定的int值创建MyInteger对象构造方法
3.一个返回int值得get方法
4.如果值分别为偶数,奇数,素数,那么isEven() isOdd() isprime()方法都会返回ture
5.如果该对象的值与指定的值相等,那么equals (int) 和 equals(MyInteger)方法返回值ture
6.静态方法parseInt(Char[])将数字字符构成的数组转换成一个int值
7.静态方法parseInt(String)将一个字符串转换成一个int值
package Static;
/*
设计一个名为MyInteger的类。这个类包括
1.一个名为value 的int 型数据域,存储这个对象表示的int值
2.一个指定的int值创建MyInteger对象构造方法
3.一个返回int值得get方法
4.如果值分别为偶数,奇数,素数,那么isEven() isOdd() isprime()方法都会返回ture
5.如果该对象的值与指定的值相等,那么equals (int) 和 equals(MyInteger)方法返回值ture
6.静态方法parseInt(Char[])将数字字符构成的数组转换成一个int值
7.静态方法parseInt(String)将一个字符串转换成一个int值
*/
public class Demo113 {
public static void main(String [] args){
//自己测自己:
MyInteger m1 = new MyInteger(3);
System.out.println(m1.isEven());
System.out.println(m1.isPrime());
System.out.println(m1.isOdd());
//借助工具测:
MyInteger m2 = new MyInteger(4);
MyInteger m3 = new MyInteger(13);
System.out.println(MyInteger.isEven(m2));
System.out.println(MyInteger.isPrime(m3));
System.out.println(m2.equals(m3));
System.out.println(MyInteger.parseInt("1234") +1);
}
}
class MyInteger {
//1.一个名为value 的int 型数据域,存储这个对象表示的int值
private int value;
// 2.一个指定的int值创建MyInteger对象构造方法
public MyInteger(int value) {
this.value = value;
}
// 3.一个返回int值得get方法
public int get() {
return value;
}
// 4.如果值分别为偶数,奇数,素数,那么isEven() isOdd() isprime()方法都会返回ture
public boolean isEven() {
return value % 2 == 0;
}
public boolean isOdd() {
return value % 2 == 1;
}
public boolean isPrime() {
for (int i = 2; i < value / 2; i++) {
if (value % i == 0) {
return false;
}
}
return true;
}
//5.如果该对象的值与指定的值相等,那么equals (int) 和 equals(MyInteger)方法返回值ture
public static boolean isEven(MyInteger integer) {
return integer.get() % 2 == 0;
}
public static boolean isOdd(MyInteger integer) {
return integer.get() % 2 == 1;
}
public static boolean isPrime(MyInteger integer) {
for (int i = 2; i < integer.get() / 2; i++) {
if (integer.get() % i == 0) {
return false;
}
}
return true;
}
public boolean equals(int num) {
return value == num;
}
public boolean equals(MyInteger integer) {
return value == integer.get();
}
// 7.静态方法parseInt(String)将一个字符串转换成一个int值
//1234
public static int parseInt(String str){
int result = 0;
for (int i = 0 ; i <str.length() ; i++){
int num = str.charAt(i) - '0';
result = num + result * 10;
}
return result;
}
}
-------------------------------------------
个性签名:今天做了别人不想做的事,明天你就做得到别人做不到的事,尝试你都不敢,你拿什么赢!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!