• 1. 东软睿道内部公开 文件编号: D000-Java高级应用编程 版本:1.1.0-0.0.0 2015-6-1东软睿道教育信息技术有限公司 (版权所有,翻版必究) Copyright © Neusoft Educational Information Technology Co., Ltd All Rights Reserved
  • 2. 文件修改控制修改编号版本修改条款及内容修改日期11.0.0-0.0.0创建2014-9-121.1.0-0.0.0增加第7章,Java7新特性简介2015-6-131.1.0-0.0.0修改替换所有章节PPT模板为新模板,并修改内容格式2015-6-141.1.0-0.0.0修改增加所有章节PPT中的内容,新增睿道在线视频中添加的内容2015-6-151.1.0-0.0.0修改增加所有章节PPT中的课后作业,新增必做题、选做题2015-6-161.1.0-0.0.0修改工具类,增加SimpleDateFormate类的用法。2015-6-171.1.0-0.0.0修改工具类,把高级部分涉及到的类和包的对应关系都列出来2015-6-191.1.0-0.0.0修改工具类,String对象的创建,增加指定的解码,同时增加例子。2015-6-1 101.1.0-0.0.0修改工具类,String对象常用方法增加。2015-6-1111.1.0-0.0.0修改网络,增加端口号查看的dos命令。2015-6-1 121.1.0-0.0.0修改网络,增加多线程socket端口工作原理。2015-6-1 131.1.0-0.0.0修改多线程,死锁描述、线程同步描述。2015-6-1 141.1.0-0.0.0修改多线程,多线程状态及其生命周期图。2015-6-1
  • 3. Java高级应用编程 —— 工具类V1.1
  • 4. 课程目标通过此课程的学习使学员能够采用基于Java技术的面向对象编程方法,编写利用Java线程技术,GUI组件,I/O组件及Socket组件等多种Java技术实现的复杂程序,以及了解java7的新特性。
  • 5. 课程目录内容参考课时(H)第1章 工具类6第2章 集合6第3章 文件与流6第4章 多线程编程7第5章 网络编程3第6章 Java7新特性2合计30
  • 6. 本章内容节知识点掌握程度难易程度Java APIJava API简介掌握ObjectObject介绍及方法掌握包装类包装类简介掌握基本数据类型转换为包装类掌握字符串转换为包装类掌握包装类转换为基本数据类型掌握包装类转换为字符串掌握字符串转换为基本数据类型掌握自动装箱和自动拆箱掌握字符串类String对象的创建掌握String中常用的方法掌握StringBuffer对象的创建掌握StringBuffer中常用的方法掌握StringBuilder对象的创建理解StringBuilder中常用的方法理解String与StringBuffer的比较掌握StringBuffer与Stringbuilder的比较掌握
  • 7. 本章内容节知识点掌握程度难易程度Math类Math中常用的方法掌握 日期类Date类掌握 Date类中常用方法掌握 Calendar类掌握 Calendar类常用属性掌握 SimpleDateFormat类的使用掌握 
  • 8. Java APIJava API简介 API (Application Programming Interface) 应用程序接口 Java中的API,就是JDK提供的各种功能的Java类 JDK帮助文档 JAVA_API_CN.chm
  • 9. Java APIJava API简介 java.lang Java语言包(包含String、Math、System等类),任何类中,该包中的类都会被自动导入。 java.util 包含一些实用的工具类( 包含list, calendar, date等类) java.awt 图形用户界面包。 java.io 提供多种输入/输出功能的类。
  • 10. Java APIJava API简介 java.lang 包含String、StringBuffer、Integer、Math、System。 java.util 包含一些实用的工具类( 包含list, calendar, date等类) java.io 提供多种输入/输出功能的类。 java.net 提供网络应用功能的类。
  • 11. Java APIJava API简介 java.lang包 BooleanObjectErrorByteStringThrowableCharacterStringBufferExceptionDoubleStringBuilderClassNotFoundExceptionFloatSystemNullPointerExceptionIntegerMathNumberFormatExceptionLongRunnable(接口)RuntimeExceptionShortThreadArithmeticException
  • 12. Java APIJava API简介 java.util包 Collection(接口)ArraysCalendarIterator(接口)Set(接口)DateListIterator(接口)HashSetRandomList(接口)TreeSetScannerArrayListMap(接口)CollectionsLinkedListHashMapVectorHashtableStackTreeMap
  • 13. Java APIJava API简介 java.io包 BufferedInputStreamFileReaderPrintWriterBufferedOutputStreamFileWriterReaderBufferedReaderInputStreamWriterBufferedWriterInputStreamReaderSerializable(接口)DataInputStreamOutputStreamExternalizable接口)DataOutputStreamOutputStreamWriterIOExceptionFileObjectInputStreamFileNotFoundExceptionFileInputStreamObjectOutputStreamInvalidClassExceptionFileOutputStreamPrintStream
  • 14. Java APIJava API简介 java.net包 ServerSocketSocketUnknownHostException
  • 15. ObjectObject介绍及方法 Object类是所有类的超类, Object是Java语言中唯一一个没有父类的类。 一个类可以不是Object类的直接子类,但一定是Object类的子类,Java中的每一个类都是从Object扩展来的。 在Object类中定义的方法,在所有类中都可以使用。 public boolean equals(Object obj) 比较两个对象引用的值是否相等(比较哈希地址) public int hashCode() 返回十进制整数,唯一标识一个对象 public String toString() 返回 类名@hashcode 示例:ObjectSample.java
  • 16. ObjectObject类常用方法 public boolean equals(Object obj): 比较两个对象引用的值是否相等(比较地址)。指出调用该方法的对象是否与obj对象相等。即地址是否相等。 public int hashCode():该方法返回对象的哈希码,哈希码是一个代表对象的十六进制整数,比作对象的身份证号。在程序运行期间,每次调用同一个对象的hashCode()返回的哈希码必定相同,但是多次执行同一个程序,程序的一次执行和下一次执行期间同一个对象的哈希码不一定相同。实际上默认的哈希码是将对象的内存地址通过某种转换得到的,所以不同对象会有不同的哈希码。 public String toString():返回 类名@hashcode ;事实上返回这样的字符串没有什么实际的意义。一般子类都会覆盖该方法,让它返回有意义的文本。
  • 17. 通常,子类会覆盖equals( ),改变它的含义,所以有的类中equals( )是比较地址,有的类中该方法就不比较地址,具体的,就看子类新定义的该方法的规定。看看包装类中的equals()方法? 在java中有个规定:如果equals( )返回两个对象是相等的,那这两个对象上调用hashCode( )返回的整数必须相等。否则在使用Hash类型集合时就会产生错误。 所以在我们覆盖equals( )方法同时,还要记得覆盖hashCode( )方法。需要说明,如果equals( )返回两个对象不等,它们的hashCode( )也可以返回相同的整数。但是最好让它们的hashCode( )返回不同的整数,这有利于提高Hash类型集合的性能。 重写equals方法时,一定要重写hashcode()方法吗? 先说说hashcode的调用的条件。 如果你想往map里面放一个类作为map的键值,这个类又是你自己设计的,或者这个类不是你写的但是你修改了这个类的equals方法,这个时候,你就要注意重写hashcode方法。 这样 当你往map里放值得时候,系统会调用这个对象的.hashcode()方法来生成相应的hash值,来映射相应的对象。 如果同一个类的两个对象的属性值相等,那么他们的hashcode一定相等吗 这个要看你具体如何实现你的hashcode,如果你希望他们的值一样hashcode也一样,你就可以这样实现。 但是hashcode的实现,一般要满足几个特征,比如 自反性,传递性什么的。 Object
  • 18. equals() 与 ==的区别理解equals()方法和==运算符的区别是非常重要的。 默认情况下(即没有被重写时)equals()只能比较引用类型,"=="既能比较引用类型又能比较基本类型。 equals()方法从Object类继承,即比较对象引用的值 一般都被子类方法覆盖,不再比较引用的值 "=="运算符: 比较基本数据类型:相当于算术等号 比较引用数据类型:比较引用的值,不能被覆盖。
  • 19. 包装类Everything is object. Java编程语言不把基本数据类型看作对象。Java 编程语言提供包装类来将基本数据类型看作对象。 在功能上包装类能够完成数据类型之间(除boolean)的相互转换,尤其是基本数据类型和String类型的转换。 包装类中包含了对应基本数据类型的值,封装了String和基本数据类型之间相互转换的方法,还有一些处理这些基本数据类型时非常有用的属性和方法。
  • 20. 包装类包装类简介 基本数据类型不是对象层次结构的组成部分。有时需要像处理对象一样处理这些基本数据类型,可通过相应的“包装类”来将其“包装”。数据类型封装类booleanBooleanbyteBytecharCharacterdoubleDoublefloatFloatintIntegerlongLongshortShort
  • 21. 字符串与基本数据类型、包装类型转换图字符串String包装类Wrapper基本数据类型构造器或valueOf()toString()xxxValue()方法通过构造器parsexxx()方法
  • 22. 包装类基本数据类型转换为包装类 int pInt = 500; Integer wInt = new Integer(pInt);示例:TestWrapper.java
  • 23. 字符串转换为包装类字符串转换为包装类 字符串通过构造方法转换为包装类 字符串通过包装类的valueOf(String s)转换为包装类 String sInt = “500”; Integer wInt = new Integer(sInt); String sInt = “500”; Integer wInt = Integer.valueOf(sInt); 注意:字符串不能通过以上两种方式转换为Character示例:TestWrapper.java
  • 24. 包装类包装类转换为基本数据类型 包装类通过xxxValue()方法转换为基本数据类型 Integer wInt = new Integer(500); int pInt = wInt.intValue(); 示例:TestWrapper.java
  • 25. 包装类包装类转换为字符串 包装类通过toString()方法转换为字符串 Integer wInt = new Integer(500); String sInt = wInt.toString(); 示例:TestWrapper.java
  • 26. 包装类字符串转换为基本数据类型 字符串通过parseXXX(String s)方法转换为基本数据类型 String sInt = “500”; int pInt = Integer.parsetIInt(sInt); 示例:TestWrapper.java
  • 27. 包装类自动的装箱和自动拆箱 示例:TestWrapper.java 在进行基本数据类型和对应的包装类转换时,系统将自动进行 JDK自从5.0版本后引入 方便程序的编写 int pInt = 500; Integer wInt = pInt; int n = wInt;
  • 28. 字符串类字符串是我们在编程中最常使用的一种数据类型,它的表现形式可以分为两种:String和StringBuffer。 它不属于8种基本的数据类型,而是一种引用类型。 String对象代表一组不可改变的Unicode字符序列,对它的任何修改实际上又产生一个新的字符串,String类对象的内容一旦被初始化就不能再改变。 StringBuffer对象代表一组可改变的Unicode字符序列。 同时,String类是final类型的类。
  • 29. 字符串类String的创建:有两种方式: 静态方式(常用)。像是给变量直接赋值一样来使用。如:String s1 = “abc”; String s2 = “abc”; 动态方式。动态的内存分配,使用new运算符。如:String s3= new String(“abc”); String s4= new String(“abc”); 那么这两种方式创建的字符串是同一个字符串对象嘛?不,是有区别的。 在于:使用静态方式创建的字符串,在方法区的常量池中只会产生唯一一个字符串对象,使用该方式产生同样一个字符串时,内存中不再开辟另外一块空间,而是两个引用变量指向同一个字符串对象。 使用动态方式创建的字符串,在堆内存中会产生出不同的对象。s2s1栈“abc”“abc”“abc”堆常量池栈s3s4
  • 30. 字符串类String对象的创建 String类的构造方法 初始化一个新创建的 String 对象,它表示一个空字符序列。 初始化一个新创建的 String 对象,表示一个与该参数相同的字符序列 分配一个新的字符串,它包含当前包含在字符串缓冲区参数中的字符序列。 字符串文字常量本身是一个String对象String 变量名 = new String () ; String 变量名 = new String (String value) ; String 变量名 = new String (StringBuffer buf) ; String 变量名 = “hello” ;
  • 31. 字符串类String对象的创建 String类的构造方法 初始化一个新创建的 String 对象,通过使用指定的charset 解码指定的 byte 数组 初始化一个新创建的 String 对象,通过使用指定的 charset解码指定的 byte 子数组,构造一个新的 String String 变量名 = new String(byte[] bytes, String charsetName); String 变量名 = new String(byte[] bytes, int offset, int length, Charset charset);
  • 32. 字符串类String类构造方法 String s = new String() 初始化一个新创建的String对象,表示一个空字符串(“ ”);注意空字符串与null的区别:空字符串表示String对象的内容为空,而null表示String类的变量不指向任何的String 对象。 String( String original) 创建一个String对象,并用original为该对象初始化。 String( char chars[ ]) 使用一个字符数组创建一个String对象。 String( char chars[ ], int startIndex, int numChars) 使用一个字符数组创建一个String对象,startIndex表示数组的偏移量,numChars表示由多少个字符创建。参数偏移量可以省略。 String( byte asciiChars[ ]) 使用一个字节数组创建一个String对象。 String( byte asciiChars[ ], int startIndex, int numChars) 同上。 String(StringBuffer buffer) 使用StringBufffer对象中的内容为该对象初始化。
  • 33. 字符串类String对象的创建 连接操作符“+”,可以将其它各种类型的数据转换成字符串,并前后连接成新的字符串 ☻ 练习String str1 = “hello ”; String str2 = “world”; String str = str1 + str2; //str为“hello world”System.out.println(5+6+’A’); System.out.println(5+6+”A”); System.out.println(5+”A”+6);7611A5A6
  • 34. 字符串类String类的创建 示例 StringDemo.java 任何一个String对象在创建之后都不能对它的内容作出任何改变(immutable) 连接、获得子串和改变大小写等操作,如果返回值同原字符串不同,实际上是产生了一个新的String对象 在程序的任何地方,相同的字符串字面常量都是同一个对象 String类重置了equals方法,用于比较两个字符串的内容 String str1 = “hello ”; String str2 = new String(“hello”); System.out.println(str1==str2); System.out.println(str1.equals(str2));
  • 35. 字符串类String对象的创建 public class TestStringCharset { public static void main(String[] args) { byte[] bname = new byte[10]; String name1 = "张三"; try { bname = name1.getBytes("utf-8"); String name2 = new String(bname,"utf-8"); System.out.println("name2="+name2); for(int i = 0;i
  • 36. 字符串类byte[ ]char[ ]StringString( byte[] b)getBytes()String( char[] b)toCharArray()String类的转换
  • 37. 字符串类String类中常用的方法 方法含义boolean equals(String)判断两个字符串对象的内容是否相等boolean equalsIgnoreCase(String)比较两个字符串的内容是否相等,忽略大小写String toUpperCase( )将String对象中的所有字符都转换为大写 String toLowerCase( )将String对象中的所有字符都转换为小写 char charAt(int)返回指定索引处的 char 值String substring(int begin)返回一个新字符串,该字符串是从begin开始的字符串的内容String substring(int begin,int end)返回一个新字符串,该字符串是从begin开始到end-1结束的字符串的内容
  • 38. 字符串类String类中常用的方法 方法含义int indexOf/lastIndexOf(char)返回指定字符在此字符串中第一次/最后一次出现处的索引。 int indexOf/lastIndexOf(char,int)从指定的索引开始搜索,返回在此字符串中第一次/最后一次出现指定字符处的索引int indexOf/lastIndexOf(String)返回第一次出现的指定子字符串在此字符串中的索引int indexOf/lastIndexOf(String,int)从指定的索引开始搜索,返回在此字符串中第一次/最后一次出现指定字符串处的索引String trim( )返回新的字符串,忽略前导空白和尾部空白 int length( )返回此字符串的长度
  • 39. 字符串类String类中常用的方法 方法含义String concat(String str) 将指定字符串连接到此字符串的结尾 byte[] getBytes()使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中byte[] getBytes(Charset charset) 使用给定的 charset将此 String 编码到 byte 序列,并将结果存储到新的 byte 数组String[] split(String regex) 根据给定正则表达式的匹配拆分此字符串。String replace(char oldChar, char newChar) 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的boolean startsWith(String prefix) 测试此字符串是否以指定的前缀开始boolean endsWith(String suffix) 测试此字符串是否以指定的后缀结束
  • 40. 字符串类StringBuffer类 StringBuffer类用于内容可以改变的字符串 可以使用StringBuffer来对字符串的内容进行动态操作,不会产生额外的对象
  • 41. 字符串类StringBuffer对象的创建 构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符 构造一个不带字符,但具有指定初始容量的字符串缓冲区。 构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。StringBuffer 变量名 = new StringBuffer () ; StringBuffer 变量名 = new StringBuffer (int capacity ) ; StringBuffer 变量名 = new StringBuffer (String value) ;示例:TestStr.java
  • 42. 字符串类StringBuffer类中常用的方法 示例 StringBuf.java方法含义int capacity( )返回当前容量 int length( )返回长度(字符数)StringBuffer reverse( )将此字符序列用其反转形式取代 void setCharAt(int,char)将给定索引处的字符设置为 ch StringBuffer delete(int begin,int end)移除此序列的子字符串中的字符 char charAt(int)返回此序列中指定索引处的 char 值 String toString( )将StringBuffer对象转换成相应的String
  • 43. 字符串类StringBuffer类中常用的方法方法含义StringBuffer append(String str)将指定的字符串追加到此字符序列 StringBuffer append(int num)将 int 参数的字符串表示形式追加到此序列 StringBuffer append(Object o)追加 Object 参数的字符串表示形式 StringBuffer insert(int index,String str)将字符串插入此字符序列中 StringBuffer insert(int index,char ch)将字符插入此字符序列中 StringBuffer insert(int index,Object o)将 Object 参数的字符串表示形式插入此字符序列中
  • 44. 字符串类1、想要判断两个StringBuffer变量的内容是否相等,应先用toString()将他们转换成String对象。 2、StrigBuffer节省内存开销
  • 45. 字符串类StringBuilder类 StringBuilder类是一个可变的字符序列。 JDK自从5.0版本后引入。 StringBuilder类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候 。
  • 46. 字符串类StringBuilder对象的创建 构造一个不带任何字符的字符串生成器,其初始容量为 16 个字符。 构造一个不带任何字符的字符串生成器,其初始容量由 capacity 参数指定。 构造一个字符串生成器,并初始化为指定的字符串内容 StringBuilder 变量名 = new StringBuilder () ; StringBuilder 变量名 = new StringBuilder (int capacity ) ; StringBuilder 变量名 = new StringBuilder(String str) ;示例:TestStringBuilder.java
  • 47. 字符串类StringBuilder类中常用的方法 示例 TestStringBuilder.java方法含义int capacity( )返回当前容量 int length( )返回长度(字符数)StringBuilder reverse( )将此字符序列用其反转形式取代 void setCharAt(int index,char ch)将给定索引index处的字符设置为 ch StringBuilder delete(int begin,int end)移除此序列的子字符串中的字符 char charAt(int index)返回此序列中指定索引处的 char 值 String toString( )将StringBuilder对象转换成相应的String
  • 48. 字符串类StringBuilder类中常用的方法方法含义StringBuilder append(String str)将指定的字符串追加到此字符序列 StringBuilder append(int num)将 int 参数的字符串表示形式追加到此序列 StringBuilder append(Object o)追加 Object 参数的字符串表示形式 StringBuilder insert(int index,String str)将字符串插入此字符序列中 StringBuilder insert(int index,char ch)将字符插入此字符序列中 StringBuilder insert(int index,Object o)将 Object 参数的字符串表示形式插入此字符序列中
  • 49. 字符串类String类与StringBuilder类的比较 Java中定义了String与StringBuffer两个类来封装对 字符串的各种操作 String类与StringBuffer类都被放到了java.lang包中 两者的主要区别在于 String类对象中的内容初始化不可以改变 StringBuffer类对象中的内容可以改变
  • 50. 字符串类StringBuffer类与StringBuilder类的比较StringBuffer和StringBuilder都是长度可变的字符串。 两者的操作基本相同。 两者的主要区别在于 StringBuffer类是线程安全的; StringBuilder类是线程不安全的。 StringBuffer在JDK1.0中就有,而StringBuilder是 在JDK5.0后才出现的。 StringBuilder的一些方法实现要比StringBuffer快 些。
  • 51. Math类Math类 Math类提供了大量用于数学运算的方法 Math类是final类,因此不能从Math类继承 Math类中的方法都是static方法,因此不必创建Math类的对象就可以直接使用该类的方法 Math类中的常量public static final double PIpublic static final double E
  • 52. Math类Math类中的常用方法方法含义static int abs(int)返回参数的绝对值,返回值类型与参数类型相同static double abs(double)返回参数的绝对值static double ceil(double)返回大于所给参数的最小的整数值static double floor(double)返回不大于所给参数的最大的整数值static int max(int a,int b)返回两个int值中较大的一个static double max(double,double)返回两个double值中较大的一个static int min(int a,int b)返回两个int值中较小的一个static double min(double,double)返回两个double值中较小的一个
  • 53. Math类Math类中的常用方法方法含义static double random( )返回在0.0~1.0之间的随机的double值static int round(double)返回同所给值最接近的整数,采用4舍5入法static double sin/cos/tan(double)返回给定的弧度值对应的三角函数值static double sqrt(double) 返回所给值的平方根,若所给值为负数则返回NaN
  • 54. 日期类Date 类 java.util.Date。 Date 类表示指定的时间信息,可以精确到毫秒。 不支持国际化。 该类的许多方法已过时。 获取当前系统时间: 示例:TestDate.java new Date();现在我们更应该多使用 Calendar 类实现日期和时间字段之间转换,使用 DateFormat 类来格式化和分析日期字符串;Date 中的相应方法已废弃
  • 55. 日期类Date类常用方法 示例:TestDate.java 方法含义boolean after(Date when)测试此日期是否在指定日期之后 boolean before(Date when)测试此日期是否在指定日期之前int compareTo(Date anotherDate) 比较两个日期的顺序。如果参数 Date 等于此 Date,则返回值 0;如果此 Date 在 Date 参数之前,则返回小于 0 的值;如果此 Date 在 Date 参数之后,则返回大于 0 的值。boolean equals(Object obj)比较两个日期的相等性。
  • 56. 日期类Calendar 类 示例:TestDate.java java.util.Calendar。 java.util.GregorianCalendar 常用的日期处理的对象。可以设置自己的时区和国际化格式。 是一个抽象类。 Calendar 抽象类定义了足够的方法,让我们能够表述日历的规则 。 获取Calendar对象的实例 Calendar c = Calendar.getInstance();
  • 57. 日期类Calendar 类: 获取Calendar对象的实例: 设置Calendar实例所表示的时间: 获取指定的时间属性 Calendar c = Calendar.getInstance();c.set(2011,6,16);c.get(Calendar.YEAR);
  • 58. 日期类Calendar类常用属性属性含义static int HOUR小时时间static int MINUTE分时间static int SECOND秒时间static int DATE日期的Date部分static int MONTH日期的Month部分static int YEAR日期的年部分
  • 59. SimpleDateFormat类SimpleDateFormat类 示例: TestDateFormat.java java.text.SimpleDateFormat 。 一个以与语言环境相关的方式来格式化和分析日期的具体类。是抽象类java.text.DateFormat类的子类。 SimpleDateFormat 使得可以选择任何用户定义的日期-时间格式的模式 。 SimpleDateFormat类的使用 获取SimpleDateFormat的实例SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  • 60. SimpleDateFormat类SimpleDateFormat类的使用 将日期格式成指定的字符串 将格式化的字符串转换成日期对象 sdf.format(new Date());sdf.parse(“2011-07-16”);
  • 61. SimpleDateFormat类SimpleDateFormat类中的模式字母 字母 日期或时间元素 y 年 M 年中的月份 d 月份中的天数 E 星期中的天数 a Am/pm 标记 H 一天中的小时数(0-23) h am/pm 中的小时数(1-12) m 小时中的分钟数 s 分钟中的秒数 S 毫秒数
  • 62. 本章重点总结Object类 hashcode()、equals()、toString()方法 包装类 包装类、基本数据类型、字符串间的相互转换 字符串类 String、StringBuffer、StringBuilder的常用方法 String与StringBuffer的异同、 StringBuffer与StringBuilder的异同 Math类 Math类的常用方法 日期类型 Date类的使用 Calendar类的使用 SimpleDateFormat类
  • 63. 课后作业1、编写一个程序,实现从命令行参数输入两个字符串类型的数值,并计算输出两个数值的和。 [必做题] 2、编写一个程序,实现从命令行参数输入一字符串,统计该字符串中字符“e”出现的次数。(识点:String中常用的方法) [必做题] 3、生成十个0~100之间的随机数,放到数组中,然后排序输出。(知识点:Math类取整,获得随机数等) [必做题]
  • 64. 课后作业4、巴黎时间比北京时间晚7个小时,纽约时间比北京时间晚12个小时,试编写一程序,根据输入的北京时间输出相应的巴黎和纽约时间。[选做题] 5、解析一个邮箱地址是否合法,如果合法则打印出用户名部分和该邮箱所属的网站域名,如果邮箱地址不合法则显示不合法的原因 [选做题] 5.1 提示:邮箱地址不合法的因素: 5.1.1邮箱地址中不包含@或. 5.1.2邮箱地址中含有多了@或. 5.1.3邮箱地址中.出现在@的前面 5.1.4用户名里有其他字符
  • 65. 课后作业5.2实现步骤: 5.2.1创建一个类,类名:mailtest 类图如下: 6、分别在控制台输入字符串和子字符串,并计算字符串中子字符串出现的次数。 [选做题] 7、有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。 [选做题]
  • 66. 课后作业8、有一种数叫回文数,正读和反读都一样,如12321便是一个回文数。编写一个程序,从命令行得到一个整数,判断该数是不是回文数。 [选做题]