Java 高级应用编程 第一章 工具类
一、java api
java api简介
1、api (application programming interface) 应用程序接口
2、java中的api,就是jdk提供的各种功能的java类
3、jdk帮助文档 java_api_cn.chm 官网地址http://www.oracle.com/technetwork/java/api-141528.html
如:
java.lang
java语言包(包含string、math、system等类),任何类中,该包中的类都会被自动导入。
java.util
包含一些实用的工具类( 包含 list, calendar, date等类)
java.awt
图形用户界面包。
java.io
提供多种输入/输出功能的类。
java.net
提供网络应用功能的类。
二、object
(一)object介绍及方法
1、object类是所有类的超类, object是java语言中唯一一个没有父类的类。
2、一个类可以不是object类的直接子类,但一定是object类的子类,java中的每一个类都是从object扩展来的。
3、在object类中定义的方法,在所有类中都可以使用。
(二)object 类常用方法
1、public boolean equals(object obj): 比较两个对象引用的值是否相等(比较地址)。指出调用该方法的对象是否与obj对象相等。即地址是否相等。
2、public int hashcode():该方法返回对象的哈希码,哈希码是一个代表对象的十六进制整数,比作对象的身份证号。在程序运行期间,每次调用同一个对象的hashcode()返回的哈希码必定相同,但是多次执行同一个程序,程序的一次执行和下一次执行期间同一个对象的哈希码不一定相同。实际上默认的哈希码是将对象的内存地址通过某种转换得到的,所以不同对象会有不同的哈希码
3、public string tostring():返回 类名@hashcode ;事实上返回这样的字符串没有什么实际的意义。一般子类都会覆盖该方法,让它返回有意义的文本。
三、equals() 与 ==的区别
理解equals()方法和==运算符的区别是非常重要的。
默认情况下(即没有被重写时)equals()只能比较引用类型,"=="既能比较引用类型又能比较基本类型。
equals()方法从object类继承,即比较对象引用的值
一般都被子类方法覆盖,不再比较引用的值
"=="运算符:
比较基本数据类型:相当于算术等号
比较引用数据类型:比较引用的值,不能被覆盖。
四、包装类
1、java编程语言不把基本数据类型看作对象。java 编程语言提供包装类来将基本数据类型看作对象。
2、在功能上包装类能够完成数据类型之间(除boolean)的相互转换,尤其是基本数据类型和string类型的转换。
3、包装类中包含了对应基本数据类型的值,封装了string和基本数据类型之间相互转换的方法,还有一些处理这些基本数据类型时非常有用的属性和方法。
(一)包装类简介
基本数据类型不是对象层次结构的组成部分。有时需要像处理对象一样处理这些基本数据类型,可通过相应的“包装类”来将其“包装” 。
(二)字符串与基本数据类型、包装类型转换图
1、基本数据类型转换为包装类
int pint = 500;
integer wint = new integer(pint);
2、字符串转换为包装类
字符串通过构造方法转换为包装类
string sint = “500”;
integer wint = new integer(sint);
字符串通过包装类的valueof(string s)转换为包装类
string sint = “500”;
integer wint = integer.valueof(sint);
注意:字符串不能通过以上两种方式转换为character
3、包装类转换为基本数据类型
包装类通过xxxvalue()方法转换为基本数据类型
integer wint = new integer(500);
int pint = wint.intvalue();
4、包装类转换为字符串
包装类通过tostring()方法转换为字符串
integer wint = new integer(500);
string sint = wint.tostring();
5、字符串转换为基本数据类型
字符串通过parsexxx(string s)方法转换为基本数据类型
string sint = “500”;
int pint = integer.parsetiint(sint);
(三)自动的装箱和自动拆箱
1、在进行基本数据类型和对应的包装类转换时,系统将自动进行
2、jdk自从5.0版本后引入
3、方便程序的编写
int pint = 500;
integer wint = pint;
int n = wint;
五、字符串类
1、字符串表现形式可以分为两种:string和stringbuffer。
2、不属于8种基本的数据类型,而是一种引用类型。
3、string对象代表一组不可改变的unicode字符序列,对它的任何修改实际上又产生一个新的字符串,string类对象的内容一旦被初始化就不能再改变。
4、stringbuffer对象代表一组可改变的unicode字符序列。
5、string类是final类型的类。
(一)string 对象的创建
string类的构造方法
1、初始化一个新创建的 string 对象,它表示一个空字符序列。
string 变量名 = new string () ;
2、初始化一个新创建的 string 对象,表示一个与该参数相同的字符序列
string 变量名 = new string (string value) ;
3、分配一个新的字符串,它包含当前包含在字符串缓冲区参数中的字符序列。
string 变量名 = new string (stringbuffer buf) ;
4、字符串文字常量本身是一个string对象
string 变量名 = “hello” ;
5、初始化一个新创建的 string 对象,通过使用指定的charset 解码指定的 byte 数组
string 变量名 = new string(byte[] bytes, string charsetname);
6、初始化一个新创建的 string 对象,通过使用指定的 charset解码指定的 byte 子数组,构造一个新的 string
string 变量名 = new string(byte[] bytes, int offset, int length, charset charset);
7、连接操作符“+”,可以将其它各种类型的数据转换成字符串,并前后连接成新的字符串
string str1 = “hello ”;
string str2 = “world”;
string str = str1 + str2; //str为“hello world”;
(二)string 类的转换
(三)string 类中常用的方法
(四)stringbuffer 类
stringbuffer类用于内容可以改变的字符串
可以使用stringbuffer来对字符串的内容进行动态操作,不会产生额外的对象
(五)stringbuffer 对象的创建
1、构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符
stringbuffer 变量名 = new stringbuffer () ;
2、构造一个不带字符,但具有指定初始容量的字符串缓冲区。
stringbuffer 变量名 = new stringbuffer (int capacity ) ;
3、构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。
stringbuffer 变量名 = new stringbuffer (string value) ;
(六)stringbuffer 类中常用的方法
(七)==
在比较基本数据类型时,比较的是值
在比较引用数据类型时,比较的是地址
(八)equals
原生的(未被重写的)equals方法底层就是==,即比较两个对象的值,通常用来判断两个对象是否为同一个对象,返回值为true两个对象就为同一对象,当object的子类重写以后就具有了其他功能,equals方法不能用来比较基本数据类型
(九)hashcode
hashcode(哈希码)哈希表记录每个对象存储的位置,因此可以将哈希码作为对象内存地址的表示,通常用hashcode去比较两个对象是否不是同一个对象,如果hashcode不同两个对象就不是同一个对象
(十)问:为啥不用hashcode比较两个对象是否为同一个对象
答:存在hashcode相同,equals返回结果为false的情况
(十一)string、stringbuffer、stringbuilder
string不可变字符序列
stringbuffer、stringbuilder可变字符序列
stringbuffer线程安全但是效率低,较早引入
stringbuilder线程不安全但是效率高,较晚引入
六、math 类
math类提供了大量用于数学运算的方法
math类是final类,因此不能从math类继承
math类中的方法都是static方法,因此不必创建math类的对象就可以直接使用该类的方法
(一)math 类中的常量
public static final double pi
public static final double pi
(二)math 类中的常用方法
七、日期类
(一)date 类
java.util.date。
date 类表示指定的时间信息,可以精确到毫秒。
不支持国际化。
该类的许多方法已过时
获取当前系统时间:
new date();
(二) calendar 类
1、java.util.calendar。
java.util.gregoriancalendar
2、常用的日期处理的对象。可以设置自己的时区和国际化格式。
3、是一个抽象类。
4、calendar 抽象类定义了足够的方法,让我们能够表述日历的规则 。
5、获取calendar对象的实例
calendar c = calendar.getinstance();
6、设置calendar实例所表示的时间:
c.set(2011,6,16);
7、获取指定的时间属性
c.get(calendar.year);
(三)calendar 类常用属性
推荐阅读
-
Java 高级应用编程 第一章 工具类
-
Java日期时间API系列5-----Jdk7及以前的日期时间类TimeUnit在并发编程中的应用
-
荐 Java——数据库编程JDBC之数据库连接池技术(C3P0与Druid,提供了Druid的工具类)
-
阿里Java学习路线:阶段 1:Java语言基础-Java语言高级特性:第33章:集合工具类:课时149:Collections工具类
-
阿里Java学习路线:阶段 1:Java语言基础-Java语言高级特性:第1章:Java多线程编程:课时3:Thread类实现多线程
-
Java并发编程之工具类Semaphore的使用
-
java并发编程工具类JUC之ArrayBlockingQueue
-
Java日期时间API系列5-----Jdk7及以前的日期时间类TimeUnit在并发编程中的应用
-
荐 Java——数据库编程JDBC之数据库连接池技术(C3P0与Druid,提供了Druid的工具类)
-
JavaSE高级应用编程——工具类练习题