常用APL
- java.lang 提供JAVA程序设计所需要的基础类
- java.util 提供集合,字符串解析,随机数生成等常用的工具类
- java.text 提供处理数字,文字,日期等信息的格式类
- java.math 提供任意精度计算的工具类
- java.io 以数据流,序列化 ,文件系统的形式提供输入输出操作
- java.net 提供实现互联网应用程序的类
从功能划分
基础类库
系统相关类,用户输入,Object类,包装类,字符串相关,计算相关,日期相关
核心类库
异常处理,集合,泛型 ,IO(输入输出),多线程,网络编程,注解,反射机制
系统相关类
System类
- System类 代表当前java程序的运行平台
- System类不允许被实例,它所提供的变量和方法全是静态的
- System类提供了代表标准输入,标准输出,错误输出的静态变量;
- System类提供了访问环境变量,访问系统属性。加载文件,加载动态链接库等方法
Runtime类
- Runtime类代表java程序的运行环境
- Runtime类符合单列模式,我们只能通过getRuntime()获得该类型的唯一实例
- Runtime类提供了访问jvm相关信息的方法,如获得cpu数量,获取空闲内存数等
- 构造器要私有
代码演示 系统相关类
// 获取系统所有的环境变量
Map<String, String> map = System.getenv();
for (String key: map.keySet()){
System.out.println(key + ":" + map.get(key));
}
// 根据名称获取环境变量的值
System.out.println("Path :" + System.getenv("Path"));
System.out.println("=====================================================================");
// 获取所有的系统的属性
Properties properties = System.getProperties();
for (Object key :properties.keySet()){
System.out.println(key + ": " + properties.get(key));
}
System.out.println("=============================================================================================");
// 根据名称获取系统的属性的值
System.out.println("user.home :'" + System.getProperty("user.home"));
// 返回JVM可用的cpu数量
System.out.println(Runtime.getRuntime().availableProcessors());
// 返回jvm中内存总量
System.out.println(Runtime.getRuntime().totalMemory());
// 返回jvm中可用内存
System.out.println(Runtime.getRuntime().freeMemory());
// 返回jvm中可以 使用的内存总数
System.out.println(Runtime.getRuntime().maxMemory());
// 返回jre的版本
System.out.println(Runtime.version());
// 在单独的进程里执行系统命令
Runtime.getRuntime().exec("shutdown -s -t 60");
}
用户输入
1.可以本身的 mian方面里面 通过String[] args 输入 调用字符串
public static void main(String[] args)
- scanner是一个文本扫描器,它可以从文件,输入流,字符串中解析出基本类型值。默认的情况下,他使用空白(空格,tab,回车)作为多个输入项的分隔符
- hasNextxxx:判断是否还有下一个输入项,其中xxx是代表基本类型的单词,如 Int long 等
- netxxx:获取下一个输入项,其中xxx的含义也是代表基本类型的单词
具体用法请参考官方帮助文档apl 查找具体用法
Object类
具体演示
public class BasicLibraryDemo2 {
public static void main(String[] args) throws CloneNotSupportedException {
Object obj = new Object();
System.out.println(obj.toString());
System.out.println(obj.hashCode());
System.out.println(obj.getClass());
System.out.println(obj.equals(new Object()));
Driver d1 = new Driver("djk");
Driver d2=d1.clone();
System.out.println(d1);
System.out.println(d2);
}
}
class Car{
private String brand;
public Car(String brand) {
this.brand = brand;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
}
class Driver implements Cloneable{
private String name;
private Car car;
public Driver(String name) {
this.name = name;
this.car=new Car("奔驰");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Car getCar() {
return car;
}
public void setCar(Car car) {
this.car = car;
}
public String toString() {
return this.name+","+this.car.getBrand();
}
protected Driver clone() throws CloneNotSupportedException {
return (Driver)super.clone();
}
}
包装类
什么是包装类
- Java是面向对象语言,在Java中一切皆对象
- 八种基本数据类型例外,不具备“对象”的特性
- 为了解决这个问题,java为每个类型都定义了一个对应的应用类型,他们是基本类型的包装类
其中 只有 int 和 char 包装类型 不一样 其他 与基本类型一样 只是 首字母大写
基本类型与包装类型之间的转换
- jdk 1.5 之前 通过包装类提供的构造器 可以将基本类型转为包装类型的对象 通过包装类提供 的 xxxValue()方法,可以获得该对象中的包装数据。
- jdk 1.5 之后 提供了自动装箱,自动拆箱功能
-
- 自动装箱 可以把一个基本类型的数据直接赋值给对应的包装类型;
-
- 自动拆箱 可以把一个包装类型的对象直接赋值给对应的基本类型;
包装类是不可变类
- 该类被实例化后,他的实例变量是不可改变的;
-
- 使用private和final 修饰成员变量
-
- 提供带参数的构造器,用于初始化上述成员变量
-
- 仅提供获取成员变量的方法,不提供修改的方法
- 特别注意 被 final 修饰的类 代表这个类不可被继承 并不是 意味着 他的实例变量 不可改变
代码演示
// 1.5 以前
// 中间红线 意思是 不推荐使用
Integer integer = new Integer(1);
Character d = new Character('d');
int i=integer.intValue();
char c=d.charValue();
System.out.println(i);
System.out.println(c);
// 自动装箱
Double od=5.48;
// 自动拆箱
double a=od;
System.out.println(a);
System.out.println(a);
// 如何将字符串转换为基本类型
double v = Double.parseDouble("56468");
// 基本类型转换为字符串
String s = String.valueOf(1);
// 比较两值
//
System.out.println(Integer.compare(25, 89));
}
包装类中的静态常量
- MAX_VALUE, 表示该类型的最大值
- MIN_VALUE,表示该类型的最小值
- 八个封装类型都定义这些常量