1 面向对象基础练习
1.1 Circle(圆形)
写一个名为Circle的类,它包括:
2个私有变量:半径radius(double)和 color(String)
2个构造函数:一个没有参数 - 自己给变量设置默认值,一个要传入radius参数
2个公共方法:getRadius()返回半径;getArea() 返回圆的面积
写一个测试类TestCircle - 用两个不同的构造函数来创建Circle,然后调用他们的方法。
为Circle增加新的构造函数,getter和setter方法和toString方法。最后类有如下属性和方法:
1.2 简化的Circle
getCircumference()是获得圆的周长
package hw1;
import java.util.Calendar;
public class hw1demo1 {
public static void main(String[] args) {
Circle c1 = new Circle();
System.out.println(c1.getColor()+" "+c1.getRadius()+" 面积:"+c1.getArea());
Circle c2 = new Circle( 2.5);
System.out.println(c2.getColor()+" "+c2.getRadius()+" "+c2.getClass()); //getClass 获取类的信息:,包+类名
}
}
class Circle{
public double getRadius() {
return radius;
}
public String getColor() {
return color;
}
public void setRadius(double radius) {
this.radius = radius;
}
public void setColor(String color) {
this.color = color;
}
private double radius = 1.0;//java可以在类中对非static属性直接赋值吗?是可以的,是默认值,当然如果在构造函数里面有设置默认,会覆盖
private String color = "red" ;
public Circle(){//构造函数一律public 因为new的时候需要调用。
radius = 2.0;
color = "green";//覆盖属性定义的默认值
}
public Circle(double radius){
this.radius = radius;
color = "green";
}
public Circle(double radius,String color){
this.radius = radius;
this.color = color;
}
public double getArea(){
return Math.PI*Math.pow(radius,2); //有没有pow函数
}
public String toString(){
return "Circle[radius="+radius+"]";
}
public double getCircumFerence(){
return Math.PI*2*radius;
}
}
3 大数值 BigInteger BigDecimal
3.1 需要视频讲解和练习
4 复杂类
4.1 MyTime
setTime方法需要检查传入数值的合法性,否则抛出IllegalArgumentException异常
各setter也要检查合法性
toString返回格式为“HH:MM:SS”
nextSecond返回下一秒的MyTime的实例。其他方法同等。
这里博主就不写next和previous了,因为C++学的时候写烂了都,考虑那几个24,59,60,00这些结点即可,没什么难的时间问题。
package hw1;
public class TestMyTime {
public static void main(String[] args) {
MyTime a = new MyTime(24,59,59);
// a.myToString();
a.setHour(25);//抛出异常,异常名后面跟着实例化的”hour不合法“
}
}
class MyTime{
public int getHour() {
return hour;
}
public int getMinute() {
return minute;
}
public int getSecond() {
return second;
}
public void setHour(int hour) {
if (hour>24||hour<0){
throw new IllegalArgumentException("hour不合法");//注意啊,throw是一个异常实例,而不是一个异常类
}
this.hour = hour;
}
public void setMinute(int minute) {
if (minute>60||minute<0){
throw new IllegalArgumentException();
}
this.minute = minute;
}
public void setSecond(int second) {
if (second>60||second<0){
throw new IllegalArgumentException();
}
this.second = second;
}
public int hour = 0;
public int minute = 0;
public int second = 0;
public MyTime(){
int hour = 0;
int minute = 0;
int second = 0;
}
public MyTime(int hour, int minute, int second) {
this.hour = hour;
this.minute = minute;
this.second = second;
}
public void setTime(int hour,int minute,int second) {
if ((second>60||second<0)||(minute>60||minute<0)||(hour>24||hour<0))
{
throw new IllegalArgumentException();
}
this.hour = hour;
this.second = second;
this.minute = minute;
}
public void myToString(){
System.out.printf("%d:%d:%d",hour,minute,second);
}
}