- 浏览: 515047 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (114)
- C基础 (1)
- C指针 (0)
- C语言库函数相关 (1)
- Linux (2)
- Linux网络编程 (1)
- PostgreSQL (0)
- Redis (2)
- Java Web (2)
- JAVA基础 (35)
- Ubuntu (8)
- Android (2)
- MySQL (3)
- 日志 (1)
- 书虫 (1)
- 数据结构 (0)
- 算法 (0)
- 开发工具 (1)
- 转载 (13)
- 英语 (18)
- tomcat启动脚本分析 (3)
- Oracle基础 (4)
- tomcat源码分析 (3)
- tomcat (1)
- Java相关 (1)
- Oracle基本原理--Oracle体系结构 (0)
- Oracle基本原理--表 (0)
- Oracle基本原理--索引 (0)
- Oracle基本原理--事务 (0)
- Oracle开发--SQL (1)
- Oracle基本原理--PL/SQL (0)
- Oracle基本原理--常用函数 (0)
- Oralce管理--用户及权限管理 (0)
- Oracle管理--安装调试 (0)
- Oracle管理--备份恢复 (0)
- Oralce管理--数据迁移 (0)
- Oracle管理--闪回 (0)
- Oracle管理--故障处理 (0)
- Oracle优化原理--统计信息 (0)
- Oracle优化原理--执行计划 (0)
- Oracle优化原理--诊断工具 (0)
- Oracle优化原理--深入理解表 (0)
- Oracle优化原理--深入理解索引 (0)
- Oracle优化原理--表连接原理 (0)
- Java--OOP (0)
- Java--异常 (0)
- Java--泛型 (0)
- Java--集合 (0)
- Java--IO (0)
- Java--枚举类型 (0)
- Java--注释 (0)
- Java--多线程 (0)
- Java--XML (0)
- Java--JDBC (3)
- Servlet (0)
- JSP (0)
- JSTL (0)
- 设计模式 (0)
- DAO与MVC (0)
- Javascript (2)
- Ajax (0)
- JQuery (0)
- HTML/CSS (0)
- 前端相关 (1)
- HTTP (0)
- TCP/IP (0)
- GO基础 (0)
最新评论
-
jsonmong:
推荐一个开发平台,采用的是插件化的设计思想,效果很不错的。ht ...
构建Java Web开发环境 -
wxm198427:
首先表示辛苦了!我想问个问题:我的是windows 7 x64 ...
Oracle 11g R2 for Win7旗舰版(64位)的安装步骤 -
握着橄榄枝的人:
我之前按照你的update mysql.user set pa ...
Windows7下MySQL5.5.20免安装版的配置 -
confident_f:
安装了32的客户端后,用plsql导入导出表有问题,生成不了d ...
Oracle 11g R2 for Win7旗舰版(64位)的安装步骤 -
confident_f:
安装数据库的时候第9步卡住了 是怎么回事呢?
Oracle 11g R2 for Win7旗舰版(64位)的安装步骤
1、程序1的结果是:
程序运行的结果入下:
load a
load b
create a
create b
结果说明:
该程序主要涉及到静态初始化块和构造器的执行顺序。
(1)构造器的执行顺序:创建任何Java对象总是从该类所在继承树的最顶层类的构造器开始执行,然后依次向下执行,最后才执行本类的构造器。也就是说,创建任何Java对象,最先执行的总是java.lang.Object类的构造器。
(2)初始化块:是Java类里可出现的第四种成员(其他三种为属性、方法和构造器),一个类里可以有多个初始化块,相同类型的初始化块之间有顺序:前面定义的初始化块先执行,后面定义的初始化块后执行。
初始化块的修饰符只能是static,使用static修饰的初始化块称为静态初始化块。初始化块里的代码可以包含任何可执行语句,包括定义局部变量、调用其他对象的方法、使用分支、循环语句等。
初始化块虽然也是Java类的一种成员,但它没有名字,也就没有标识,因此无法通过类、对象来调用初始化块。初始化块只在创建Java对象时隐式执行,而且在执行构造器之前执行。
注意:当Java创建一个对象时,系统先为该对象的所有实例属性分配内存(前提是该类已经被加载过了),接着程序开始对这些实例属性执行初始化,其初始化顺序是:先执行初始化块或声明属性时指定的初始值,再执行构造器里指定的初始值。
当创建一个Java对象时,不仅会执行该类的普通初始化块和构造器,系统会一直上溯到java.lang.Object类,先执行java.lang.Object类的初始化块,开始执行java.lang.Object类的构造器,依次向下执行其父类的初始化块,开始执行其父类的构造器……最后才执行该类的初始化块和构造器,返回该类的对象。
静态初始化块是类相关的,系统将在类初始化阶段执行静态初始化块,而不是在创建对象时才执行。因此静态初始化块总是比普通初始化块先执行。
静态初始化块是类相关的,用于对整个类进行初始化处理,通常用于对类属性执行初始化处理。静态初始化块不能对实例属性进行初始化处理。
与普通初始化块类似的是,系统在类初始化阶段执行静态初始化块时,不仅会执行本类的静态初始化块,还会一直上溯到java.lang.Object类(如果它包含静态初始化块),先执行java.lang.Object类的静态初始化块,然后执行其父类的静态初始化块……最后才执行该类的静态初始化块,经过这个过程,才完成了该类的初始化过程。只有当类初始化完成后,才可以在系统中使用这个类,包括访问这个类的类方法、类属性,或者用这个类来创建实例。
例程1:
程序的运行结果1(注释掉后面一个new Leaf();):
Root的静态初始化块
Mid的静态初始化块
Leaf的静态初始化块
Root的普通初始化块
Root的无参构造器
Mid的普通初始化块
Mid的无参构造器
Mid的带参构造器,其参数值是:Think in Java
Leaf的普通初始化块
执行Leaf的构造器
程序的运行结果2(去掉后面一个new Leaf();的注释):
Root的静态初始化块
Mid的静态初始化块
Leaf的静态初始化块
Root的普通初始化块
Root的无参构造器
Mid的普通初始化块
Mid的无参构造器
Mid的带参构造器,其参数值是:Think in Java
Leaf的普通初始化块
执行Leaf的构造器
Root的普通初始化块
Root的无参构造器
Mid的普通初始化块
Mid的无参构造器
Mid的带参构造器,其参数值是:Think in Java
Leaf的普通初始化块
执行Leaf的构造器
从结果可以看出:类的初始化阶段,先执行最顶层父类的静态初始化块,依次向下,最后执行当前类的静态初始化块;接着,对象的初始化阶段,先执行最顶层父类的初始化块、构造器,依次向下,最后执行当前类的初始化块、构造器。
注意:静态初始化块只执行一次。
2、程序2的结果是:
程序的运行结果如下:
false
[Think in Java]
1
结果说明:
Set集合不允许包含相同的元素,如果试图把两个相同的元素加入到同一个Set集合中,则添加操作失败,add()方法返回false,且新元素不会被加入。
Set集合判断两个对象是否相同,不是使用==运算符,而是使用equals()方法。也就是说,如果只要两个对象用equals()方法比较返回true,Set就不会接受这两个对象;反之,只要两个对象用equals()方法比较返回false,Set就会接受这两个对象(甚至着两个对象是同一个对象,Set也可以把它们当成两个对象处理)。
例程2:
源代码:Person.java
源代码:TestSet.java
程序的运行结果1(注释掉hashCode()方法):
p1 == p2的值为:false
p1.equals(p2)的值为:true
----------
又添加一个张三是否成功:true
Set集合中的元素如下:
张三
张三
李四
个数为:3
程序的运行结果2(去掉hashCode()方法的注释):
p1 == p2的值为:false
p1.equals(p2)的值为:true
----------
又添加一个张三是否成功:false
Set集合中的元素如下:
张三
李四
个数为:2
结果说明:
public int hashCode()
返回该对象的哈希码值。支持此方法是为了提高哈希表(例如 java.util.Hashtable 提供的哈希表)的性能。
hashCode 的常规协定是:
在 Java 应用程序执行期间,在对同一对象多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是将对象进行 equals 比较时所用的信息没有被修改。从某一应用程序的一次执行到同一应用程序的另一次执行,该整数无需保持一致。
如果根据 equals(Object) 方法,两个对象是相等的,那么对这两个对象中的每个对象调用 hashCode 方法都必须生成相同的整数结果。
如果根据 equals(java.lang.Object) 方法,两个对象不相等,那么对这两个对象中的任一对象上调用 hashCode 方法不 要求一定生成不同的整数结果。但是,程序员应该意识到,为不相等的对象生成不同整数结果可以提高哈希表的性能。
实际上,由 Object 类定义的 hashCode 方法确实会针对不同的对象返回不同的整数。(这一般是通过将该对象的内部地址转换成一个整数来实现的,但是 JavaTM 编程语言不需要这种实现技巧。)
public boolean equals(Object obj)
指示其他某个对象是否与此对象“相等”。
equals 方法在非空对象引用上实现相等关系:
自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true。
对称性:对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true。
传递性:对于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 应返回 true。
一致性:对于任何非空引用值 x 和 y,多次调用 x.equals(y) 始终返回 true 或始终返回 false,前提是对象上 equals 比较中所用的信息没有被修改。
对于任何非空引用值 x,x.equals(null) 都应返回 false。
Object 类的 equals 方法实现对象上差别可能性最大的相等关系;即,对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true(x == y 具有值 true)。
注意:当此方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。
class A{ static{ System.out.println("load a"); } A(){ System.out.println("create a"); } } class B extends A{ static{ System.out.println("load b"); } B(){ System.out.println("create b"); } } public class TestABDemo{ public static void main(String args[]){ new B(); } }
程序运行的结果入下:
load a
load b
create a
create b
结果说明:
该程序主要涉及到静态初始化块和构造器的执行顺序。
(1)构造器的执行顺序:创建任何Java对象总是从该类所在继承树的最顶层类的构造器开始执行,然后依次向下执行,最后才执行本类的构造器。也就是说,创建任何Java对象,最先执行的总是java.lang.Object类的构造器。
(2)初始化块:是Java类里可出现的第四种成员(其他三种为属性、方法和构造器),一个类里可以有多个初始化块,相同类型的初始化块之间有顺序:前面定义的初始化块先执行,后面定义的初始化块后执行。
初始化块的修饰符只能是static,使用static修饰的初始化块称为静态初始化块。初始化块里的代码可以包含任何可执行语句,包括定义局部变量、调用其他对象的方法、使用分支、循环语句等。
初始化块虽然也是Java类的一种成员,但它没有名字,也就没有标识,因此无法通过类、对象来调用初始化块。初始化块只在创建Java对象时隐式执行,而且在执行构造器之前执行。
注意:当Java创建一个对象时,系统先为该对象的所有实例属性分配内存(前提是该类已经被加载过了),接着程序开始对这些实例属性执行初始化,其初始化顺序是:先执行初始化块或声明属性时指定的初始值,再执行构造器里指定的初始值。
当创建一个Java对象时,不仅会执行该类的普通初始化块和构造器,系统会一直上溯到java.lang.Object类,先执行java.lang.Object类的初始化块,开始执行java.lang.Object类的构造器,依次向下执行其父类的初始化块,开始执行其父类的构造器……最后才执行该类的初始化块和构造器,返回该类的对象。
静态初始化块是类相关的,系统将在类初始化阶段执行静态初始化块,而不是在创建对象时才执行。因此静态初始化块总是比普通初始化块先执行。
静态初始化块是类相关的,用于对整个类进行初始化处理,通常用于对类属性执行初始化处理。静态初始化块不能对实例属性进行初始化处理。
与普通初始化块类似的是,系统在类初始化阶段执行静态初始化块时,不仅会执行本类的静态初始化块,还会一直上溯到java.lang.Object类(如果它包含静态初始化块),先执行java.lang.Object类的静态初始化块,然后执行其父类的静态初始化块……最后才执行该类的静态初始化块,经过这个过程,才完成了该类的初始化过程。只有当类初始化完成后,才可以在系统中使用这个类,包括访问这个类的类方法、类属性,或者用这个类来创建实例。
例程1:
class Root{ static{ System.out.println("Root的静态初始化块"); } { System.out.println("Root的普通初始化块"); } public Root(){ System.out.println("Root的无参构造器"); } } class Mid extends Root{ static{ System.out.println("Mid的静态初始化块"); } { System.out.println("Mid的普通初始化块"); } public Mid(){ System.out.println("Mid的无参构造器"); } public Mid(String msg){ //通过this调用同一个类中重载的构造器 this(); System.out.println("Mid的带参构造器,其参数值是:"+msg); } } class Leaf extends Mid{ static{ System.out.println("Leaf的静态初始化块"); } { System.out.println("Leaf的普通初始化块"); } public Leaf(){ //通过super调用父类中有一个字符串参数的构造器 super("Think in Java"); System.out.println("执行Leaf的构造器"); } } public class Test{ public static void main(String args[]){ new Leaf(); //new Leaf(); } }
程序的运行结果1(注释掉后面一个new Leaf();):
Root的静态初始化块
Mid的静态初始化块
Leaf的静态初始化块
Root的普通初始化块
Root的无参构造器
Mid的普通初始化块
Mid的无参构造器
Mid的带参构造器,其参数值是:Think in Java
Leaf的普通初始化块
执行Leaf的构造器
程序的运行结果2(去掉后面一个new Leaf();的注释):
Root的静态初始化块
Mid的静态初始化块
Leaf的静态初始化块
Root的普通初始化块
Root的无参构造器
Mid的普通初始化块
Mid的无参构造器
Mid的带参构造器,其参数值是:Think in Java
Leaf的普通初始化块
执行Leaf的构造器
Root的普通初始化块
Root的无参构造器
Mid的普通初始化块
Mid的无参构造器
Mid的带参构造器,其参数值是:Think in Java
Leaf的普通初始化块
执行Leaf的构造器
从结果可以看出:类的初始化阶段,先执行最顶层父类的静态初始化块,依次向下,最后执行当前类的静态初始化块;接着,对象的初始化阶段,先执行最顶层父类的初始化块、构造器,依次向下,最后执行当前类的初始化块、构造器。
注意:静态初始化块只执行一次。
2、程序2的结果是:
import java.util.*; public class TestSet{ public static void main(String args[]){ Set<String> books = new HashSet<String>(); books.add(new String("Think in Java")); boolean result = books.add(new String("Think in Java")); System.out.println(result); System.out.println(books); System.out.println(books.size()); } }
程序的运行结果如下:
false
[Think in Java]
1
结果说明:
Set集合不允许包含相同的元素,如果试图把两个相同的元素加入到同一个Set集合中,则添加操作失败,add()方法返回false,且新元素不会被加入。
Set集合判断两个对象是否相同,不是使用==运算符,而是使用equals()方法。也就是说,如果只要两个对象用equals()方法比较返回true,Set就不会接受这两个对象;反之,只要两个对象用equals()方法比较返回false,Set就会接受这两个对象(甚至着两个对象是同一个对象,Set也可以把它们当成两个对象处理)。
例程2:
源代码:Person.java
public class Person{ private String number; public Person(String n){ this.number = n; } public String getNumber(){ return number; } public void setNumber(String n){ this.number = n; } //public int hashCode(){//重新实现hashCode()方法 // return number.hashCode(); //} public boolean equals(Object obj){//重新实现equals()方法 Person p = (Person)obj; return number.equals(p.number); } }
源代码:TestSet.java
import java.util.*; public class TestSet{ public static void main(String args[]){ Person p1= new Person("张三"); Person p2= new Person("张三"); System.out.println("p1 == p2的值为:"+(p1 == p2)); System.out.println("p1.equals(p2)的值为:"+(p1.equals(p2))); System.out.println("----------"); HashSet<Person> set = new HashSet<Person>(); set.add(new Person("张三")); boolean result = set.add(new Person("张三")); System.out.println("又添加一个张三是否成功:"+result); set.add(new Person("李四")); System.out.println("Set集合中的元素如下:"); Iterator<Person> it = set.iterator(); while(it.hasNext()){ Person p = it.next(); System.out.println(p.getNumber()); } System.out.println("个数为:"+set.size()); } }
程序的运行结果1(注释掉hashCode()方法):
p1 == p2的值为:false
p1.equals(p2)的值为:true
----------
又添加一个张三是否成功:true
Set集合中的元素如下:
张三
张三
李四
个数为:3
程序的运行结果2(去掉hashCode()方法的注释):
p1 == p2的值为:false
p1.equals(p2)的值为:true
----------
又添加一个张三是否成功:false
Set集合中的元素如下:
张三
李四
个数为:2
结果说明:
public int hashCode()
返回该对象的哈希码值。支持此方法是为了提高哈希表(例如 java.util.Hashtable 提供的哈希表)的性能。
hashCode 的常规协定是:
在 Java 应用程序执行期间,在对同一对象多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是将对象进行 equals 比较时所用的信息没有被修改。从某一应用程序的一次执行到同一应用程序的另一次执行,该整数无需保持一致。
如果根据 equals(Object) 方法,两个对象是相等的,那么对这两个对象中的每个对象调用 hashCode 方法都必须生成相同的整数结果。
如果根据 equals(java.lang.Object) 方法,两个对象不相等,那么对这两个对象中的任一对象上调用 hashCode 方法不 要求一定生成不同的整数结果。但是,程序员应该意识到,为不相等的对象生成不同整数结果可以提高哈希表的性能。
实际上,由 Object 类定义的 hashCode 方法确实会针对不同的对象返回不同的整数。(这一般是通过将该对象的内部地址转换成一个整数来实现的,但是 JavaTM 编程语言不需要这种实现技巧。)
public boolean equals(Object obj)
指示其他某个对象是否与此对象“相等”。
equals 方法在非空对象引用上实现相等关系:
自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true。
对称性:对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true。
传递性:对于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 应返回 true。
一致性:对于任何非空引用值 x 和 y,多次调用 x.equals(y) 始终返回 true 或始终返回 false,前提是对象上 equals 比较中所用的信息没有被修改。
对于任何非空引用值 x,x.equals(null) 都应返回 false。
Object 类的 equals 方法实现对象上差别可能性最大的相等关系;即,对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true(x == y 具有值 true)。
注意:当此方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。
发表评论
-
foreach循环
2013-06-24 16:15 1433从JDK1.5开始,Java提供了一个更简单的循环:forea ... -
可变参数
2013-06-24 15:38 1193从JDK1.5开始,Java允许使用可变参数为方法指定数量不确 ... -
泛型(core java 笔记)
2013-06-18 16:18 20201.为什么引入泛型 package generic; ... -
构造器初始化
2010-10-18 14:42 1477可以用构造器来进行初始化。在运行时刻,可以调用方法或执行某些动 ... -
成员初始化
2010-10-18 07:55 1195Java尽力保证:所有变量在使用前都能得到恰当的初始化。 对 ... -
线程的死锁
2010-10-11 19:21 1462当两个线程相互等待对方释放同步监视器时就会发生死锁,Java虚 ... -
线程的同步
2010-10-11 19:00 1246一个经典的关于线程安全性的问题:银行取钱问题。 银行取钱的基 ... -
java网站收集
2010-10-10 18:13 1225JAVA开发者最常去的25个英文网站:http://www.i ... -
控制线程
2010-10-10 16:06 19871、线程睡眠:sleep 如果我们需要让当前正在执行的线程暂 ... -
线程的状态
2010-09-28 19:00 995线程从创建到执行完毕的整个过程称为线程的生命周期,在整个生命周 ... -
Java中Thread类的start()和run()的区别
2010-09-27 15:33 40771、start()方法来启动线程,真正实现了多线程运行,这时无 ... -
Java中创建线程的两种方法
2010-09-26 10:18 5609在Java中创建线程有两种方法:继承Thread类和实现Run ... -
创建String对象过程的内存分配小结
2010-09-23 20:32 2744常量池(Constant Pool):指的是在编译期被确定,并 ... -
Java堆和栈的区别 经典总结(转载)
2010-09-18 16:48 1239栈与堆都是Java用来在Ram中存放数据的地方。 与C++不 ... -
Java初学者都必须理解的七大问题
2010-09-18 10:36 1097问题一:我声明了什么 ... -
关于计算java程序运行时间(转载)
2010-09-18 09:22 1090//第一种,伪代码 long startTime= ... -
for循环的优化
2010-09-17 20:29 2107在程序中经常用到for循环,当一些算法实时性要求非常高时,对f ... -
详细解析Java中抽象类和接口的区别(转载)
2010-09-17 10:16 1074在Java语言中,abstract class和inter ... -
集合类(四):Map集合
2010-09-16 20:26 21205、Map集合 Map集合为映射类型,映射与集和列表有明显的区 ... -
集合类(三):Set集合
2010-09-16 19:43 28714、Set集合 Set集合为集类型,集是最简单的一种集合,存放 ...
相关推荐
安川后台程序说明
两个小球碰撞演示 二、使用工具软件: Visual C++ 6.0 1、程序思想 输入两个小球的质量和速度,创建两个小球对象,设置相应的参数创建碰撞演示。碰撞演示负责显示图形和碰撞过程。 3、程序简要说明: (1)、//绘制...
进程间通讯(两个应用程序如何通讯)C#源代码 消息传递 message-passing:通过操作系统的相应系统调用进行消息传递通讯。分为直接和间接两种: 直接通信方式:点到点的发送 Send (DestProcessName, Message); ...
【摘要】本文档主要介绍了使用 Halcon 接口进行开发程序方法及过程。在 SDK 开发包目录下,提供了 5 个示例程序,其中三个用 C++开发、两个用 C#开
【输出形式】程序将两个有序一维数组合并为一个有序数组并按照从小到大顺序输出。每个元素输出时用空格分隔,最后一个输出之后没有空格。 【样例输入】 6 2 5 8 11 20 35 4 1 6 15 60 【样例输出】1 2 5 6 8 11 15 ...
gabor+svm matlab程序,一共三个文件,两个代码文档,一个说明文档
Procedures for comparison of two constant failure rates and two constant failure (event) intensities(可靠性数据分析技术 - 比较两个恒定故障率和两个恒定故障(事件)强度的程序)。规定了比较两个观察到的...
利用MiniSTM32F103RCT6开发板V3版本的HAL库开发串口1与串口3通讯。 串口1与串口3互相通讯 串口1给串口3发送数据,串口3接收后打印“串口1给串口3发送数据” 串口3给串口1发送数据,...说明PPT中 PA10应为USART1_TX。
包内包含软著申请的两个文件1:软件使用说明书2:软件源代码;在此基础上只需要简单的修改就可以,成功根据这两个文件下证。
RBF神经网络自适应控制程序及simulink仿真 第一个模型程序带注释,注意共两个文件,供学习用,没有说明文档 直接仿真,介意勿拿 只有程序、模型和结果,供学习用
设计一程序,由一个进程创建三个子进程,三个子进程一个是生产者进程,两个是消费者进程,且要求: 1、父子进程都使用父进程创建的共享存储区进行通信,由生产者进程将一个数组中的十个数值发送到由5个缓冲区组成的...
C语言编一个程序完成64位数据(无符号)的加法,减法运算
面向对象程序设计,、对系统进行功能模块分析、控制模块分析正确,符合...源程序盘一张(能编译成可执行文件并能正常运行,可一个班交一张光盘,每人一个文件夹,以自己的名字作为文件夹名称,合作者可以两人共用一个文
编写程序实现两个超长正整数(每个最长80位数字)的减法运算。 [输入形式] 从键盘读入两个整数,要考虑输入高位可能为0的情况(如00083)。 1.第一行是超长正整数A; 2.第二行是超长正整数B; [输出形式] 输出只有一行,是...
编写程序实现两个超长正整数(每个最长80位数字)的减法运算。 [输入形式] 从键盘读入两个整数,要考虑输入高位可能为0的情况(如00083)。 1.第一行是超长正整数A; 2.第二行是超长正整数B; [输出形式] 输出只有一行,是...
编写程序实现两个超长正整数(每个最长80位数字)的减法运算。 【输入形式】 从键盘读入两个整数,要考虑输入高位可能为0的情况(如00083)。 1. 第一行是超长正整数A; 2. 第二行是超长正整数B; 【输出形式】...
关于安装JDK时所安装的两个JRE和三个LIB包的说明。希望能初学都有用。
辅点检测程序说明辅点检测程序主要分两个主要部分:MSER区域提取霍夫变换找圆形区域辅点区域为用这两个算法的检测到的结果区域进行叠加一、MSER算法MSER =
基于OpenCV、ONNXRuntime部署yolov5旋转目标检测算法源码+项目说明(包含C++和Python两个版本的程序).zip基于OpenCV、ONNXRuntime部署yolov5旋转目标检测算法源码+项目说明(包含C++和Python两个版本的程序).zip...
设计一个负责排序的程序包,实现多种排序算法,至少包括插入排序、冒泡...5.至少用两种方案编程实现该程序包,并说明两个方案的优缺点 6.提交设计报告,包括:使用UML设计的类图;主要程序代码说明;方案优缺点比较。