不是很复杂,知道以下的知识就够了:
1.java 包括两种数据类型:
原始数据类型(primitive data type):int, byte, float, long, boolean ...
对象(object):其他的都是对象,包括数组。
2.每种 原始数据类型 都有一个相对应的包装类(wrapper class):
如 int 对应 integer, float 对应 float,有如下特性:
1)包装类里的数值是无法修改的
2)都有一个 构造方法,参数为 对应的原始数据类型,比如:
new integer (10), new boolean (true)
3)都有一个 构造方法,参数为一个字符串,把字符串转换为值,比如:
new integer ("10"), new boolean ("true")
4)有一个方法,可以把存在包装类里的值取出来:
integer.intvalue(), float.floatvalue();
5)有一个静态方法,不用创建一个对象就可以把字符串转换为值,比如:
int i = integer.parseint("10");
3.string 和 stringbuffer
每一个 object 都有一个 tostring() 函数。
java 里使用 操作符重载的地方只有一个: + 操作:
如果两个操作数中有一个是 string,就调用另一个操作数的 tostring,结果就变成
两个 string 的相加。
常用在 exception 的处理中,比如:
try {
}catch (exception e){
system.out.println ("error: " + e);
}
处理过程:"error: " + e -> "error: " + e.tostring()
如果是 string 和 基本数据类型相加,就先把这个基本数据类型用他的包装类处理。
"string" + 123 -> "string" + integer(123) -> "string" + integer(123).tostring()
string + string 的过程,java 的内部处理过程(1.4以后)实际上是这样的:
"string1" + "string2" -> new stringbuffer("string1").append("string2").tostring()
先建立一个 stringbuffer, 再用 append 计算,最后把 stringbuffer 转换成 string
原因是 string 是 不可修改的,stringbuffer 是可以修改的,字符串计算时还是用
stringbuffer 比较快
所以,数据转换:
int -> string
string newvalue = "" + 10;
string -> int
int i = (new integer("10")).intvalue();
int i = integer.parseint("10");
闽公网安备 35060202000074号