Oracle为Java提供了丰富的基础类库,一共4000多个基础类,通过反复查阅API文档过程中,记住大部分类的功能即可。

一.与用户互动
1.运行Java程序的参数

2.使用Scanner获取键盘输入
使用Scanner类可以从文件,输入流,字符串中解析出基本类型值和字符串值,Scanner类提供了多个构造器,不同的构造器可以接收文件,输入流,字符串作为数据源,用于从文件,输入流,字符串中解析数据。

import java.util.*;
import java.io.*;
public class ScannerFileTest
{
	public static void main(String[] args)
		throws Exception
	{
		//System.in代表标准输入,就是键盘输入
		//Scanner sc = new Scanner(System.in);
		// 将一个File对象作为Scanner的构造器参数,Scanner读取文件内容
		Scanner sc = new Scanner(new File("ScannerFileTest.java"));
		System.out.println("ScannerFileTest.java文件内容如下:");
		// 判断是否还有下一行
		while(sc.hasNextLine())
		{
			// 输出文件中的下一行
			System.out.println(sc.nextLine());
		}
	}
}

二.系统相关
Java提供了System类和Runtime类来与程序的运行平台进行交互。

1.System类:
System类代表当前java程序的允许平台,程序不能创建System类的对象,System类提供了一些类变量和类方法,允许直接通过System类来调用这些类变量和类方法。
System类提供了代表标准输入,标准输出和错误输出的类变量,并提供了一些静态方法用于访问环境变量,系统属性的方法,还提供了加载文件和动态链接库的方法。

1> 加载文件和动态链接库
主要针对native方法有用,对于一些特殊的功能(如访问操作系统底层硬件设备等)Java程序无法实现,必须借助C语言来完成,此时需要使用C语言为Java提供实现。
具体步骤:
Step1: Java程序中声明native修饰的方法,类似于abstract方法,只有方法签名,没有实现。编译该Java程序,生成一个class文件;
Step2: 用javah编译第一步生成的class文件,将产生一个.h文件;
Step3: 写一个.cpp文件实现native方法,这一步需要包含第二步产生的.h文件(这个.h文件中又包含了JDK带的jni.h文件);
Step4:将第三步的.cpp文件编译成动态链接库文件;
Step5: 在Java中用System类的loadLibrary()方法或Runtime类的loadLibrary()方法加载第4步产生的动态链接库文件,
此时Java程序中就可以调用这个native方法了。

2.Runtime类:
代表java程序运行时的环境,每个java程序都有一个与之对应的Runtime实例,应用程序通过该对象与其运行时环境相连。应用程序不能创建自己的Runtime实例,但可以通过getRuntime()方法获取与之关联的Runtime对象。
Runtime类代表Java程序的运行时环境,可以访问JVM的相关信息,如处理器数量,内存信息等。
也可以直接单独启动一个进程来运行操作系统的命令exec()。

三.常用类
Java提供的一些常用类,如String, Math,BigDecimal等用法。

1 Object类
所有的Java类都是Object类的子类,所以任何Java对象都可以调用Object类的方法。

2 String StringBuffer和StringBuilder类
String类是不可变类,即一旦一个String对象被创建以后,包含在这个对象中的字符序列是不可改变的,直至这个对象销毁。

StringBuffer对象则代表一个字符序列可变的字符串,当一个StringBuffer被创建以后,通过StringBuffer提供的append(), insert(),
reverse(),setCharAt(),setLength()等方法可以改变这个字符串对象的字符序列。一旦通过StringBuffer生成了最终想要的字符串,就可以调用它的toString()方法将其转换为一个String对象。

StringBuilder类和StringBuffer基本相似,不同的是StringBuffer是线程安全的,而StringBuilder则没有实现线程安全功能,所以性能略高。

3 Math类
Math类是一个工具类,它的构造器被定义为private的,因此无法创建Math类的对象,Math类中的所有方法都是类方法。可以直接通过类名来调用他们。

4 Java7的ThreadLocalRandom与Random
Random类专门用于生成一个伪随机数,它有两个构造器:一个构造器使用默认的种子,另一个构造器需要程序员显式传入一个long型整数的种子。
ThreadLocalRandom类是Java7新增的一个类,是Random的增强版,在并发访问的环境下,使用ThreadLocalRandom来代替Random可以减少多线程资源竞争,最终保证系统具有更好的线程安全性。

四.Java8的日期,时间类

1.Date类
2.Calendar类

五.国际化与格式化

1.Java国际化的思路
将程序中的标签,提示等信息放在资源文件中,程序需要支持哪些国家,语言环境,就对应提供相应的资源文件。资源文件是key-value对,每个资源文件中key是不变的,但value则随不同的国家,语言而改变。

Java程序的国际化主要通过如下三个类完成
1> java.util.ResoureBundle: 用于加载国家,语言资源包;
2> java.util.Locale : 用于封装特定的国家区域,语言环境;
3> java.text.MessageFormat: 用于格式化带占位符的字符串。

为了实现程序的国际化,必须先提供程序所需要的资源文件,资源文件的内容是很多key-value对,其中key是程序使用的部分,而value则是程序界面的显示字符串。
baseName_language_country.properties
baseName_language.properties
baseName.properties

2.Java支持的国家和语言
可用Locale类的getAvailableLocales()方法。