计科1101_JavaExp5_汇总

合集下载

Java常用正则表达式验证工具类RegexUtils.java

Java常用正则表达式验证工具类RegexUtils.java

Java常⽤正则表达式验证⼯具类RegexUtils.java 正则表达式常常⽤来验证各种表单,Java 表单注册常⽤正则表达式验证⼯具类,常⽤正则表达式⼤集合。

1. 电话号码2. 邮编3. QQ4. E-mail5. ⼿机号码6. URL7. 是否为数字8. 是否为中⽂9. ⾝份证10. 域名11. IP 。

常⽤验证应有尽有!这的确是您从事 web 开发,服务器端表单验证之良品!你,值得拥有 ^_^/** Copyright 2012-2013 The Haohui Network Corporation*/package mon.utils;import java.util.regex.Matcher;import java.util.regex.Pattern;/*** @project baidamei* @author cevencheng <cevencheng@>* @create 2012-11-15 下午4:54:42*/public class RegexUtils {/*** 验证Email* @param email email地址,格式:zhangsan@,zhangsan@,xxx代表邮件服务商* @return 验证成功返回true,验证失败返回false*/public static boolean checkEmail(String email) {String regex = "\\w+@\\w+\\.[a-z]+(\\.[a-z]+)?";return Pattern.matches(regex, email);}/*** 验证⾝份证号码* @param idCard 居民⾝份证号码15位或18位,最后⼀位可能是数字或字母* @return 验证成功返回true,验证失败返回false*/public static boolean checkIdCard(String idCard) {String regex = "[1-9]\\d{13,16}[a-zA-Z0-9]{1}";return Pattern.matches(regex,idCard);}/*** 验证⼿机号码(⽀持国际格式,+86135xxxx...(中国内地),+00852137xxxx...(中国⾹港))* @param mobile 移动、联通、电信运营商的号码段*<p>移动的号段:134(0-8)、135、136、137、138、139、147(预计⽤于TD上⽹卡)*、150、151、152、157(TD专⽤)、158、159、187(未启⽤)、188(TD专⽤)</p>*<p>联通的号段:130、131、132、155、156(世界风专⽤)、185(未启⽤)、186(3g)</p>*<p>电信的号段:133、153、180(未启⽤)、189</p>* @return 验证成功返回true,验证失败返回false*/public static boolean checkMobile(String mobile) {String regex = "(\\+\\d+)?1[34578]\\d{9}$";return Pattern.matches(regex,mobile);}/*** 验证固定电话号码* @param phone 电话号码,格式:国家(地区)电话代码 + 区号(城市代码) + 电话号码,如:+8602085588447* <p><b>国家(地区)代码:</b>标识电话号码的国家(地区)的标准国家(地区)代码。

java 数字转科学计数法

java 数字转科学计数法

Java 数字转科学计数法在实际开发过程中,我们经常会遇到处理大量数据的情况,而这些数据往往会以科学计数法的形式出现。

在 Java 中,我们要学会如何将数字转换为科学计数法表示,以便更好地处理这些数据。

我们需要了解什么是科学计数法。

科学计数法是一种用来表示非常大或非常小的数字的方法,它包括两部分:一个基数和一个指数。

基数通常是一个在1和10之间的数,而指数是10的整数次幂。

1.23 × 10^4 和4.56 × 10^-6 都是科学计数法表示的数字。

接下来,我们将讨论如何在 Java 中实现将数字转换为科学计数法表示的方法。

1. 使用 String.format 方法Java 中的 String.format 方法可以方便地将一个数字转换为科学计数法表示。

```javadouble number = xxx;String scientificNotation = String.format(".2e", number);```在这个例子中,我们将 xxx 转换为科学计数法,并且限制小数位数为2。

结果将会是 "1.23e+08"。

2. 使用 DecimalFormat 类另一种方法是使用 DecimalFormat 类来格式化数字为科学计数法。

```javadouble number = xxx;DecimalFormat df = new DecimalFormat("0.00E0");String scientificNotation = df.format(number);```在这个例子中,我们同样将 xxx 转换为科学计数法,并且限制小数位数为2。

结果同样为 "1.23E8"。

3. 自定义方法如果我们需要更加灵活地控制科学计数法的格式,可以通过自定义方法来实现。

```javapublic static String convertToScientificNotation(double number, int decimalPlaces) {double exponent =Math.floor(Math.log10(Math.abs(number)));double mantissa = number / Math.pow(10, exponent);return String.format("." + decimalPlaces + "fE+03.0f", mantissa, exponent);}```在这个例子中,我们自定义了一个 convertToScientificNotation 方法,可以传入数字和小数位数,返回对应的科学计数法表示。

疯狂JAVA讲义目录

疯狂JAVA讲义目录

疯狂JAVA讲义⽬录第1章 Java概述 11.1 Java语⾔的发展简史 21.2 Java的竞争对⼿及各⾃优势 41.2.1 C#简介和优势 41.2.2 Ruby简介和优势 41.2.3 Python的简介和优势 51.3 Java程序运⾏机制 51.3.1 ⾼级语⾔的运⾏机制 61.3.2 Java程序的运⾏机制和JVM 61.4 开发Java的准备 71.4.1 安装JDK 8学⽣提问:不是说JVM是运⾏Java程序的虚拟机吗?那JRE和JVM的关系是怎样的呢? 8学⽣提问:为什么不安装公共JRE系统呢? 91.4.2 设置PATH环境变量 10学⽣提问:为什么选择设置⽤户变量,⽤户变量和系统变量有什么区别呢? 111.5 第⼀个Java程序 121.5.1 编辑Java源代码 121.5.2 编译Java程序 13学⽣提问:当我们使⽤编译C程序时,不仅需要指定存放⽬标⽂件的位置,也需要指定⽬标⽂件的⽂件名,这⾥使⽤javac编译Java程序时怎么不需要指定⽬标⽂件的⽂件名呢? 131.5.3 运⾏Java程序 141.5.4 根据CLASSPATH环境变量定位类 151.6 Java程序的基本规则 161.6.1 Java程序的组织形式 161.6.2 Java源⽂件的命名规则 171.6.3 初学者容易犯的错误 181.7 垃圾回收机制 201.8 何时开始使⽤IDE⼯具 21学⽣提问:⽼师,我想学习Java编程,到底是学习Eclipse好呢,还是学习JBuilder好呢? 211.9 本章⼩结 22本章练习 22第2章理解⾯向对象 232.1 ⾯向对象 242.1.1 结构化程序设计简介 242.1.2 程序的三种基本结构 252.1.3 ⾯向对象程序设计简介 272.1.4 ⾯向对象的基本特征 282.2 UML(统⼀建模语⾔)介绍 292.2.1 ⽤例图 302.2.2 类图 312.2.3 组件图 332.2.4 部署图 332.2.5 顺序图 342.2.6 活动图 342.2.7 状态机图 362.3 Java的⾯向对象特征 362.3.1 ⼀切都是对象 372.3.2 类和对象 372.4 本章⼩结 37第3章数据类型和运算符 383.1 注释 393.1.1 单⾏注释和多⾏注释 393.1.2 ⽂档注释 40学⽣提问:API⽂档是什么? 40学⽣提问:为什么要掌握查看API⽂档的⽅法? 423.2 标识符和关键字 453.2.1 分隔符 453.2.2 标识符规则 473.2.3 Java关键字 473.3 数据类型分类 483.4 基本数据类型 483.4.1 整型 493.4.2 字符型 493.4.3 浮点型 513.4.4 布尔型 523.5 基本类型的类型转换 533.5.1 ⾃动类型转换 533.5.2 强制类型转化 543.5.3 表达式类型的⾃动提升 563.6 直接量 573.6.1 直接量的类型 573.6.2 直接量的赋值 583.7 运算符 583.7.1 算术运算符 583.7.2 赋值运算符 613.7.3 位运算符 623.7.4 扩展后的赋值运算符 643.7.5 ⽐较运算符 65学⽣提问:Java为什么要对这些数据进⾏缓存呢? 673.7.6 逻辑运算符 673.7.7 三⽬运算符 683.7.8 运算符的结合性和优先级 693.8 本章⼩结 70本章练习 70第4章流程控制和数组 714.1 顺序结构 724.2 分⽀结构 724.2.1 if条件语句 724.2.2 switch分⽀语句 764.3 循环结构 784.3.1 while循环语句 784.3.2 do while循环语句 794.3.3 for循环 804.3.4 嵌套循环 834.4 控制循环结构 844.4.1 使⽤break结束循环 844.4.2 使⽤continue结束本次循环 864.4.3 使⽤return结束⽅法 874.5 数组类型 874.5.1 理解数组:数组也是⼀种类型 88学⽣提问:int[]是⼀种类型吗?怎么使⽤这种类型呢? 884.5.2 定义数组 884.5.3 数组的初始化 89学⽣提问:能不能只分配内存空间,不赋初始值呢?894.5.4 使⽤数组 90学⽣提问:为什么要我记住这些异常信息? 914.5.5 JDK1.5提供了foreach循环 914.6 深⼊数组 934.6.1 内存中的数组 93学⽣提问:为什么有栈内存和堆内存之分? 934.6.2 基本类型数组的初始化 954.6.3 引⽤类型数组的初始化 964.6.4 没有多维数组 99学⽣提问:我是否可以让图4.13中灰⾊覆盖的数组元素再次指向另⼀个数组?这样不可以扩展成三维数组吗?甚⾄扩展到更多维的数组?1014.6.5 操作数组的⼯具类 1024.6.6 数组的应⽤举例 1034.7 本章⼩结 106本章练习 106第5章⾯向对象(上) 1075.1 类和对象 1085.1.1 定义类 108学⽣提问:构造器不是没有返回值吗?为什么不能⽤void修饰呢? 1105.1.2 对象的产⽣和使⽤ 1105.1.3 对象、引⽤和指针 1115.1.4 对象的this引⽤ 1125.2 ⽅法详解 1165.2.1 ⽅法的所属性 1165.2.2 ⽅法的参数传递机制 1165.2.3 形参长度可变的⽅法 1205.2.4 递归⽅法 1215.2.5 ⽅法重载 123学⽣提问:为什么⽅法的返回值类型不能⽤于区分重载的⽅法? 1245.3 成员变量和局部变量 1245.3.1 成员变量和局部变量 1255.3.2 成员变量的初始化和内存中的运⾏机制 1285.3.3 局部变量的初始化和内存中的运⾏机制 1305.3.4 变量的使⽤规则 1305.4 隐藏和封装 1325.4.1 理解封装 1325.4.2 使⽤访问控制符 1325.4.3 package和import 1355.4.4 Java的常⽤包 1405.5 深⼊构造器 1405.5.1 使⽤构造器执⾏初始化 141学⽣提问:构造器是创建Java对象的途径,是不是说构造器完全负责创建Java对象? 1415.5.2 构造器的重载 142学⽣提问:为什么要⽤this来调⽤另⼀个重载的构造器?我把另⼀个构造器⾥的代码复制、粘贴到这个构造器⾥不就可以了吗? 143 5.6 类的继承 1445.6.1 继承的特点 1445.6.2 重写⽗类的⽅法 1455.6.3 ⽗类实例的super引⽤ 146学⽣提问:我们只是创建了⼀个Ostrich对象时,哪来的Bird对象? 1475.6.4 调⽤⽗类构造器 148学⽣提问:为什么我创建Java对象时从未感觉到ng.Object的构造器被调⽤过? 1505.7 多态 1515.7.1 多态性 1515.7.2 引⽤变量的强制类型转换 1525.7.3 instanceof运算符 1545.8 继承与组合 1545.8.1 使⽤继承的注意点 1555.8.2 利⽤组合实现复⽤ 156学⽣提问:使⽤组合关系来实现复⽤时,需要创建两个Animal对象,是不是意味着使⽤组合关系时系统开销更⼤? 1595.9 初始化块 1595.9.1 使⽤初始化块 1605.9.2 初始化块和构造器 1615.9.3 静态初始化块 1625.10 本章⼩结 165本章练习 165第6章⾯向对象(下) 1666.1 基本数据类型的包装类 1676.2 处理对象 1706.2.1 打印对象和toString⽅法 1706.2.2 ==和equals⽐较运算符 1726.3 类成员 1756.3.1 理解类成员 1756.3.2 单例(Singleton)类 1766.4 final修饰符 1776.4.1 final变量 1776.4.2 final⽅法 1816.4.3 final类 1826.4.4 不可变类 1826.4.5 缓存实例的不可变类 1866.5 抽象类 1886.5.1 抽象⽅法和抽象类 1886.5.2 抽象类的作⽤ 1916.6 更彻底的抽象:接⼝ 1926.6.1 接⼝的概念 1926.6.2 接⼝的定义 1936.6.3 接⼝的继承 1956.6.4 使⽤接⼝ 1956.6.5 接⼝和抽象类 1976.6.6 ⾯向接⼝编程 1986.7 内部类 2026.7.1 ⾮静态内部类 202学⽣提问:⾮静态内部类对象和外部类对象的关系是怎样的? 2066.7.2 静态内部类 207学⽣提问:为什么静态内部类实例⽅法也不能访问外部类的实例属性呢? 207学⽣提问:接⼝⾥是否能定义内部接⼝? 2086.7.3 使⽤内部类 208学⽣提问:既然内部类是外部类的成员,是否可以为外部类定义⼦类,在⼦类中再定义⼀个内部类来重写其⽗类中的内部类? 211 6.7.4 局部内部类 2116.7.5 匿名内部类 2126.7.6 闭包(Closure)和回调 2156.8 枚举类 2176.8.1 ⼿动实现枚举类 2176.8.2 枚举类⼊门 2196.8.3 枚举类的属性、⽅法和构造器 2206.8.4 实现接⼝的枚举类 2236.8.5 包含抽象⽅法的枚举类 2246.9 对象与垃圾回收 2256.9.1 对象在内存中的状态 2266.9.2 强制垃圾回收 2276.9.3 finalize⽅法 2286.9.4 对象的软、弱和虚引⽤ 2306.10 修饰符的适⽤范围 2336.11使⽤JAR⽂件 2346.11.1 jar命令详解 2356.11.2 创建可执⾏的JAR包 2376.11.3 关于JAR包的技巧 2386.12 本章⼩结 239本章练习 239第7章 Java集合 2407.1 Java集合概述 2417.2 Collection和Iterator接⼝ 2437.2.1 使⽤Iterator接⼝遍历集合元素 2447.2.2 使⽤foreach循环遍历集合元素 2467.3 Set接⼝ 2477.3.1 HashSet类 247学⽣提问:hashCode⽅法对于HashSet的作⽤是什么? 2497.3.2 TreeSet类 2527.3.3 EnumSet类 2597.4 List接⼝ 2617.4.1 List接⼝和ListIterator接⼝ 2617.4.2 ArrayList和Vector实现类 2647.4.3 固定长度的List 2667.5 Queue接⼝ 2667.5.1 LinkedList实现类 2667.5.2 PriorityQueue实现类 2697.6 Map 2707.6.1 HashMap和Hashtable实现类 2717.6.2 SortedMap接⼝和TreeMap实现类 2767.6.3 WeakHashMap实现类 2797.6.4 IdentityHashMap实现类 2807.6.5 EnumMap实现类 2817.7 HashSet和HashMap的性能选项 2827.8 操作集合的⼯具类:Collections 2837.8.1 排序操作 2837.8.2 查找,替换操作 2877.8.3 同步控制 2887.8.4 设置不可变集合 2887.9 烦琐的接⼝:Enumeration 2897.10 本章⼩结 290本章练习 290第8章泛型 2918.1 泛型⼊门 2928.1.1 编译时不检查类型的异常 2928.1.2 ⼿动实现编译时检查类型 2938.1.3 使⽤泛型 2948.2 深⼊泛型 2948.2.1 定义泛型接⼝、类 2958.2.2 从泛型类派⽣⼦类 2968.2.3 并不存在泛型类 2988.3 类型通配符 2988.3.1 使⽤类型通配符 3008.3.2 设定类型通配符的上限 3008.3.3 设定类型形参的上限 3028.4 泛型⽅法 3038.4.1 定义泛型⽅法 3038.4.2 泛型⽅法和类型通配符的区别 3068.4.3 设定通配符的下限 3078.4.4 泛型⽅法与⽅法重载 3098.5 擦除和转换 3108.6泛型与数组 3118.7 本章⼩结 313第9章与运⾏环境交互 3149.1 与⽤户互动 3159.1.1 运⾏Java程序的参数 3159.1.2 使⽤Scanner获取键盘输⼊ 3169.1.3 使⽤BufferedReader获取键盘输⼊ 3189.2 系统相关 3199.2.1 System类 3199.2.2 Runtime类 3219.3 常⽤类 3229.3.1 Object类 3229.3.2 String、StringBuffer和StringBuilder类 3229.3.3 Math类 3279.3.4 Random类 3289.3.5 BigDecimal类 3309.4 处理⽇期的类 3339.4.1 Date类 3339.4.2 Calendar类 3349.4.3 TimeZone类 3379.5 正则表达式 3389.5.1 创建正则表达式 3389.5.2 使⽤正则表达式 3419.6 程序国际化 3459.6.1 Java国际化的思路 3469.6.2 Java⽀持的语⾔和国家 3469.6.3 完成程序国际化 3479.6.4 使⽤MessageFormat处理包含占位符的字符串 349 9.6.5 使⽤类⽂件代替资源⽂件 3509.6.6 使⽤NumberFormat格式化数字 3509.6.7 使⽤DateFormat格式化⽇期 3529.7 本章⼩结 355本章练习 355第10章异常处理 35610.1 异常概述 35710.2 异常处理机制 35810.2.1 使⽤try...catch捕获异常 35910.2.2 异常类的继承体系 36010.2.3 访问异常信息 36310.2.4 使⽤finally回收资源 36410.2.5 异常处理的嵌套 36710.3 Checked异常和Runtime异常体系 36710.3.1 使⽤throws声明抛出异常 36710.4 使⽤throw抛出异常 36910.4.1 抛出异常 36910.4.2 ⾃定义异常类 37110.4.3 catch和throw同时使⽤ 37110.4.4 异常链 37310.5 Java的异常跟踪栈 37410.6 异常处理规则 37610.6.1 不要过度使⽤异常 37710.6.2 不要使⽤过于庞⼤的try块 37810.6.3 避免使⽤Catch All语句 37810.6.4 不要忽略捕获到的异常 37910.7 本章⼩结 379本章练习 379第11章 AWT编程 38011.1 GUI(图形⽤户界⾯)和AWT 38111.2 AWT容器 38211.3 布局管理器 38511.3.1 FlowLayout布局管理器 38611.3.2 BorderLayout布局管理器 387学⽣提问:BorderLayout最多只能放置5个组件吗?那它还有什么作⽤? 38811.3.3 GridLayout布局管理器 38911.3.4 GridBagLayout布局管理器 39011.3.5 CardLayout布局管理器 39311.3.6 绝对定位 39511.3.7 BoxLayout布局管理器 396学⽣提问:图11.15和图11.16显⽰的所有按钮都紧挨在⼀起,如果希望像FlowLayout、GridLayout等布局管理器指定组件的间距该怎么办?39711.4 AWT 常⽤组件 39811.4.1 基本组件 39811.4.2 对话框 40011.5 事件处理 40311.5.1 Java事件模型的流程 40311.5.2 事件和事件监听器 40511.5.3 事件适配器 40911.5.4 事件监听器的实现形式 41111.6 AWT的菜单 41311.6.1 菜单条、菜单和菜单项 41411.6.2 右键菜单 416学⽣提问:为什么即使我没有给多⾏⽂本域编写右键菜单,但当我在多⾏⽂本域上单击右键时⼀样会弹出右键菜单? 41811.7 在AWT中绘图 41811.7.1 画图的实现原理 41811.7.2 使⽤Graphics类 41911.8 处理位图 42511.8.1 Image抽象类和BufferedImage实现类 42511.8.2 使⽤ImageIO输⼊/输出位图 42711.9 剪贴板 43211.9.1 数据传递的类和接⼝ 43211.9.2 传递⽂本 43311.9.3 使⽤系统剪贴板传递图像 43511.9.4 使⽤本地剪贴板来传递对象引⽤ 43911.9.5 通过系统剪贴板传递Java对象 44211.10 本章⼩结 445本章练习 445第12章 Swing编程 44612.1 Swing概述 44712.2 Swing基本组件的⽤法 44812.2.1 Swing组件层次 44812.2.2 AWT组件的Swing实现 449学⽣提问:为什么单击Swing多⾏⽂本域时不是弹出像AWT多⾏⽂本域中的右键菜单? 45512.2.3 使⽤JToolBar创建⼯具条 45812.2.4 使⽤JColorChooser和JFileChooser 46112.2.5 使⽤JOptionPane 46912.3 Swing中的特殊容器 47512.3.1 使⽤JSplitPane 47512.3.2 使⽤JTabbedPane 47712.3.3 使⽤JLayeredPane、JDesktopPane和JInternalFrame 48112.4 Swing拖放功能 49012.4.1 拖放⽬标 49112.4.2 拖放源 49412.4.3 简化的拖放操作 49512.5 Applet和JApplet 49712.5.1 Applet简介及其安全性 49812.5.2 开发Applet类 49812.5.3 使⽤HTML页⾯装载Applet 50012.5.4 appletviewer简介 50212.5.5 Applet的⽣命周期和动画机制 503学⽣提问:程序中重写paint⽅法时绘制了⼀个字符串,但图12.28上则绘制出了如此之多的字符串,这是为什么呢? 50512.5.6 使⽤Applet创建⾳乐播放器 50512.6 使⽤JProgressBar、ProgressMonitor和BoundedRangeModel创建进度条 50812.6.1 创建进度条 50812.6.2 创建进度对话框 51212.7 使⽤JSlider和BoundedRangeModel创建滑动条 51312.8 使⽤JSpinner和SpinnerModel创建微调控制器 51712.9 使⽤JList、JComboBox创建列表框 52012.9.1 简单列表框 52012.9.2 不强制存储列表项的ListModel和ComboBoxModel 52412.9.3 强制存储列表项的DefaultListModel和DefaultComboBoxModel 528学⽣提问:为什么JComboBox提供了添加、删除列表项⽬的⽅法?⽽JList没有提供添加、删除列表项的⽅法呢? 53012.9.4 使⽤ListCellRenderer改变列表项外观 53012.10 使⽤JTree和TreeModel创建树 53212.10.1 创建树 53312.10.2 拖动、编辑树节点 53612.10.3 监听节点事件 54012.10.4 使⽤TreeCellRendering改变节点外观 54212.11 使⽤JTable和TableModel创建表格 54912.11.1 创建JTable 549学⽣提问:我们指定的表格数据、表格列标题都是Object类型的数组,JTable如何显⽰这些Object对象?55012.11.2 TableModel和监听器 55512.11.3 TableColumnModel和监听器 56112.11.4 实现排序 56412.11.5 绘制单元格内容 56712.11.6 编辑单元格内容 57012.12 使⽤JFormattedTextField和JTextPane创建格式⽂本 57612.12.1 监听Document的改变 57612.12.2 使⽤JPasswordField 57812.12.3 使⽤JFormattedTextField 57912.12.4 使⽤JEditorPane 58812.12.5 使⽤JTextPane 58812.13 本章⼩结 595本章练习 595第13章 JDBC编程 59613.1 JDBC基础 59713.1.1 JDBC简介 59713.1.2 JDBC驱动程序类型 59813.2 SQL语法介绍 59913.2.1 安装数据库 59913.2.2 关系数据库基本概念和MySQL基本命令 60113.2.3 SQL语句基础 60313.2.4 DDL语句 60413.2.5 DML语句语法 61813.2.6 select语句和SQL函数 62013.2.7 分组和组函数 62713.2.8 多表连接查询和⼦查询 62913.3 JDBC的典型⽤法 63513.3.1 JDBC常⽤接⼝和类简介 63513.3.2 JDBC编程步骤 637学⽣提问:前⾯给出的仅是MySQL和Oracle两种数据库的驱动,我看不出驱动类字符串有什么规律啊。

Java基础知识总结(超详细整理)

Java基础知识总结(超详细整理)

Java基础知识总结(超详细整理)Java语⾔的特点1.⾯向对象⾯向对象(OOP)就是Java语⾔的基础,也是Java语⾔的重要特性。

⾯向对象的概念:⽣活中的⼀切事物都可以被称之为对象,⽣活中随处可见的事物就是⼀个对象,我们可以将这些事物的状态特征(属性)以及⾏为特征(⽅法)提取并出来,并以固定的形式表⽰。

2.简单好⽤Java语⾔是由C和C++演变⽽来的,它省略了C语⾔中所有的难以理解、容易混淆的特性(⽐如指针),变得更加严谨、简洁、易使⽤。

3.健壮性Java的安全检查机制,将许多程序中的错误扼杀在摇蓝之中。

另外,在Java语⾔中还具备了许多保证程序稳定、健壮的特性(强类型机制、异常处理、垃圾的⾃动收集等),有效地减少了错误,使得Java应⽤程序更加健壮。

4.安全性Java通常被⽤在⽹络环境中,为此,Java提供了⼀个安全机制以防恶意代码的攻击,从⽽可以提⾼系统的安全性。

5.平台⽆关性Java平台⽆关性由Java 虚拟机实现,Java软件可以不受计算机硬件和操作系统的约束⽽在任意计算机环境下正常运⾏。

6.⽀持多线程在C++ 语⾔没有内置的多线程机制,因此必须调⽤操作系统的多线程功能来进⾏多线程程序设计,⽽ Java 语⾔却提供了多线程⽀持。

多线程机制使应⽤程序在同⼀时间并⾏执⾏多项任务,该机制使得程序能够具有更好的交互性、实时性。

7.分布式(⽀持⽹络编程)Java语⾔具有强⼤的、易于使⽤的⽹络能⼒,⾮常适合开发分布式计算的程序。

java中提供了⽹络应⽤编程接⼝(),使得我们可以通过URL、Socket等远程访问对象。

8.编译与解释共存Java语法基础标识符: ⽤来标识类名、对象名、变量名、⽅法名、类型名、数组名、⽂件名的有效字符序列。

合法的标识符:由字母、数字、下划线“_”、美元符号“$”或者“¥”组成,并且⾸字符不能是数字。

不能把java关键字和保留字作为标识符。

标识符对⼤⼩写敏感。

关键字:Java语⾔中已经赋予了特定含义的保留字: const、goto,Java版本中尚未使⽤,但以后版本可能会作为关键字使⽤变量:程序运⾏期间可以被改变的量。

java中super的作用和方法

java中super的作用和方法

在Java中,super关键字主要有两个用途:
1.引用当前对象的直接父类对象:在子类中,你可以使用super关键字来引
用父类的实例变量和方法。

这使得子类可以访问和修改父类的属性,或者调用父类的方法。

这在覆盖(override)父类方法时特别有用,当你需要在子类中执行父类的原始实现时。

2.调用父类的构造方法:在子类的构造方法中,你可以使用super关键字来
显式地调用父类的构造方法。

这是必须的,因为Java规定子类的构造方法必须首先调用父类的构造方法(如果没有显式地调用,编译器会自动插入一个默认的调用)。

下面是一个简单的例子,展示了如何在Java中使用super关键字:
在这个例子中,super.show()调用了父类Parent的show方法,而super.x引用了父类Parent的实例变量x。

sql查询double类型合计变科学计数法

sql查询double类型合计变科学计数法

sql查询double类型合计变科学计数法在SQL查询中,如果遇到Double类型的数据需要进行合计,并将结果以科学计数法的格式进行展示,可以使用以下方法实现。

1. 使用FORMAT函数对Double类型进行格式化:SELECT FORMAT(SUM(column_name), 'Scientific') AS scientific_totalFROM table_name;该查询会将表中指定列的所有数值进行求和,并以科学计数法的格式展示求和结果。

FORMAT函数接受两个参数:要格式化的值和格式字符串。

其中,'Scientific'是表示科学计数法的格式字符串。

2. 使用CAST函数进行类型转换:SELECT CAST(SUM(column_name) AS DECIMAL(10,2)) AS scientific_totalFROM table_name;该查询会将表中指定列的所有数值进行求和,并将结果类型转换为DECIMAL类型,保留两位小数。

最终结果会以科学计数法的格式展示。

3. 使用CONVERT函数进行类型转换:SELECT CONVERT(DECIMAL(10,2), SUM(column_name)) AS scientific_totalFROM table_name;该查询与上述的CAST函数类似,将表中指定列的所有数值进行求和,并将结果类型转换为DECIMAL类型,保留两位小数。

最终结果会以科学计数法的格式展示。

需要注意的是,上述方法中的DECIMAL(10,2)是一个示例,具体的精度和小数位数可以根据实际情况进行调整。

科学计数法是一种用于表示非常大或非常小的数字的方法,它以指数形式表示。

在科学计数法中,一个数字通常由两个部分组成:尾数和指数。

尾数是一个大于等于1且小于10的数字,而指数是一个整数。

通过将尾数与10的幂进行相乘,可以得到原始数字的值。

java 处理所有字段合计的方法

java 处理所有字段合计的方法

一、背景在软件开发中,经常会遇到需要对数据进行合计的情况,特别是在处理大量数据的时候,如何高效地对数据进行合计成为一个重要的问题。

在Java编程中,我们可以采用多种方法来处理所有字段的合计,本文将介绍一些常用的方法。

二、使用循环进行合计在处理数据的时候,最常见的方法就是使用循环进行合计。

假设我们有一个包含多个字段的数据集合,我们可以通过循环遍历每个字段,并将其值累加起来,从而得到所有字段的合计值。

示例代码如下:```javapublic class TotalCalculator {public double calculateTotal(double[] values) {double total = 0;for (double value : values) {total += value;}return total;}}在上面的示例代码中,我们定义了一个TotalCalculator类,其中包含一个用于计算合计值的方法calculateTotal。

该方法接受一个double 类型的数组作为参数,然后通过循环遍历数组中的每个元素,并将其累加到total变量中,最终返回total作为合计值。

三、使用Stream进行合计除了传统的循环方法,Java 8引入的Stream API也为我们提供了一种更加优雅的方式来处理数据合计的操作。

通过Stream,我们可以更加简洁地对数据进行处理,并且能够利用并行流来提高合计的性能。

示例代码如下:```javaimport java.util.Arrays;public class StreamTotalCalculator {public double calculateTotal(double[] values) {return Arrays.stream(values).sum();}}```在上面的示例代码中,我们利用Arrays类的stream方法将double 数组转换为一个Stream流,然后调用Stream的sum方法对所有元素进行求和,最终返回求和的结果作为合计值。

exp的语句-概述说明以及解释

exp的语句-概述说明以及解释

exp的语句-概述说明以及解释1. 引言1.1 概述在概述部分,我们将对"exp的语句"进行简要的介绍和定义。

"exp"是"expression"的缩写,表示在计算机程序中的表达式或语句。

这些语句通常用于执行特定的计算或操作,以产生所需的结果。

"exp的语句"是指包含表达式的语句,可以在程序中被执行。

这些语句可以用于执行各种不同的计算任务,如数学运算、逻辑判断、变量赋值等。

在计算机编程中,表达式是由运算符、操作数和函数组成的一种语法结构。

它们用于表示计算过程和逻辑关系,可以进行数学运算、比较、逻辑操作等。

表达式可以包含常量、变量、函数调用和运算符等元素。

通过使用"exp的语句",我们可以在程序中实现各种复杂的计算和操作。

这些语句可以根据需要进行嵌套和组合,以实现更复杂的计算过程。

同时,它们也可以作为程序的控制流程的一部分,帮助程序实现不同的逻辑判断和分支。

总之,"exp的语句"在计算机编程中起着非常重要的作用。

通过灵活运用这些语句,我们可以实现各种不同的计算和操作,为程序的逻辑和功能提供强大的支持。

在接下来的文章中,我们将详细讨论和探究"exp的语句"在编程中的具体应用和技巧。

文章结构的部分是对整篇文章的组织和布局进行介绍。

通过正确的文章结构,可以确保读者能够清晰地理解文章的内容和逻辑顺序。

在本篇文章中,我们按照以下结构进行组织和展示:1. 引言1.1 概述1.2 文章结构1.3 目的2. 正文2.1 第一个要点2.2 第二个要点2.3 第三个要点3. 结论3.1 总结要点3.2 对结果的影响3.3 研究的局限性在引言部分,我们首先概述了整篇文章的主要内容和要点。

然后,我们详细介绍了文章的结构安排,以帮助读者了解文章的整体框架。

最后,我们明确了本文的目的,即从不同的角度和要点探讨exp的语句。

Java-2实用教程(第5版)习题解答

Java-2实用教程(第5版)习题解答

习题解答习题1(第1章)一、问答题1.Java语言的主要贡献者是谁2.开发Java应用程序需要经过哪些主要步骤3.Java源文件是由什么组成的一个源文件中必须要有public类吗4.如果JDK的安装目录为D:\jdk,应当怎样设置path和classpath的值5.Java源文件的扩展名是什么Java字节码的扩展名是什么:6.如果Java应用程序主类的名字是Bird,编译之后,应当怎样运行该程序7.有哪两种编程风格,在格式上各有怎样的特点1.James Gosling2.需3个步骤:1)用文本编辑器编写源文件。

2)使用javac编译源文件,得到字节码文件。

3)使用解释器运行程序。

3.源文件由若干个类所构成。

对于应用程序,必须有一个类含有public static void main(String args[])的方法,含有该方法的类称为应用程序的主类。

不一定,但至多有一个public类。

)4.set classpath=D:\jdk\jre\lib\;.;5. java和class6. java Bird7.独行风格(大括号独占行)和行尾风格(左大扩号在上一行行尾,右大括号独占行)二、选择题1.B。

2.D。

(1.下列哪个是JDK提供的编译器A)B)C)D)2.下列哪个是Java应用程序主类中正确的main方法A) public void main (String args[ ]){B) static void main (String args[ ])C) public static void Main (String args[])D) public static void main (String args[ ])三、阅读程序阅读下列Java源文件,并回答问题。

public class Person {void speakHello() {】"您好,很高兴认识您");" nice to meet you");}}class Xiti {public static void main(String args[]) {Person zhang = new Person();();,}}(a)上述源文件的名字是什么(b)编译上述源文件将生成几个字节码文件这些字节码文件的名字都是什么(c)在命令行执行java Person得到怎样的错误提示执行java xiti得到怎样的错误提示执行java 得到怎样的错误提示执行java Xiti得到怎样的输出结果1.(a)。

java bigdecimal转string 变成科学计数法 -回复

java bigdecimal转string 变成科学计数法 -回复

java bigdecimal转string 变成科学计数法-回复如何将Java中的BigDecimal转换为科学计数法的字符串在Java中,BigDecimal是一种用于高精度计算的数据类型。

它可以处理大数的运算,并提供了一些灵活的功能,如四舍五入和精度设置。

然而,当我们将BigDecimal转换为字符串时,有时会遇到科学计数法的表示方式。

本文将逐步介绍如何将BigDecimal转换为科学计数法的字符串。

第一步:创建一个BigDecimal对象在将任何数值转换为科学计数法的字符串之前,我们首先需要创建一个BigDecimal对象。

可以使用BigDecimal的构造函数来创建一个对象。

构造函数接受不同类型的参数,如整数、浮点数、字符串等。

例如,我们可以使用如下方式创建一个BigDecimal对象:javaBigDecimal number = new BigDecimal("12345678901234567890"); 第二步:将BigDecimal对象转换为科学计数法的字符串一旦我们创建了BigDecimal对象,我们可以使用toEngineeringString()方法将其转换为科学计数法的字符串表示形式。

例如,我们可以使用如下方式将BigDecimal对象转换为科学计数法的字符串:javaString scientificNotation = number.toEngineeringString(); System.out.println(scientificNotation);运行上述代码将输出:1.234567890123456789E+19如上所示,toEngineeringString()方法将BigDecimal对象转换为科学计数法的字符串。

在科学计数法表示中,数字后面的E表示10的指数。

在这个例子中,指数为19,表示1.234567890123456789乘以10的19次方。

java各详细总结知识点

java各详细总结知识点

java各详细总结知识点一、Java语法1. 数据类型Java中的数据类型分为基本数据类型和引用数据类型。

基本数据类型包括整型,浮点型,字符型和布尔型。

引用数据类型包括类、接口、数组等。

2. 变量在Java中,变量是用来存储数据的容器。

它们可以存储不同类型的数据,例如整数、浮点数、字符等。

变量分为局部变量和成员变量。

3. 运算符Java中的运算符包括算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符等。

这些运算符可以实现数据的计算和比较。

4. 控制流Java中的控制流包括顺序结构、选择结构和循环结构。

通过控制流语句,程序可以根据条件执行不同的代码块,实现不同的功能。

5. 方法方法是Java中用来组织和重用代码的一种机制。

它可以细化程序的逻辑结构,并提高代码的可读性和可维护性。

6. 数组数组是一种用来存储多个相同类型数据的容器。

在Java中,数组可以是一维的、二维的甚至多维的。

使用数组可以方便地管理大量数据。

7. 字符串在Java中,字符串是一种特殊的对象类型。

Java提供了丰富的字符串处理方法,例如字符串连接、子字符串提取、字符串比较等。

8. 输入输出在Java中,通过输入输出流可以实现与外部设备的交互。

Java提供了丰富的输入输出类和方法,可以实现文件的读写、网络通信等功能。

二、面向对象编程1. 类和对象在Java中,所有的代码逻辑都是围绕类和对象展开的。

类是一种模板,描述了对象的属性和行为。

对象是类的实例,可以根据类创建多个对象。

2. 封装封装是面向对象编程的核心思想之一。

通过封装,可以将数据和行为封装在一个对象中,避免外部直接访问对象的数据。

3. 继承继承是一种代码复用的机制,可以让子类继承父类的属性和方法。

通过继承,可以实现类与类之间的层次关系,提高代码的重用性和扩展性。

4. 多态多态是面向对象编程的另一个核心概念。

通过多态,可以使不同类的对象对同一消息作出不同的响应。

多态性可以提高代码的灵活性和可扩展性。

java hql语法

java hql语法

java hql语法HQL (Hibernate Query Language) 是 Hibernate 框架提供的一种查询语言,它允许用户使用面向对象的查询语言来查询数据库。

下面是一些 HQL 语法的示例:1. 查询所有记录:```javaString hql = "from Employee";Query query = (hql);List results = ();```2. 查询特定字段:```javaString hql = "select firstName, lastName from Employee";Query query = (hql);List results = ();```3. 查询满足条件的记录:```javaString hql = "from Employee where id = :id";Query query = (hql);("id", 1);List results = ();```4. 使用别名:```javaString hql = "select as firstName, as lastName from Employee e"; Query query = (hql);List results = ();```5. 排序查询结果:```javaString hql = "from Employee order by lastName"; Query query = (hql);List results = ();```6. 分页查询:```javaString hql = "from Employee";Query query = (hql);(0); // 设置起始位置(第一页为0)(10); // 设置每页显示数量(每页最多显示10条记录)List results = ();```。

java 多时间段信息,时间校验逻辑

java 多时间段信息,时间校验逻辑

在Java 中,处理多时间段信息和时间校验逻辑的方法可以使用Java 8 引入的日期和时间API(java.time 包)。

以下是一个示例,展示了如何使用Java 8 日期和时间API 实现多时间段信息和时间校验逻辑:1. 首先,引入所需的依赖:```xml<dependency><groupId>java.time</groupId><artifactId>java.time-api</artifactId><version>2.9.0</version></dependency>```2. 创建一个时间段类(Period),用于存储时间段的信息:```javaimport java.time.LocalDate;import java.time.LocalDateTime;import java.time.Period;public class Period {private LocalDate startDate;private LocalDate endDate;public Period(LocalDate startDate, LocalDate endDate) {this.startDate = startDate;this.endDate = endDate;}public LocalDate getStartDate() {return startDate;}public LocalDate getEndDate() {return endDate;}@Overridepublic String toString() {return "Period{" +"startDate=" + startDate +", endDate=" + endDate +'}';}}```3. 创建一个时间校验类(TimeValidator),用于校验两个时间段是否合法:```javaimport java.time.LocalDate;import java.time.LocalDateTime;import java.time.Period;public class TimeValidator {public static boolean isValid(Period period1, Period period2) { if (period1 == null || period2 == null) {return false;}LocalDate startDate1 = period1.getStartDate();LocalDate endDate1 = period1.getEndDate();LocalDate startDate2 = period2.getStartDate();LocalDate endDate2 = period2.getEndDate();// 校验开始日期if (startDate1.isBefore(startDate2) || startDate1.isAfter(endDate2)) { return false;}// 校验结束日期if (endDate1.isBefore(endDate2) || endDate1.isAfter(startDate2)) { return false;}return true;}}```4. 在实际应用中,使用Period 类和TimeValidator 类进行时间校验:```javapublic class Main {public static void main(String[] args) {Period period1 = new Period(LocalDate.of(2023, 1, 1), LocalDate.of(2023, 1, 10));Period period2 = new Period(LocalDate.of(2023, 1, 5), LocalDate.of(2023, 1, 8));System.out.println("时间段1:");System.out.println(period1);System.out.println("时间段2:");System.out.println(period2);boolean isValid = TimeValidator.isValid(period1, period2);System.out.println("两个时间段是否合法:" + isValid);}}```以上示例展示了如何使用Java 8 日期和时间API 处理多时间段信息和进行时间校验。

java double转科学计数法字符串

java double转科学计数法字符串

java double转科学计数法字符串在Java中,double 类型的数值可能会非常大或者非常小,此时常常需要将其转换为科学计数法字符串,方便输出或者处理。

下面介绍一种简单的方法。

首先,利用 Java 提供的 DecimalFormat 类,可以将 double 类型的数值按照一定格式输出。

例如,以下代码将一个 double 类型的数值保留两位小数并转换为字符串:```double d = 123456789.123456789;DecimalFormat df = new DecimalFormat('#.##');String str = df.format(d);System.out.println(str);```输出结果为:```123456789.12```接下来,我们需要将这个数值转换为科学计数法字符串。

这可以通过一些简单的数学运算来实现。

具体来说,假设我们要将一个double 类型的数值 d 转换为科学计数法字符串,那么我们可以先计算出它的指数部分 e,然后将 d 除以 10 的 e 次方即可得到尾数部分 m。

最后,将 e 和 m 拼接成字符串即可。

下面的代码实现了这个过程:```double d = 123456789.123456789;DecimalFormat df1 = new DecimalFormat('#.#E0');DecimalFormat df2 = new DecimalFormat('0.#####');String[] parts = df1.format(d).split('E');int e = Integer.parseInt(parts[1]);double m = Double.parseDouble(parts[0]);String str = df2.format(m / Math.pow(10, e));System.out.println(str + 'E' + e);```输出结果为:```1.23457E8```这个方法同样适用于将 float 类型的数值转换为科学计数法字符串。

java bigdecimal 科学计数法

java bigdecimal 科学计数法

java bigdecimal 科学计数法Java BigDecimal 科学计数法概述在 Java 中,我们可以使用 BigDecimal 类来进行高精度计算。

BigDecimal 类可以处理比 double 和 float 更大范围的数字,并且具有更高的精度。

在进行科学计算时,经常需要使用科学计数法表示数字。

本文将介绍如何在 Java 中使用 BigDecimal 类来表示和操作科学计数法。

BigDecimal 类简介BigDecimal 是Java 中的一个类,它提供了高精度的十进制运算功能。

它可以处理比 double 和 float 更大范围的数字,并且具有更高的精度。

BigDecimal 可以表示任意大小和精度的十进制数,支持基本运算(加、减、乘、除)和取余操作。

BigDecimal 类中包含了一些常用方法,例如:add()、subtract()、multiply()、divide() 等等,这些方法都可以用来进行基本运算。

科学计数法简介科学计数法是一种用于表示非常大或非常小的数字的方式。

它使用指数形式来表示数字,并将其乘以一个基数(通常为 10)。

例如,1.23 × 10^4 表示为 1.23E+4 或 1.23e4。

在科学计数法中,指数部分通常是以 E 或 e 开头,并且可以是正整数或负整数。

正整数代表着比原始数字多移动几位小数点,负整数代表着比原始数字少移动几位小数点。

BigDecimal 类中的科学计数法表示在 BigDecimal 类中,我们可以使用科学计数法来表示数字。

BigDecimal 类提供了两种方法来创建科学计数法表示的数字:1. 使用 BigDecimal 的构造函数public BigDecimal(double val)该构造函数接受一个 double 类型的参数,并将其转换为 BigDecimal 对象。

如果 double 类型的值无法精确地表示为十进制分数,则会出现舍入误差。

java写入mongo double类型的数据是科学计数法-概述说明以及解释

java写入mongo double类型的数据是科学计数法-概述说明以及解释

java写入mongo double类型的数据是科学计数法-概述说明以及解释1.引言1.1 概述Java是一种广泛使用的编程语言,它支持多种数据类型,包括整数、浮点数、字符、布尔值等。

而MongoDB是一种NoSQL数据库系统,它以文档的形式存储数据。

在Java中,我们经常需要将数据写入MongoDB,其中涉及到Double类型的数据。

在Java写入MongoDB Double类型的数据时,有时会遇到科学计数法的表示方式。

科学计数法是一种十进制数字的表示方法,通过使用指数来表示很大或很小的数字。

例如,1.23E+6表示的是1.23乘以10的6次方,即1230000。

这种表示方式在科学和工程领域中经常使用,但在一些应用场景中可能会带来问题。

本文将探讨在Java中写入MongoDB Double类型数据时,使用科学计数法表示的问题,并提供解决方案。

我们将首先介绍Java中的数据类型,接着详细讨论MongoDB中的Double类型,最后深入探讨科学计数法在Java写入MongoDB Double类型数据的具体问题和解决方法。

通过本文的阅读,读者将了解到如何正确处理科学计数法表示的Double类型数据,避免数据存储错误或损失精度的问题。

同时,我们还将展望未来发展方向,探讨可能的改进和优化。

让我们开始探索吧!1.2 文章结构文章结构部分的内容如下:文章结构部分旨在介绍本篇长文的整体结构和内容安排。

本文总共包括三个主要部分:引言、正文和结论。

在引言部分,我们首先对文章进行了概述,简要介绍了本文要讨论的主题:Java写入MongoDB Double类型的数据时遇到的科学计数法的问题。

接着,我们阐述了文章的结构,即包括引言、正文和结论三个主要部分。

最后,我们明确了本文的目的,即旨在探讨科学计数法在Java写入MongoDB Double类型数据时的问题并提供解决方案。

在正文部分,我们将以两个主要方面展开讨论。

首先,我们将介绍Java 中的数据类型,包括基本数据类型和引用数据类型,以及Java中处理数据类型的特点。

java 字符串打乱重组与恢复算法

java 字符串打乱重组与恢复算法

java 字符串打乱重组与恢复算法在Java中,你可以使用各种算法来打乱和重组字符串。

下面是一个简单的示例,它使用了Java的Collections.shuffle()方法来打乱字符串中的字符,然后使用一个StringBuilder来重新组合它们。

首先,我们需要一个方法来打乱字符串:java复制代码import java.util.ArrayList;import java.util.Collections;import java.util.List;public class Main {public static void main(String[] args) {String originalString = "Hello, World!";System.out.println("Original String: " + originalString);// 打乱字符串String shuffledString = shuffleString(originalString);System.out.println("Shuffled String: " + shuffledString);// 恢复字符串String restoredString = restoreString(originalString, shuffledString);System.out.println("Restored String: " + restoredString);}public static String shuffleString(String input) {List<Character> characters = new ArrayList<>();for (char c : input.toCharArray()) {characters.add(c);}Collections.shuffle(characters);StringBuilder sb = new StringBuilder();for (char c : characters) {sb.append(c);}return sb.toString();}public static String restoreString(String original, String shuffled) {if (original.length() != shuffled.length()) {throw new IllegalArgumentException("Original and shuffled strings must have the same length");}char[] originalChars = original.toCharArray();char[] shuffledChars = shuffled.toCharArray();Arrays.sort(shuffledChars);StringBuilder sb = new StringBuilder();for (char c : originalChars) {sb.append(findCharInSortedArray(c, shuffledChars));}return sb.toString();}private static char findCharInSortedArray(char c, char[] array) {int left = 0;int right = array.length - 1;while (left <= right) {int mid = left + (right - left) / 2;if (array[mid] == c) {return c;} else if (array[mid] < c) {left = mid + 1;} else {right = mid - 1;}}throw new IllegalArgumentException("Character not found in the array");}}在这个示例中,shuffleString方法接收一个字符串作为输入,将其转换为字符列表,然后打乱这个列表。

exp4j 逻辑表达式

exp4j 逻辑表达式

exp4j 逻辑表达式exp4j是一个用于解析和计算数学表达式的Java库。

它不支持直接解析和计算逻辑表达式,但可以通过一些技巧实现:1. 使用exp4j解析和计算数学表达式,并将逻辑运算符(如"&&"、"||"、"!"等)映射到数学运算符(如"&"、"|"、"^"等)。

例如,可以将"&&"映射到"&",将"||"映射到"|",然后使用exp4j计算结果。

2. 使用exp4j计算多个逻辑表达式的值,然后根据逻辑运算符的规则进行逻辑运算。

例如,可以使用exp4j计算每个逻辑表达式的值,然后使用if语句判断并执行相应的逻辑运算。

下面是一个示例使用exp4j计算逻辑表达式的代码:```javaimport net.objecthunter.exp4j.Expression;import net.objecthunter.exp4j.ExpressionBuilder;public class LogicExpression {public static void main(String[] args) {String expressionString = "a && b || !c";boolean a = true;boolean b = false;boolean c = true;// 将逻辑运算符映射为数学运算符String mathExpressionString = expressionString.replace("&&", "&").replace("||", "|").replace("!", "^");Expression expression = newExpressionBuilder(mathExpressionString).variable("a").variable("b").variable("c").build();// 设置变量的值expression.setVariable("a", a ? 1 : 0);expression.setVariable("b", b ? 1 : 0);expression.setVariable("c", c ? 1 : 0);// 计算数学表达式的结果double result = expression.evaluate();// 将数学结果映射回逻辑结果boolean logicResult = result != 0;System.out.println("逻辑表达式的结果:" + logicResult); }}```请注意,这只是一种实现逻辑表达式计算的方法,可能不是最简洁或最高效的方法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《Java语言程序设计》实验报告实验序号:05实验项目名称:继承和多态学号姓名专业、班实验地点文波指导教师韩志龙时间2013/6/3一、实验目的及要求目的:理解继承与多态的概念,熟练掌握使用方法二、实验设备(环境)1.windows操作系统2.MyEclipse软件三、实验内容与步骤1、设计一个数据类型判断类Polymorphism,使用重载、装箱等技术判断一个不带等号的Java表达式的结果的数据类型。

2、设计一个链表结点类LinkNode,此类可以存放int、long、float、double、byte、short、String、StringBuffer类型的数据。

用此类:a、随机产生100个整数(范围自定)的链表,在生成的过程中从小到大排列,然后输出;b、随机产生100个6个英文字母的单词的链表,在生成的过程中从小到大排列,然后输出。

(关注装箱和拆箱相关概念)3、A、在main()中使用LinkNode类创建4个实例,并赋予不同的值(long、double、StringBuffer、MyDate),然后使用Object中默认的toString()方法(从超级父类继承而来)显示结果。

B、继承LinkNode类创建新类LinkNodeS,在其中重写Object中默认的toString()方法(将结点的value转换成对应的字符串),main()中用LinkNodeS类同样创建4个实例,并赋予和上面同样的值(long、double、StringBuffer、MyDate),观察使用新的toString()方法的效果,体会继承与多态。

(MyDate的日期toString用标准格式)4、有来自4类(鸟类、昆虫类、爬行类和鱼类)的100个动物聚在一起开会,商议和另一个动物部落打仗事宜,会议要求每个动物都要报告自己所属的动物类别和自己的天赋,以便选拔人才、组织兵力迎战。

设计:用Animal作为基类,鸟类、昆虫类、爬行类和鱼类各作为Animal的子类设计类层次结构,设计时运用继承、重写并设计多态机制,同时对每个子类至少要添加一个其描述的动物特有的行为和一个特有的属性,以更准确地描述子类对象。

使用:用循环随机生成这100个动物装入动物数组,要对每个动物进行编号和随机命名,用循环让每个参会的动物报告自己的类别和天赋。

Animal内容如下:Class Animal{public int id; //编号public String name;//名字//public String type;//类别:鸟类、昆虫类、爬行类和鱼类之一public void showType()//在console上秀自己的类别System.out.println(“My ID is “+id+”and I am just an animal, my type is going to be determined later.”);}public void showTalent()//在console上秀自己的天赋特长{System.out.println(“I don’t know what I am talented at.”);}}(请认真观察和体会Java的继承和多态)四、实验结果与数据处理第一题:public class wmt{public static void main(String[] args){System.out.println(Polymorphism.getType(5678901234l*987654321));System.out.println(Polymorphism.getType(34+6+8));System.out.println(Polymorphism.getType('u'));System.out.println(Polymorphism.getType(6/5.0));System.out.println(Polymorphism.getType(456.123f*789));}}class Polymorphism{private final static String INT_TYPE = "int";private final static String LONG_TYPE = "long";private final static String DOUBLE_TYPE = "double";private final static String FLOAT_TYPE = "float";private final static String CHAR_TYPE = "char";private final static String BYTE_TYPE = "byte";private final static String SHORT_TYPE = "short";private final static String BOOLAEN_TYPE = "boolean";public static String getType(int i) {return INT_TYPE;}public static String getType(long l) {return LONG_TYPE;}public static String getType(double d) {return DOUBLE_TYPE;public static String getType(float f) {return FLOAT_TYPE;}public static String getType(char c) {return CHAR_TYPE;}public static String getType(byte by) {return BYTE_TYPE;}public static String getType(short s) {return SHORT_TYPE;}public static String getType(boolean bo) {return BOOLAEN_TYPE;}public static String getType(Object obj){return obj != null ? obj.toString().split("@")[0] : null; }}第二、三题:public class wmt {public static void main(String[] args){int100();englishString100();LinkNode aLong=new LinkNode(123456789l);LinkNode aDouble=new LinkNode(123.456);LinkNode aStringBuffer=new LinkNode("abcde");LinkNode aDate=new LinkNode("2013-6-3 21:16:28");System.out.println(aLong.toString());System.out.println(aDouble.toString());System.out.println(aStringBuffer.toString());System.out.println(aDate.toString());LinkNodeS anotherLong=new LinkNodeS(123456789l);LinkNodeS anotherDouble=new LinkNodeS(123.456);LinkNodeS anotherStringBuffer=new LinkNodeS("abcde");LinkNodeS anotherDate=new LinkNodeS("2013-6-3 21:16:28");System.out.println(anotherLong.toString());System.out.println(anotherDouble.toString());System.out.println(anotherStringBuffer.toString());System.out.println(anotherDate.toString());}static void int100(){LinkNode theFirst=new LinkNode(-1);LinkNode aPointer=theFirst;LinkNode theEnd=new LinkNode(1000);aPointer.nextNode=theEnd;for(int i=0;i<100;i++){aPointer=theFirst;LinkNode aNode=new LinkNode((int)(Math.random()*1000));while((Integer)aNode.value>(Integer)aPointer.nextNode.value) {aPointer=aPointer.nextNode;}aNode.nextNode=aPointer.nextNode;aPointer.nextNode=aNode;}aPointer=theFirst;for(int i=0;i<100;i++){aPointer=aPointer.nextNode;aPointer.display();}}static void englishString100(){LinkNode theFirst=new LinkNode("aaaaaa");LinkNode aPointer=theFirst;LinkNode theEnd=new LinkNode("zzzzzz");aPointer.nextNode=theEnd;int intCharCode;for(int i=0;i<100;i++){StringBuffer aString=new StringBuffer();aPointer=theFirst;aString.setLength(0);for (int j = 0; j < 6; j++){intCharCode = 0;while (!(intCharCode >= 65 && intCharCode <= 90 || intCharCode >= 97 && intCharCode <= 122))intCharCode = 65 + (int) (Math.random() * 58);aString.append((char)intCharCode);}LinkNode aNode=new LinkNode(aString);while(((String)aNode.value.toString()).compareTo((String)aPointer .nextNode.value.toString())>0){aPointer=aPointer.nextNode;}aNode.nextNode=aPointer.nextNode;aPointer.nextNode=aNode;}aPointer=theFirst;for(int i=0;i<100;i++){aPointer=aPointer.nextNode;aPointer.display();}}}class LinkNode{public Object value;public LinkNode nextNode;public LinkNode(Object obj){value=obj;}public void display(){System.out.println(this.value);}}class LinkNodeS extends LinkNode{public LinkNodeS(Object obj){super(obj);}public String toString(){String aString;aString=""+value;return aString;}}第四题:public class Animals {public static void main(String[] args){StringBuffer[] names;names=new StringBuffer[100];int intCharCode;StringBuffer aName=new StringBuffer();for (int i = 0; i < 100; i++){aName.setLength(0);for (int j = 0; j < 6; j++){intCharCode = 0;while (!(intCharCode >= 65 && intCharCode <= 90 || intCharCode >= 97 && intCharCode <= 122))intCharCode = 65 + (int) (Math.random() * 58);aName.append((char)intCharCode);}names[i]=new StringBuffer(aName);}Animal[] animals=new Animal[100];int aNum,flag;for(int i=0;i<100;i++){aNum=30+(int)(Math.random()*70);flag=(int)(Math.random()*4);if(flag==0)animals[i]=new Bird(i+1,names[i],"bird","flying",aNum);else if(flag==1)animals[i]=newInsect(i+1,names[i],"insect","jumping",aNum);else if(flag==2)animals[i]=newReptilia(i+1,names[i],"reptilia","creeping",aNum);elseanimals[i]=newFish(i+1,names[i],"fish","swimming",aNum);}for(int i=0;i<100;i++){animals[i].showType();animals[i].showTalent();if(animals[i] instanceof Bird){Bird aBird=(Bird) animals[i];aBird.showMyFly();}else if(animals[i] instanceof Insect){Insect anInsect=(Insect) animals[i];anInsect.showMyJump();}else if(animals[i] instanceof Reptilia){Reptilia aReptilia=(Reptilia) animals[i];aReptilia.showMyCreep();}else{Fish aFish=(Fish) animals[i];aFish.showMySwim();}}}}class Animal{public int id; //编号public StringBuffer name;//名字public String type; //类别:鸟类、昆虫类、爬行类和鱼类之一public String talent;public void showType()//在console上秀自己的类别{System.out.print("My ID is "+id+" and my name is "+name+"."+" I am just a "+type+".");}public void showTalent()//在console上秀自己的天赋特长{System.out.print("I am talented at "+talent+".");}}class Bird extends Animal{public int flySpeed;public Bird(int id,StringBuffer name,String type,String talent,int flySpeed){this.id=id;=name;this.type=type;this.talent=talent;this.flySpeed=flySpeed;}public void showMyFly(){System.out.println("And I can fly "+flySpeed+" kilometres per hour.");}}class Insect extends Animal{public int jumpHeight;public Insect(int id,StringBuffer name,String type,String talent,intjumpHeight){this.id=id;=name;this.type=type;this.talent=talent;this.jumpHeight=jumpHeight;}public void showMyJump(){System.out.println("And I can jump "+jumpHeight+"cm high.");}}class Reptilia extends Animal{public int creepSpeed;public Reptilia(int id,StringBuffer name,String type,Stringtalent,int creepSpeed){this.id=id;=name;this.type=type;this.talent=talent;this.creepSpeed=creepSpeed;}public void showMyCreep(){System.out.println("And I can creep "+creepSpeed+" kilometres per hour.");}}class Fish extends Animal{public int swimSpeed;public Fish(int id,StringBuffer name,String type,String talent,int swimSpeed){this.id=id;=name;this.type=type;this.talent=talent;this.swimSpeed=swimSpeed;}public void showMySwim(){System.out.println("And I can swim "+swimSpeed+" kilometres per hour.");}}第一题的运行结果:longintchardoublefloat第二,三题的运行结果:13 14 79 83 95 96 98 100 104 106 108 112 122 127 134 154 158 187 204 211 216 278 306 336 344 344 357 378 383 384 386 388 388 391 392 412 423 426 433 443 447 448 455 462 476 478 486 488 489 492 495 498 504 509 510 531 564 572 603 603 617 623 627 631 635 643 663 691 705 707 713 722 727 733 742 743 765 787 788 803 804 807 820 820 841 844 848 861 873 884 892 921 939 940 956 964 975 976 981 999 AboRZx BOUbzD CNmcRP CyMBvZ DLEEnZ EvYVht GZmNMR Gkgeix Gywnwy HCAOeZ HqhBZV HvYloU JrhiVW KPuJZO Khxymc MtTpUA NeNwKY NkzzeW NxJrgX NysQcY PFCIwC PJrTFM PdMuwA QOsODB QTbWYG QzalAs QzjtPi RpguMH SbJaaW SeGRLj ShCOsb TIUJUW TWvtTk TaHoZv UUpqIP UmjNoD VZgrpe VgarLj VsYGBw WTUBeD XiHAxB XjYNGN XkKdCY XpGyEA YOhfJr YQUyrj YqxAaj aBXyeI aGETCE aHpmYC aoKVci cEWkZU ckenPC cugDfh dCqQdJ dGRwfo giWSKg grwrlg gvTuAT hiHsvu iwUACw jPWqOQ jQacMO jySrKK kUUbNd lKtJpi lLCuQK ltZiQf mTotuV mcmItE nVPFXV nfOxcw owlFFl pEBqWf qEsmnH qFQacJ quXbpo rKmnwF rbUdiS sBmgoU sWuzuW sztCTa tBRNzq tDrcGk tFSptN taynIr tknmyn twtwfE uikuaG wILaVh wXLHPq wjNOfp wzsFkj xPeUgg xcoUsz xeQoTz yPIWUh yciARh yhsvOb yxiZNg LinkNode@6e1408 LinkNode@f62373LinkNode@1f33675LinkNode@7c6768123456789123.456abcde2013-6-3 21:16:28第四题的运行结果:My ID is 1 and my name is bXnpIL. I am just a reptilia.I am talented at creeping.And I can creep 59 kilometres per hour.My ID is 2 and my name is eTMNzf. I am just a bird.I am talented at flying.And I can fly 86 kilometres per hour.My ID is 3 and my name is bLqtWe. I am just a fish.I am talented at swimming.And I can swim 78 kilometres per hour.My ID is 4 and my name is sVaemA. I am just a bird.I am talented at flying.And I can fly 63 kilometres per hour.My ID is 5 and my name is LkWaiP. I am just a reptilia.I am talented at creeping.And I can creep 72 kilometres per hour.My ID is 6 and my name is ziXJzT. I am just a bird.I am talented at flying.And I can fly 94 kilometres per hour.My ID is 7 and my name is CiEwVi. I am just a fish.I am talented at swimming.And I can swim 54 kilometres per hour.My ID is 8 and my name is Gatvyg. I am just a bird.I am talented at flying.And I can fly 65 kilometres per hour.My ID is 9 and my name is VGwgcK. I am just a fish.I am talented at swimming.And I can swim 46 kilometres per hour.My ID is 10 and my name is FUxEIv. I am just a reptilia.I am talented at creeping.And I can creep 30 kilometres per hour.My ID is 11 and my name is UbVsbg. I am just a bird.I am talented at flying.And I can fly 96 kilometres per hour.My ID is 12 and my name is vXblum. I am just a insect.I am talented at jumping.And I can jump 90cm high.My ID is 13 and my name is LagIKr. I am just a reptilia.I am talented at creeping.And I can creep 66 kilometres per hour.My ID is 14 and my name is pHfoiS. I am just a fish.I am talented at swimming.And I can swim 57 kilometres per hour.My ID is 15 and my name is edueqq. I am just a insect.I am talented at jumping.And I can jump 56cm high.My ID is 16 and my name is mbeaUq. I am just a fish.I am talented at swimming.And I can swim 54 kilometres per hour.My ID is 17 and my name is hIeQkD. I am just a bird.I am talented at flying.And I can fly 66 kilometres per hour.My ID is 18 and my name is LAoNkR. I am just a reptilia.I am talented at creeping.And I can creep 65 kilometres per hour.My ID is 19 and my name is UGoCzS. I am just a bird.I am talented at flying.And I can fly 35 kilometres per hour.My ID is 20 and my name is lMQNxC. I am just a fish.I am talented at swimming.And I can swim 70 kilometres per hour.My ID is 21 and my name is tPvlog. I am just a bird.I am talented at flying.And I can fly 95 kilometres per hour.My ID is 22 and my name is lUefIe. I am just a insect.I am talented at jumping.And I can jump 34cm high.My ID is 23 and my name is loxkko. I am just a reptilia.I am talented at creeping.And I can creep 99 kilometres per hour.My ID is 24 and my name is uutSjT. I am just a reptilia.I am talented at creeping.And I can creep 59 kilometres per hour.My ID is 25 and my name is fSplYx. I am just a reptilia.I am talented at creeping.And I can creep 84 kilometres per hour.My ID is 26 and my name is QsRAji. I am just a bird.I am talented at flying.And I can fly 46 kilometres per hour.My ID is 27 and my name is tylZwu. I am just a bird.I am talented at flying.And I can fly 81 kilometres per hour.My ID is 28 and my name is mCZDId. I am just a reptilia.I am talented at creeping.And I can creep 33 kilometres per hour.My ID is 29 and my name is LWAvgq. I am just a bird.I am talented at flying.And I can fly 82 kilometres per hour.My ID is 30 and my name is rHFZAW. I am just a fish.I am talented at swimming.And I can swim 58 kilometres per hour.My ID is 31 and my name is ucDEDC. I am just a reptilia.I am talented at creeping.And I can creep 93 kilometres per hour.My ID is 32 and my name is TaBgkg. I am just a fish.I am talented at swimming.And I can swim 66 kilometres per hour.My ID is 33 and my name is YQHPGg. I am just a insect.I am talented at jumping.And I can jump 71cm high.My ID is 34 and my name is RwXQkn. I am just a reptilia.I am talented at creeping.And I can creep 36 kilometres per hour.My ID is 35 and my name is QhUIPE. I am just a reptilia.I am talented at creeping.And I can creep 47 kilometres per hour.My ID is 36 and my name is fkXwmj. I am just a bird.I am talented at flying.And I can fly 52 kilometres per hour.My ID is 37 and my name is yfwtZx. I am just a fish.I am talented at swimming.And I can swim 71 kilometres per hour.My ID is 38 and my name is bAfdGA. I am just a reptilia.I am talented at creeping.And I can creep 31 kilometres per hour.My ID is 39 and my name is JwphLS. I am just a bird.I am talented at flying.And I can fly 73 kilometres per hour.My ID is 40 and my name is SVOeym. I am just a reptilia.I am talented at creeping.And I can creep 54 kilometres per hour.My ID is 41 and my name is ELsxQh. I am just a insect.I am talented at jumping.And I can jump 44cm high.My ID is 42 and my name is XJVcsZ. I am just a bird.I am talented at flying.And I can fly 83 kilometres per hour.My ID is 43 and my name is RLFUzL. I am just a reptilia.I am talented at creeping.And I can creep 32 kilometres per hour.My ID is 44 and my name is vzwugQ. I am just a bird.I am talented at flying.And I can fly 60 kilometres per hour.My ID is 45 and my name is CVpkKI. I am just a reptilia.I am talented at creeping.And I can creep 62 kilometres per hour.My ID is 46 and my name is dIqWhi. I am just a bird.I am talented at flying.And I can fly 40 kilometres per hour.My ID is 47 and my name is jCqYSF. I am just a bird.I am talented at flying.And I can fly 74 kilometres per hour.My ID is 48 and my name is LnqWBI. I am just a bird.I am talented at flying.And I can fly 39 kilometres per hour.My ID is 49 and my name is SUQGhU. I am just a insect.I am talented at jumping.And I can jump 64cm high.My ID is 50 and my name is ZbUtFN. I am just a reptilia.I am talented at creeping.And I can creep 51 kilometres per hour.My ID is 51 and my name is dOGhpk. I am just a reptilia.I am talented at creeping.And I can creep 81 kilometres per hour.My ID is 52 and my name is EAdFAt. I am just a insect.I am talented at jumping.And I can jump 69cm high.My ID is 53 and my name is CtTzkq. I am just a insect.I am talented at jumping.And I can jump 55cm high.My ID is 54 and my name is XdOeXi. I am just a bird.I am talented at flying.And I can fly 54 kilometres per hour.My ID is 55 and my name is jUENwr. I am just a bird.I am talented at flying.And I can fly 83 kilometres per hour.My ID is 56 and my name is MYMFcm. I am just a bird.I am talented at flying.And I can fly 58 kilometres per hour.My ID is 57 and my name is dEVcGX. I am just a fish.I am talented at swimming.And I can swim 44 kilometres per hour.My ID is 58 and my name is OjARZU. I am just a reptilia.I am talented at creeping.And I can creep 86 kilometres per hour.My ID is 59 and my name is XMCgzt. I am just a reptilia.I am talented at creeping.And I can creep 76 kilometres per hour.My ID is 60 and my name is HySAjB. I am just a fish.I am talented at swimming.And I can swim 63 kilometres per hour.My ID is 61 and my name is rmbrvn. I am just a reptilia.I am talented at creeping.And I can creep 43 kilometres per hour.My ID is 62 and my name is DwUTXU. I am just a fish.I am talented at swimming.And I can swim 58 kilometres per hour.My ID is 63 and my name is XLVFGT. I am just a insect.I am talented at jumping.And I can jump 88cm high.My ID is 64 and my name is uZNfXn. I am just a bird.I am talented at flying.And I can fly 52 kilometres per hour.My ID is 65 and my name is dHibgG. I am just a fish.I am talented at swimming.And I can swim 86 kilometres per hour.jumping.And I can jump 87cm high.My ID is 67 and my name is PZASuv. I am just a fish.I am talented at swimming.And I can swim 32 kilometres per hour.My ID is 68 and my name is GUCTEl. I am just a insect.I am talented at jumping.And I can jump 89cm high.My ID is 69 and my name is lYxGqN. I am just a fish.I am talented at swimming.And I can swim 74 kilometres per hour.My ID is 70 and my name is nsTyqK. I am just a bird.I am talented at flying.And I can fly 56 kilometres per hour.My ID is 71 and my name is zjDRrz. I am just a reptilia.I am talented at creeping.And I can creep 64 kilometres per hour.My ID is 72 and my name is Dyxxuu. I am just a insect.I am talented at jumping.And I can jump 31cm high.My ID is 73 and my name is hhlRvF. I am just a bird.I am talented at flying.And I can fly 58 kilometres per hour.My ID is 74 and my name is fsxWzK. I am just a bird.I am talented at flying.And I can fly 30 kilometres per hour.My ID is 75 and my name is bXzMWS. I am just a insect.I am talented at jumping.And I can jump 56cm high.My ID is 76 and my name is mMIPrU. I am just a bird.I am talented at flying.And I can fly 90 kilometres per hour.My ID is 77 and my name is LZARkv. I am just a insect.I am talented at jumping.And I can jump 51cm high.My ID is 78 and my name is rUJudg. I am just a bird.I am talented at flying.And I can fly 90 kilometres per hour.My ID is 79 and my name is KxJEGG. I am just a fish.I am talented at swimming.And I can swim 55 kilometres per hour.My ID is 80 and my name is VgNNlo. I am just a reptilia.I am talented at creeping.And I can creep 72 kilometres per hour.My ID is 81 and my name is NWxZXy. I am just a reptilia.I am talented at creeping.And I can creep 56 kilometres per hour.My ID is 82 and my name is YPFQNw. I am just a reptilia.I am talented at creeping.And I can creep 53 kilometres per hour.My ID is 83 and my name is TFVdfM. I am just a bird.I am talented at flying.And I can fly 81 kilometres per hour.My ID is 84 and my name is raiGAq. I am just a fish.I am talented at swimming.And I can swim 71 kilometres per hour.My ID is 85 and my name is pAjESh. I am just a reptilia.I am talented at creeping.And I can creep 93 kilometres per hour.My ID is 86 and my name is dCwJXz. I am just a insect.I am talented at jumping.And I can jump 59cm high.My ID is 87 and my name is SbZwWr. I am just a bird.I am talented at flying.And I can fly 62 kilometres per hour.swimming.And I can swim 40 kilometres per hour.My ID is 89 and my name is rFyRdS. I am just a fish.I am talented at swimming.And I can swim 31 kilometres per hour.My ID is 90 and my name is hiMboS. I am just a insect.I am talented at jumping.And I can jump 78cm high.My ID is 91 and my name is vvKNYf. I am just a reptilia.I am talented at creeping.And I can creep 40 kilometres per hour.My ID is 92 and my name is LpDHPX. I am just a insect.I am talented at jumping.And I can jump 85cm high.My ID is 93 and my name is hhiTxv. I am just a bird.I am talented at flying.And I can fly 76 kilometres per hour.My ID is 94 and my name is fzBtfY. I am just a reptilia.I am talented at creeping.And I can creep 52 kilometres per hour.My ID is 95 and my name is aOoUPl. I am just a bird.I am talented at flying.And I can fly 86 kilometres per hour.My ID is 96 and my name is BwhOHu. I am just a insect.I am talented at jumping.And I can jump 49cm high.My ID is 97 and my name is xtFluo. I am just a insect.I am talented at jumping.And I can jump 99cm high.My ID is 98 and my name is qWrFDR. I am just a reptilia.I am talented at creeping.And I can creep 95 kilometres per hour.My ID is 99 and my name is pEPdfS. I am just a fish.I am talented at swimming.And I can swim 84 kilometres per hour.My ID is 100 and my name is EdQZoh. I am just a bird.I am talented at flying.And I can fly 59 kilometres per hour.五、分析与讨论(体会、感想、意见、建议)这次实验的主要目的是理解继承与多态的概念,熟练掌握使用方法。

相关文档
最新文档