没有合适的资源?快使用搜索试试~ 我知道了~
第十一章 常用类学习API更深的意义在于复习面向对象的知识。查看源代码,学习源代码。11.1包装类Wrapper11.1.1 为什么需要包装类Java并不是纯面
资源详情
资源评论
资源推荐
第十一章 常用类
学习 API 更深的意义在于复习面向对象的知识。查看源代码,学习源代码。
11.1 包装类 Wrapper
11.1.1 为什么需要包装类
Java 并不是纯面向对象的语言。Java 语言是一个面向对象的语言,但是 Java 中的基本数据类型却是不面向对象
的。基本数据类型有它的优势:性能(效率高,节省空间)。
但是我们在实际使用中经常需要将基本数据类型转化成对象,便于操作。比如:(1)集合的操作,(2)使用 Object
类型接收任意类型的数据等,(3)泛型实参,这时,我们就需要将基本数据类型数据转化为对象。
11.1.2 包装类
包装类均位于 java.lang 包,包装类和基本数据类型的对应关系,如图 10-1:
其中有六个都是继承自 java.lang.Number 类:
11.1.3 自动装箱(auto_boxing)与自动拆箱(unboxing)
JDK1.5 之前需要手动装箱与拆箱,JDK1.5 之后支持自动装箱与自动拆箱。
1. 自动装箱
基本数据类型就自动的封装到与它相同类型的包装中,如:
Integer i = 100;
本质上是,编译器编译时为我们添加了:
Integer i = new Integer(100);
2. 自动拆箱
包装类对象自动转换成基本类型数据。如:
int a = new Integer(100);
本质上,编译器编译时为我们添加了:
int a = new Integer(100).intValue();
11.1.4 包装类的作用
1. 数据类型的范围
MIN_VALUE、MAX_VALUE
Float 和 Double 中还有正无穷大 POSITIVE_INFINITY、负无穷大 NEGATIVE_INFINITY,还 NaN,是 Not a Number 的
缩写。NaN 用于处理计算中出现的错误情况,比如 0.0 除以 0.0 或者求负数的平方根。
程序员可以利用这种定制的 NaN 值中的特定位模式来表达某些诊断信息。
2. 数据类型的转换
1、字符串转成包装类对象
(1)使用包装类型的构造方法
除了 Character 类型,其他 7 中类型都有 1 个构造方法,其参数是字符串类型
例如:
Integer t2=new Integer("500");//参数是字符串,字符串的值是必须对应的数值
Integer t3=new Integer("abc");// java.lang.NumberFormatException: For input string: "abc"
(2)使用包装类的 valueOf 方法
例如:Integer i=Integer.valueOf("500");
2、字符串转成基本数据类型
通过包装类的 parseXxx(String s)静态方法
例如:int i=Integer.parseInt("500");
3. 包装类的其他方法
1、Integer 类型
public static String toBinaryString(int i) //把十进制转成二进制
public static String toHexString(int i) //把十进制转成十六进制
public static String toOctalString(int i) //把十进制转成八进制
2、Character 类型
public static char toUpperCase(char ch) //转成大写字母
public static char toLowerCase(char ch) //转成小写字母
其他的查看相关 API 文档即可
3、equals
按照包装的基本数据类型的值比较
4、compareTo
按照包装的基本数据类型的值比较
11.1.5 缓存问题
我们在编程时大量需要值在-128 到 127 范围之间的 Integer 对象。如果只能通过 new 来创建,需要在堆中开辟大量
值一样的 Integer 对象。这是相当不划算的,IntegerCache.cache 很好的起到了缓存的作用。
缓存
byte Byte -128–127
short Short -128–127
int Integer -128—127
long Long -128—127
float Float 不缓存
double Double 不缓存
char Character 0–127
boolean Boolean true,false
11.2 字符串 String 类
11.2.1 字符串 String 类的特点
字符串的学习,有的同学就看看 API,记下方法,有的同学看看源代码,还有的同学画画图,自然学的深度是不一
样的。
/**
* The {@code String} class represents character strings. All
* string literals in Java programs, such as {@code "abc"}, are
* implemented as instances of this class.
* <p>
* Strings are constant; their values cannot be changed after they
* are created. String buffers support mutable strings.
* Because String objects are immutable they can be shared. For example:
* <blockquote><pre>
* String str = "abc";
* </pre></blockquote><p>
* is equivalent to:
* <blockquote><pre>
* char data[] = {'a', 'b', 'c'};
* String str = new String(data);
* </pre></blockquote><p>
* Here are some more examples of how strings can be used:
* <blockquote><pre>
* System.out.println("abc");
* String cde = "cde";
* System.out.println("abc" + cde);
* String c = "abc".substring(2,3);
* String d = cde.substring(1, 2);
* </pre></blockquote>
* <p>
* The class {@code String} includes methods for examining
* individual characters of the sequence, for comparing strings, for
* searching strings, for extracting substrings, and for creating a
* copy of a string with all characters translated to uppercase or to
* lowercase. Case mapping is based on the Unicode Standard version
* specified by the {@link java.lang.Character Character} class.
* <p>
* The Java language provides special support for the string
* concatenation operator ( + ), and for conversion of
* other objects to strings. String concatenation is implemented
* through the {@code StringBuilder}(or {@code StringBuffer})
* class and its {@code append} method.
* String conversions are implemented through the method
* {@code toString}, defined by {@code Object} and
* inherited by all classes in Java. For additional information on
* string concatenation and conversion, see Gosling, Joy, and Steele,
* <i>The Java Language Specification</i>.
String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。
字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,
所以可以共享。例如:
String str = "abc";
剩余54页未读,继续阅读
易烫YCC
- 粉丝: 23
- 资源: 315
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0