第1题

案例:

声明一个日期类MyDate,包含属性:年、月、日

声明一个Test02测试类,并在main方法中,创建3个日期对象,一个是你的出生日期,一个是随机定义的日期,一个是今年过年的日期,并打印显示

系统预定义的日期类型。jdk1.8+提供了2套日期类型

java.util.Datepublic class Date implements java.io.Serializable,Cloneable,
Comparable<Date>{private transient long fastTime;  //具体的日期是采用从1970-1-1 0:0:0 到指定日期的毫秒值进行存储。  年-1900  月-1
}

自定义类

public class MyDate{  //默认继承于java.lang.Object类,不需要import语句导入。int year;   //成员属性  范围限定词默认为package,只是同包可见int month;int date;public void setYear(int year){  //方法名称命名的规则为小写字母开头,大写字母分词this.year = year;  }public String toString(){return year + "年" + month + "月" + date + "日";}
}

测试类

public class Test02{public static void main(String[] args){MyDate d1 = new MyDate();d1.year = 1972;d1.month = 4;d1.date = 30;System.out.println(d1.toString());}
}

第2题

案例:

声明公民类Citizen,包含属性:姓名,生日,身份证号,其中姓名是String类型,生日是MyDate类型,身份证号也是String类型。

声明Test03测试类,在main方法中创建你们家庭成员的几个对象,并打印信息。

public class Citizen{protected String name;public MyDate birth;private String ID;
​    //私有属性添加get/set方法访问public String getID() {return ID;}
​public void setID(String iD) {ID = iD;}
​public String toString() {return "家庭成员 " + "姓名:" + name + " 出生日期:" + birth + " 身份证号:" + this.ID;}
}

测试类

public class Test03 {public static void main(String[] args) {Citizen citizen  = new Citizen();citizen.name = "张三";MyDate mydate = new MyDate();mydate .setYear(2021);mydate .setMonth(03);mydate .setDate(06);citizen.birth = d1;citizen.setID("123456789");System.out.println(citizen.toString());}
​
}

第3题

案例:

声明一个日期类MyDate,包含属性:年、月、日,并在MyDate类中声明几个方法:

1、boolean isLeapYear():判断当前日期的是闰年吗?

2、void set(int y, int m, int d):修改年,月,日为新日期

3、void puls(int years, int months, int days):加上years年,months月,days天后的日期

并在测试类Test04的main方法中创建对象,并调用测试

public class MyDate{private int year;private int month;private int date;//判断当前日期是否是闰年public boolean isLeapYear(){if(year % 4 == 0 && year / 100 !=0)return ture;else if(year % 400 == 0)return true;elsereturn false;}//修改年,月,日为新日期public void set(int y,int m, int d){year = y;month = m;date = d;  }//加上years年,months月,days天后的日期public void puls(int years, int months, int days){this.year += years;this.date += days;this.month += months;if (this.month > 12) {this.year++;this.month -= 12;}//这里得判断加完的月份值是否超过12,天数是否超过本月的天数//如果超过则月份和天数做出相应的变化//2月有闰年的存在  所以需要单独进行判断//特殊12月  如果超出则需要对年进行修稿while (true) {if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10) {if (date > 31) {date -= 31;month++;} elsebreak;} else if (month == 4 || month == 6 || month == 9 || month == 11) {if (date > 30) {date -= 30;month++;} elsebreak;} else if (month == 2) {//调用当前类中的方法  判断是否是闰年if (isLeapYear()) {if (date > 28) {date -= 28;month++;
​} elsebreak;} else if (date > 29) {date -= 29;month++;} elsebreak;} else if (month == 12) {if (date > 31) {date -= 31;month = 1;year++;}}}}
}

测试类

public class Test04 {public static void main(String[] args) {MyDate date = new MyDate();//调用方法 修改年,月,日为新日期date.set(2001, 3, 6);System.out.println(date);// 判断是否为闰年System.out.println(date.isLeapYear());//加上years年,months月,days天后的日期date.puls(20, 9, 3);System.out.println(date);}}

第4题

案例:

声明一个三角形类Triangle,包含属性:a,b,c,表示三条边,包含几个方法:

1、boolean isRightTriangle():判断是否是一个直角三角形

2、boolean isIsoscelesTriangle():判断是否是一个等腰三角形

3、boolean isEquilateralTriangle():判断是否是一个等边三角形

4、double getArea():根据三条边,用海伦公式求面积

5、double getLength():求周长

并在测试类Test05的main方法中调用测试

public class Triangle {private double a;private double b;private double c;
​// 判断是否为直角三角形public boolean isRightTriangle() {// 首先判断值的合法性if (a > 0 && b > 0 && c > 0) {// 判断是否构成三角形if (a + b > c && a + c > b && b + c > a) {// 判断是否为直角三角形if (a * a == b * b + c * c || b * b == a * a + c * c || c * c == a * a + b * b) {return true;}}}return false;}
​// 判断是否为等腰三角形public boolean islsoscelesTriangle() {// 判断值的合法性if (a > 0 && b > 0 && c > 0) {// 判断是否能构成三角形if (a + b > c && a + c > b && b + c > a) {// 判断是否为等腰三角形if (a == b || b == c || a == c) {return true;}}}return false;
​}//判断是否为等边三角形public boolean isEquilateralTriangle() {// 判断值的合法性if (a > 0 && b > 0 && c > 0) {// 判断是否能构成三角形if (a + b > c && a + c > b && b + c > a) {// 判断是否为等边三角形if (a == b && b == c) {return true;}}}return false;}//计算三角形的周长public double getLength() {// 判断值的合法性if (a > 0 && b > 0 && c > 0) {// 判断是否能构成三角形if (a + b > c && a + c > b && b + c > a) {return (a + b + c);}}return -1;}//计算三角形的面积(利用海伦公式)public double getArea() {// 判断值的合法性if (a > 0 && b > 0 && c > 0) {// 判断是否能构成三角形if (a + b > c && a + c > b && b + c > a) {double p = (a + b + c) / 2;double q = (p * (p - a) * (p - b) * (p - c));return Math.sqrt(q);}}return -1;}//私有类外访问  添加get/set方法public double getA() {return a;}
​public void setA(double a) {this.a = a;}
​public double getB() {return b;}
​public void setB(double b) {this.b = b;}
​public double getC() {return c;}
​public void setC(double c) {this.c = c;}
​
}

测试类

public class Test05 {public static void main(String[] args) {Triangle triangle  = new Triangle();  //调用无参构造器// 私有属性通过set方法修改值  get方法获取triangle.setA(3.); triangle.setB(4.);triangle.setC(5.);//通过对象名.方法名调用方法System.out.println("是否为等边三角形:"+triangle.isEquilateralTriangle());System.out.println("是否为等腰三角形:"+triangle.islsoscelesTriangle());System.out.println("是否为直角三角形:"+triangle.isRightTriangle());System.out.println("面积为:"+triangle.getArea());System.out.println("周长为:"+triangle.getLength());}
​
}

第5题

工具类的概念和static方法

定义对象的目标是为了封装数据和数据相关操作,同一个类属的对象相互堵路

public class A{public void pp(){}
}
/*  在测试类中*  正常调用方法pp: new A().pp();*  不能  A.pp();*  在类A内部可以直接调用*/
public class A{public void pp() {}public void cc() {pp();   //允许方法之间相互调用}
}
​

工具类中只有操作,没有数据的封装,则可以定义访问为static静态的。静态方法不需要创建对象在进行调用

public class A{public static void pp(){}
}
/** 在测试类中* 通过 A.pp()进行调用  也可以使用new A().pp();  但是不建议*/

案例:

声明一个数学计算工具类MathTools,包含如下方法:

1、int add(int a, int b):求a+b

2、int subtract(int a,int b):求a-b

3、int mutiply(int a, int b):求a*b

4、int divide(int a, int b):求a/b

5、int remainder(int a, int b):求a%b

6、int max(int a, int b):求a和b中的最大值

7、int min(int a, int b):求a和b中的最小值

8、boolean equals(int a, int b):判断a和b是否相等

9、boolean isEven(int a):判断a是否是偶数

10、boolean isPrimeNumer(int a):判断a是否是素数

11、int round(double d):返回d的四舍五入后的整数值

public class MathTools {// 如果没有定义构造器 系统默认提供无参构造器// 如果自定义构造器 那么应该提供无参构造器(建议做法)public MathTools() {}
​// a+bpublic static int add(int a, int b) {int c = a + b;return c;}
​// a-bpublic static int subtract(int a, int b) {int c = a - b;return c;}
​// a*bpublic static int mutiply(int a, int b) {int c = a * b;return c;}
​// a%bpublic static int remainder(int a, int b) {int c = a % b;return c;}
​// a和b中的最大值public static int Max(int a, int b) {int c = Math.max(a, b);return c;}
​// a和b中的最小值public static int Min(int a, int b) {int c = Math.min(a, b);return c;}
​// 判断a和b是否相等public static boolean equals(int a, int b) {if (a == b) {return true;}return false;}
​// 判断a是否是偶数public static boolean isEven(int a) {if (a % 2 == 0) {return true;}return false;}
​// 返回四舍五入后的整数值public static int round(double a) {// 传入的参数为double类型 所以需要进行窄化操作int c = (int) Math.round(a);return c;}
​// a/bpublic static int Divide(int a, int b) {int c = a / b;return c;}
​// 判断a是否是素数public boolean isPrimeNumber(int a) {int count = 0;for (int i = 2; i < a; i++) {if (a % i == 0) {count++;break;}}if (count == 0)return true;elsereturn false;}
}

声明一个Test06测试类,并在main方法中调用测试

public class Test06 {public static void main(String[] args) {new MathTools();// 调用方法 判断是否为素数boolean res = MathTools.isPrimeNumber(13);System.out.println(res);// 两数和int sum = MathTools.add(2, 3);System.out.println(sum);// 四舍五入int digital = MathTools.round(18.2);System.out.println(digital);}
}

第6题

案例:练习排序算法和折半查找法以及System.arrayCopy方法

声明一个数组管理工具类MyArrays,包含如下方法:

1、void sort(int[] arr):可以为任意一维整型数组arr实现从小到大排序

2、int indexOf(int[] arr, int value):可以在任意一维整型数组arr中查找value值的下标,如果不存在返回-1

3、int[] copy(int[] arr, int len):可以实现从任意一维数组arr中复制一个新数组返回,新数组的长度为len,从arr[0]开始复制

import java.util.Arrays;
​
public class MyArrays {// 定义方法 利用冒泡排序对数组进行排序(自然排序)public static void sort(int[] arr) {for (int i = 1; i < arr.length; i++) {for (int k = 0; k < arr.length - i; k++) {if (arr[k] > arr[k + 1]) {int temp = arr[k + 1];arr[k + 1] = arr[k];arr[k] = temp;}}}}
​// 在任意一维整型数组arr中查找value值的下标,如果不存在返回-1public static int indexOf(int[] arr, int value) {sort(arr); // 折半查找的前提是有序的  所以调用冒泡排序对数组进行排序return binarySearch(arr, value, 0, arr.length - 1);//利用折半查找的方法寻找value值的下标}
​// 折半查找public static int binarySearch(int[] arr, int target, int begin, int end) {if (begin > end)return -1;int mid = (begin + end) / 2;if (arr[mid] < target) {begin = mid + 1;} else if (arr[mid] > target) {end = mid - 1;} elsereturn mid;return binarySearch(arr, target, begin, end); // 调用自身}
​// 实现从任意一维数组arr中复制一个新数组返回,新数组的长度为len,从arr[0]开始复制public static int[] copy(int[] arr, int len) {int[] res = new int[len];int newLen = Math.min(len, arr.length);System.arraycopy(arr, 0, res, 0, newLen);return res;}
​// 输出数组public static void showArray(int[] arr) {System.out.println(Arrays.toString(arr));}
}

声明一个Test07测试类,并在main方法中调用测试

import java.util.Arrays;
import java.util.Random;
​
public class Test07 {
​public static void main(String[] args) {Random random = new Random();// 生成[10,20)以内的随机数(int类型)int[] arr = new int[random.nextInt(10) + 10];// 生成随机数组for (int i = 0; i < arr.length; i++) {arr[i] = (int) (Math.random() * 100);}new MyArrays();// 调用静态方法 冒泡排序MyArrays.sort(arr);// 调用方法输出数组MyArrays.showArray(arr);int[] arr1 = new int[] { 6, 2, 1, 3, 8, 4, 56, 7, 9 };// 调用方法 寻找value=56的下标int temp = MyArrays.indexOf(arr1, 56);System.out.println("数组中56的下标为:" + temp);// 实现数组的复制int[] res = MyArrays.copy(arr, 10);System.out.println("复制后的数组为:" + Arrays.toString(res));}
​
}

第7题

案例:

声明一个常识工具类DateCommonsTools,包含如下方法:

1、String getWeekName(int week):根据星期值,返回对应的英语单词

2、String getMonthName(int month):根据月份值,返回对应的英语单词

3、int getTotalDaysOfMonth(int year, int month):返回某月的总天数

4、int getTotalDaysOfYear(int year):获取某年的总天数

5、boolean isLeapYear(int year):判断某年是否是闰年

public class DateCommonsTools {
//根据星期值,返回对应的英语单词public String getWeekName(int week) {
​String[] arr = new String[] { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Staurday", "Sunday" };if (week < 7 && week > 0)return arr[week];elsereturn "输入有误!";}
​
//根据月份值,返回对应的英语单词public String getMonthName(int month) {String[] arr = new String[] { "January", "February", "March", "April", "May", "June", "July", "Auguet","September", "October", "November", "December" };if (month > 0 && month < 13)return arr[month];elsereturn "";}
​
//返回某年某月的总天数public int getTotalDaysOfMonth(int year, int month) {int res = 0;if (month > 0 && month < 32) {switch (month) {case 1:case 3:case 5:case 7:case 8:case 10:case 12:res = 31;break;case 4:case 6:case 9:case 11:res = 30;break;case 2:if (isLeapYear(year))res = 28;elseres = 29;break;default:System.out.println("输入有误!");}}return res;}
​
//获取某年的总天数public int getTotalDaysOfYear(int year) {if (isLeapYear(year))return 366;elsereturn 356;}
​
//判断是否为闰年private static boolean isLeapYear(int year) {if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)return true;elsereturn false;
​}
}

声明一个Test08测试类,并在main方法中调用测试

public class Test08 {public static void main(String[] args) {new DateCommonsTools();String WeekName = DateCommonsTools.getWeekName(2);System.out.println(WeekName);String MonthName = DateCommonsTools.getMonthName(10);System.out.println(MonthName);int MonthNum = DateCommonsTools.getTotalDaysOfMonth(2020, 2);System.out.println(MonthNum);int YearNum = DateCommonsTools.getTotalDaysOfYear(2020);System.out.println(YearNum);}
​
}

Java面向对象基础练习题(含答案超详细)相关推荐

  1. 七、MySQL 多表查询详解(附练习题及答案----超详细)

    文章目录 一.笛卡尔积(或交叉连接)的理解 二.多表查询分类讲解 2.1 分类1:等值连接 vs 非等值连接 2.2 分类2:自连接 vs 非自连接 2.3 分类3:内连接 vs 外连接 2.4 SQ ...

  2. java面向对象课件_《JAVA面向对象基础》PPT课件.ppt

    <<JAVA面向对象基础>PPT课件.ppt>由会员分享,可在线阅读,更多相关<<JAVA面向对象基础>PPT课件.ppt(68页珍藏版)>请在人人文库 ...

  3. 计算机一级办公软件试题,计算机一级《MS Office》练习题(含答案)

    计算机一级<MS Office>练习题(含答案) 11.完整的计算机软件指的是__________. A.程序.数据与相应的文档 B.系统软件与应用软件 C.操作系统与应用软件 D.操作系 ...

  4. 计算机应用基础2010版知识点,2010计算机应用基础选择题(含答案版)重点.doc

    2010计算机应用基础选择题(含答案版)重点 第1部分 1.C 根据计算机使用的电信号来分类,电子计算机分为数字计算机和模拟计算机,其中,数字计算机是以( )为处理对象. A.字符数字量 B.物理量 ...

  5. 计算机应用基础知道,谁知道计算机应用基础练习题的答案?

    谁知道计算机应用基础练习题的答案? 46.简述美籍匈牙利数学家冯·诺依曼(Von Neumann)在1946年提出的关于计算机的体系结构和"程序存储"的设计思想. 47.简要说明W ...

  6. 计算机一级ms office模拟真题,2016计算机一级《MS Office》模拟练习题(含答案)

    2016计算机一级<MS Office>模拟练习题(含答案) 答案与解析 (1)A. [解析]Windows属于单用户多任务操作系统. (2)B. [解析]ASCI1码7位编码27=128 ...

  7. 【Java】Java学习笔记(2)——Java面向对象基础作业函数题

    本人私人博客:Megalomania,大部分文章会现在博客上传,有不足之处欢迎指正. 学校小学期Java课程的练习题,留个档便于以后需要时候有例子可以回忆,写的烂的地方请多多包含 1.求两个数值之和 ...

  8. 32位计算机通常是指控制总线,“三校生”对口升学计算机应用试卷计算机基础知识(含答案)...

    "三校生"计算机应用基础试卷(含答案) 课程名称:计算机应用基础 题 五 六 总分 统分 号 一 二 三 四教师 得 分 :名一.是非选择题(对的选A,错的选B.本大题共15小题, ...

  9. 用友公司Java面试题(含答案)

    为什么80%的码农都做不了架构师?>>>    用友公司Java面试题(含答案) 1.Hashtable和HashMap有什么区别?   a.Hashtable是继承自陈旧的Dict ...

  10. Java中的多线程编程(超详细总结)

    文章目录 Java中的多线程编程(超详细总结) 一.线程与多线程的概念 二.线程与进程之间的关系 三.一个线程的生命周期 四.多线程的目的和意义 五.线程的实现的方式 Java中的多线程编程(超详细总 ...

最新文章

  1. C语言字符串排序!_只愿与一人十指紧扣_新浪博客
  2. IDC报告:欧洲区块链支出8亿美元,排在首位
  3. 谷歌相册也不能无限白嫖了,「地主家」也烧不起免费网盘
  4. sqlite DLL load failed
  5. 关掉Ctrl+Alt+方向键转屏功能
  6. Kubernetes容器云的互联网企业实践
  7. ubuntu18.04 Qt Creator 安装+ROS Qt Creator Plug-in 插件安装笔记
  8. mysql悲观锁总结和实践
  9. Java 数组转成集合List三种方法和(数组、集合List、Set相互转换)
  10. 指令重排序及Happens-before法则随笔
  11. oracle更新视图。
  12. mysql性能优化较佳实践_MySQL性能优化的21个最佳实践 和 mysql使用索引
  13. 罗永浩将举办「老人与海」发布会;微软疑似遭遇大范围全球宕机;Python 3.9 首个测试版发布 | 极客头条...
  14. read实现交互输入自动化(笔记)
  15. L1-046 整除光棍-PAT团体程序设计天梯赛GPLT
  16. linux中文输入法 ibus
  17. 关于Java的反射机制,你需要理解这些..
  18. PMP考试真题模拟PMP考试模拟试题及答案详解
  19. dwg格式的计算机图,看图纸(DWG文件浏览器)
  20. 2021春考计算机技能考什么,春季高考技能考试-信息技术类专业考试样题

热门文章

  1. C# winform 如何让TextBox文本内容垂直居中?
  2. mdf ldf 导入 mysql_mdf, ldf文件导入到sql server 2005的方法
  3. 使用mutt和msmtp发送邮件
  4. LabVIEW编程LabVIEW开发 PXI-4070数字万用表 例程与相关资料
  5. 哈哈,我把熊猫烧香病毒扒了!
  6. windows server 2003安装pc套件ovi套件全过程?
  7. 《代码整洁之道》阅读分享
  8. 匹配滤波器结合Matlab实现
  9. UE4 C++如何关闭进程?
  10. 短视频直播app源码——软件系统开发方案