API:特点环境,提供功能方法的类和定义特定方法的接口的总称。
java.lang包:基本的功能类包
java.lang包,在使用时,JVM会自动导入,其他包则需要手动显示导入。
1.1
Oject,基类,5个多线程方法,6个其他方法
equals :源码实现为==,用于比较2个对象的地址是否一致。如果需要比较内容,需要重写该方法
hashcode:一般取对象的内存地址为hashcode,不同的对象,不同的哈希值,可提高对象的集合存储效率。一般重写该方法。
toString:返回对象的字符串形式
finalize:JVM回收资源前,会调用此方法。如果需要该对象被JVM释放前,做一些资源回收工作,可调用此方法。
getClass:获取类对象信息,用于反射
clone:复制对象,存在一些问题,实际引用中很少使用。
详细参考144页
1.2基本数据类型和它的包装类
基本数据类型:byte,char,short,int,long,float,double,boolean
对应包装类:Byte,Character,Short,Integer,Long,Float,Double,Boolean
包装类:以操作对象的方式操作数据
基本类型和包装类型的转换 、基本类型和字符串的转换、包装类型和字符串的转换、其他方法(静态方法)
注意:实际应用中,优先使用基本数据类型,更加简单、效率更高。
149页
1.3枚举
新建枚举要继承Enum.
内部实现是int类型常量。
values()取枚举类型的所有枚举值
valueOf()根据枚举元素名,取枚举元素值
枚举类,可定义构造器、属性、方法。可单独存在、也可作为类的内部类存在。
访问枚举值:类名.枚举类型名.枚举值
详细参考150页
1.4数字工具类Math
所有的属性和方法都是静态的,final类,不可被继承
2个属性和多个数学运算方法。如round(),max()
详细参考153页
1.5System类
1)有3个属性in,out,err分别表示标准输入,标准输出,标准异常流(待完善)
2)数组备份(数组复制):arraycopy(src,int,desc,int,length);从数组src的指定索引开始复制length个元素到dest数组的指定索引位置(从索引位置开始)
3)获取当前系统时间与格林威治时间之间的时间差(毫秒值):currentTimeMillis();
通常用于统计程序的执行时间(介绍毫秒值-开始毫秒值)
如果需要更精确的时间,可使用System提供的系统计时器.nanotime()
4)获取或设置系统属性 :如file.seperator,file.encoding,java.io.tempdir等。详细参考155页
getProperties();
setProperty(String key,String def);
getProperty(Stirng key);
例如:获取系统名可以用System.getPropery("os.name");
5)获取系统环境变量
System.getenv("PATH");
System.getenv("CLASSPATH");
6)运行垃圾回收器
System.gc();提示JVM尽快去回收未使用的对象占用的内存,等效于Runtime.getRuntime().gc();
7)退出虚拟机
System.exit(int status);强制终止当前正在运行的java虚拟机。
非0的状态,标示异常终止
一般用于需要强制关闭程序时
157页
1.6 Runtime类
Runtime类,方便应用程序与其运行环境进行信息交互
Runtime类,使用了单例模式,因此只能通过静态方法Runtime.getRuntime();获取唯一实例。
获取Runtime实例:Runtime runtime=Runtime.getRuntime();
1)获取运行时内存情况
runtime.availableProcessors();//JVM可用CPU数目
runtime.maxMemory();//JVM可用最大内存,默认64M,可用-Xmx来修改
runtime.totalMemory();//JVM当前使用内存,-Xms指定JVM运行时立即使用的内存量
runtime.freeMemory()// JVM当前空闲内存
2)执行指定的命令:exec(String command);
如果需要在JAVA应用程序中,指定第三方应用程序(如解压缩工具软件),可使用此方法。159页
1.7String 类
String 是不可变的字符串(多个字符组成的字符序列)
String 有多种构造器,String s="core java";最简单,最高效 ,更省内存空间(因为s="core java"直接在字符串常量池中查找或创建core java,然后让变量S指向它;而String a=new String("core java"),先在字符串常量池中创建core java,然后在堆空间创建一个对象,内容备份自字符串常量池core java对象)
字符串是最常用的一个类,它的每个方法都要熟练掌握。
字符串常用方法:
1)
.length();//获取字符串长度。
2)字符串比较
.equals(String value);//比较字符串,默认比较字符串地址,如果需要比较内容,需要重写equals()方法。
String类还提供了其他比较字符串的方法 :
equalsIgnocase(String value);比较2个字符串,忽略大小写
startsWith(String value); 是否以参数字符串开始
endsWith();是否以参数字符串结束
compareTo(String value);按字典书序比较字符串,‘a’<'b',相等返回0,字符串在参数值之前放回小于0,之后返回大于0;
compare
ToIgnorecare(String value
);按字典顺序比较字符串,忽略大小写
3)字符串搜索
从字符串中搜索字符或子字符串
.indexOf(String str);参数字符串在字符串中第一次出现的索引,未出现返回-1;
.lastIndexOf(String str);最后一次出现在字符串中的索引,未出现返回-1;
.indexOf(String str,int fromindex);
参数字符串在字符串中第一次出现的索引,从fromindex开始搜索,未出现返回-1;
注意:以上三个搜索方法,str 还可以为int类型参数,代表字符的ASC码值。
charAt(int index);提取字符串中指定索引处单个字符,参数值必须非负
4)字符串修改相关方法
.substring(int index);提取从位置索引index开始到字符串尾的子字符串
.substring(int fromindex,int endinx);提取从fromindex开始到endindex的子字符串,不包含endindex
.concat(String str);将参数字符串联接到字符串尾部,返回一个新字符串
.replace(char old,char new);用字符new替换字符串中所有的old字符,返回新字符串
.trim();返回字符串副本,忽略首位空白
.toUpperCase();将字符串中所有字符转换为大写
.toLowerCase();
将字符串中所有字符转换为小写
注意:字符串对象时不可变得,这些修改是在字符串对象的副本(一份备份)上进行的,返回的新字符串对象
5)其他数据类型转换成字符串
String类提供了静态转换方法String.valueOf(Object);
例如:String str=String.valueOf(1222);
6)其他方法
字符串编码问题:
JVM的默认编码:
System.getPropery("file.encoding");
解码和编码要一致,否则会乱码;
乱码解决:
new String(源字符串.getBytes(原编码方式),目标编码方式);
166页
1.8StringBuffer和StringBuilder类
代表可变字符序列,用于对字符串的频繁修改
StringBuffer()和StringBuilder(),提供的方法相同,只不过StringBuffer线程安全,StringBuilder不安全(不安全性能更高)
大部分情况下性能排序StringBuilder>StringBuffer>String
构造器:
StringBuilder();
StringBuilder(String str);
常用方法:
append(String str);//将参数字符串追加到字符串序列(注意:除了追加字符串,还可以追加其他类型数据,参数可以是char,int,double等)
length ();获取序列对象的长度
insert(int ,String);将字符串插入到序列的指定位置
setCharAt(int ,char);提供序列指定位置字符
toString();转换为字符串
reverse();反转字符串
delete(int from,int end);删除序列中from 到end-1范围的字符
replace(int from,in end,String str );用 Str替换从from 开始知道end结束位置的字符
注意:修改字符串的方法,修改后会返回自身的引用。因此,可多个方法链(每个方法一行)