• 1. 常用类
  • 2. 本章内容1.JDK中各个常用包 2.Java中的一些基础类 基本数据类型的封装类 Math类 Object类 枚举类 Random类 Runtime类 单例设计模式
  • 3. Java的系统包 Java提供了大量的类和接口,分放在不同的包中。它 们被称为类库或API(Application Program Interface) 包。 1、java.lang包是Java的基础类库。包括编写Java程序的最基本内容, 是唯一一个由系统自动引入的类库。 它包含:基本数据类型包装类、数学函数、字符串、枚举类等。
  • 4. 基本数据类型封装类Java中把一切看为对象,基本数据类型(int等)不是对象,但它们具有完成最基本数学运算的功能。 为了完成基本数据类型之间与对象之间的转换和操作。Java为每一个数据类型类都对应了一个封装类,其名字也与基本数据类型的名字相似。
  • 5. 基本数据类型与封装类基本数据类型封装类共有8个,分为两大类: 其中6个封装类继承自java.lang.Number。 基本数据类型对应的封装类intIntegerfloatFloatdoubleDoublebyteByteshortShortlongLong
  • 6. 基本数据类型与封装类 其中2个封装类继承自java.lang.Object。基本数据类型对应的封装类charCharacterbooleanBoolean
  • 7. 封装类的常用方法以java.lang.Integer类为例: public static final int MAX_VALUE (231-1) public static final int MIN_VALUE (-231) public long longValue() public int intValue() public static int parseInt(String s) throws NumberFormatException public static Integer valueOf(String s) throws NumberFormatException 见源文件:IntegerTest.java
  • 8. 自动封箱(Boxing)与拆箱(UnBoxing) 自jdk1.5以后,基本数据类型与封装类之间实现了自动封箱与拆箱操作。 自动封箱:将基本类型转换为对应的封装类。 自动拆箱:将封装类转换为对应的基本数据类型。 见源文件:封箱与拆箱/BoxingTest.java
  • 9. 数学类Math: Math类提供基本数学函数功能。用来完成常用的数学运算。这些方法大多是静态的,方法的参数和返回值一般都是double型。 abs 绝对值 sin cos tan asin acos atan sqrt 平方根 pow(double a,double b) a的b次幂 log 自然对数 exp 以e为底的指数 max(double a,double b) min(double a,double b) random() 0-1.0的随机数 long round(double a) double型的数据转换成long型(四舍五入) toDegrees(double a) 弧度-角度 toRadians(double b) 角度-弧度 见源文件:MathTest.java
  • 10. ◆用于字符串处理的String类和StringBuffer类: ◆系统类System 这个类提供访问系统资源和标准输入输出的方法 ◆Object类 Object是Java程序中和类库中所有类的直接或间 接父类.其他所有类都是从Object派生出来的.Object类 中包含了所有Java类的公共属性.Object中的方法在其 他类中都能使用。
  • 11. Object类Java.lang.Object是Java中所有类的最高父类,该类提供了面向对象编程的基本机制。 该类中的一些重要方法: int hashCode() String toString() boolean equals() void finalize() Object clone() void wait() void notify()、nofityAll()
  • 12. Object-hashCode()方法 该方法返回一个对象的hashCode编码,一个类的不同对象,它们的hashCode编码各不相同。 一个对象有一个唯一的hashCode。 见源文件:lang/HashCodeTest.java
  • 13. Object-toString()方法 toString()方法是以字符串的形式返回当前对象的有关信息,在Object类的原始定义中,返回的是这个对象所属的类名+@+hashCode。 用户可根据需要在类中重写toString()方法。 当直接使用System.out.println()方法直接输出引用类型变量时,println()方法会自动调用该引用类型变量所引用的对象的toString()方法。 在进行String与其他类型进行连接时,会自动调用该对象的toString()方法。如果是与基本数据类型连接时,会将基本数据类转换为对应的封装类,在调用toString()方法。 见源文件:lang/ToStringTest.java
  • 14. Object-equals()方法功能:比较引用类型数据的等价性 等价标准:引用类型比较引用,基本类型比较值。 equals与”==”的区别: (1) equals()只能比较引用类型,==既可以比较引用类型也可以比较基本类型。 (2) equals()方法存在特例,对File、String、Date及基本数据类型封装类而言,是比较引用的对象的内容而不是比较是否是同一对象。 (3) 用户可以在自定义类中重写equals()方法,重新定义等价的评判标准。 见源文件:lang/EqualsTest.java
  • 15. Object-finalize()方法 功能:Java运行时环境中的垃圾收集器会在销毁一个对象之前,自动调用该对象的finalize()方法,然后才释放该对象的内存。 见源文件:lang/FinalizeTest.java
  • 16. Object-clone()方法 Object clone() throws CloneNotSupportedException 功能:对象的拷贝 要进行“克隆”的对象所属的类型必须实现cloneable接口,并且重写clone()方法。 见源文件:lang/CloneTest.java
  • 17. 枚举(java.lang.Enum)枚举:(JDK1.5的新特性) 所有的枚举类型是java.lang.Enum的子类。它本身并不是枚举类型,但它定义了所有枚举类型所共有的行为。 使用enum关键字定义枚举类型。 public enum WeekDay{        MONDAY, TUESDAY, WENSDAY, THURSDAY, FRIDAY;  //最后这个“;”可写可不写。    }  
  • 18. 枚举(java.lang.Enum)注意: (1)虽然所有的枚举类型都继承自java.lang.Enum,但是不能使用直接继承Enum的方式来定义枚举类型。 public class MyEnum extends Enum (2) 枚举常量之间使用“,”分割开来。这些常量默认都是“public static final”的,所以不必再为它们加上“public static final”修饰。 (3) 每个枚举常量就是该枚举类型的一个对象。 WeekDay w =WeekDay.MONDAY;
  • 19. public void printWeekDay(WeekDay weekDay){                 switch(weekDay){                       case MONDAY:                               System.out.println(“Today is Monday!”);                               break;                        case TUESDAY:                                System.out.println(“Today is Tuesday!”);                               break;                        case WENSDAY:                                 System.out.println(“Today is Wensday!”);                                                   break;                        case THURSDAY:                                 System.out.println(“Today is Thursday!”);                                break;                              case FRIDAY:                                  System.out.println(“Today is Friday!”);                                 break;                     default:                             throw new AssertionError("Unexpected value: " + weekDay);                       }    }   见源文件:EnumTest.java
  • 20. Runtime类Runtime表示Java应用程序的运行时对象。每个Java应用程序都对应一个Runtime类的实例,使应用程序能够与其运行的环境相连接。Runtime类采用单例模式实现。 static Runtime getRuntime() void gc() long totalMemory() long freeMemory() long maxMemory() 见源文件:Runtime/RuntimeTest.java
  • 21. 单例设计模式一个类只能产生自己的一个对象,那么这个类就是采用单例设计模式实现的。 单例的特点: (1) 有private、static的该类的一个引用; (2) 该类的构造方法是private访问权限; (3) 通过static的getInstance()方法返回这个唯一对象。在此方法中会调用构造方法来实例化对象。 见源文件:单例模式/Singleton.java
  • 22. 2.java.math包 该包中定义了BigInteger,BigDecimal类,可以分别提供任意长度/精度的整数和浮点数运算功能。 BigInteger类的主要方法 public BigInteger(String s) public static BigInteger valueOf(long i) public BigInteger add(BigInteger val) public BigInteger subtract(BigInteger val) public BigInteger multiply(BigInteger val) public BigInteger divide(BigInteger val) public int compareTo(BigInteger val) public BigInteger remainder(BigInteger val) public BigInteger pow(int val) public String toString() 见源文件:math/BigIntegerTest.java
  • 23. java.util包 包含一些低级的使用工具类。主要有:与计算时间/日期相关的类、随机数类、java的集合框架类等。 Random类 该类主要是生成随机数。 double nextDouble() 在 0.0 和 1.0 之间均匀分布的 double 值。 float nextFloat() 在 0.0 和 1.0 之间均匀分布的 float 值。 int nextInt(int n) 返回[0,n)之间均匀分布的int值。 见源文件:random/RandomTest.java
  • 24. 4.java.io包 这是Java语言的输入输出类库(也包含一些与其他设备交换信息的类、字符串类等)。Java语言的文件操作均由该类库中的输入输出类实现。 5.java.net包 包含访问网络资源的URL类、用于通信的Socket类和网络协议(HTTP、Telnet、FTP等)子类库等。 6.java.awt包 提供创建图形用户界面的工具(多种图形组件)、颜色类(Color)字体类(Font)、事件子类库等。 7.java.applet包 小应用程序的基础类库。只有一个Applet类。 8.java.sql包 该包中包含了与数据库操作相关的类。
  • 25. 包的定义包的定义通过关键字package来实现的 ,package语句的一般形式: package 包名; 说明: (1) 包名是用户自定义的标识符(建议不要使用jdk已经使用的包名) (2) 若包中含有子包,包之间要用”.”隔开。 (3) package语句必须是在源程序的第一行,且只能有一行包的定义语句。 (4) 包名与文件夹名称大小写一致。(手动创建包的情况)
  • 26. 使用包中的类或接口引用一个包中的类或接口的格式如下: 包名.类名(接口名) 例如:Student类要继承mypackage包中的Person类: public class Student extends mypackage.Person 实例化Person类的格式如下: mypackage.Person person1=new mypackage.Person();
  • 27. 包的导入使用关键字import导入包中的类或接口后,引用其中的类或接口时就不用加包名了。 格式:import 包名.类名(接口名) 或者 import 包名.* 说明: (1) 包与子包之间用“.”隔开。 (2) “*”表示导入包中所有的类和接口。 (3) import语句在源程序中必须位于其他类或接口声明之前。
  • 28. 包中类和接口的访问权限包中类以及接口只有public和缺省两种访问权限: (1) public权限的类和接口能被所有包中的类访问,与包的位置无关。 (2) 缺省权限的类和接口只能被其所在包中的类访问,不能被其他包中的类访问。 见源文件:包的访问权限/FirstClass.java Test.java
  • 29. Java源程序结构Java源程序(.java)中可以包含以下类型的成分: (1) package 包名 (2) import 包名.类名(接口名) (3) [权限修饰符…..] class (interface)….. 说明: (1) 一个源程序文件中,最多只有一条package语句。 (2) 可以有多条import语句,位于类或接口的定义之前。 (3) 可以有多个类或接口的定义,但是定义一个public权限的类或接口,并且与源文件同名。