Character 类型
字符(Character)是围绕字符型(char)的一个简单的包装器。字符(Character)的构
造函数如下:
Character(char ch)
这里ch指定了被创建的字符(Character)对象所包装的字符。
调用如下的charValue( )方法可以获得包含在字符(Character)对象中的字符型(char)
值。
char charValue( )
调用的结果返回字符。
字符(Character)类定义了几个常数,包括下面这些:
 
MAX_RADIX 最大基数
MIN_RADIX 最小基数
MAX_VALUE 最大字符值
MIN_VALUE 最小字符值
TYPE 字符型(char)的类(Class)对象
字符(Character)包括了几个静态方法,这些方法完成将字符分类并改变它们的大小
写。这些方法在表14-7中列出。下面的例子说明了这些方法。
// Demonstrate several Is... methods.
class IsDemo {
public static void main(String args[]) {
char a[] = {'a', 'b', '5', '?', 'A', ' '};
for(int i=0; i<a.length; i++) {
if(Character.isDigit(a[i]))
System.out.println(a[i] + " is a digit.");
if(Character.isLetter(a[i]))
System.out.println(a[i] + " is a letter.");
if(Character.isWhitespace(a[i]))
System.out.println(a[i] + " is whitespace.");
if(Character.isUpperCase(a[i]))
System.out.println(a[i] + " is uppercase.");
if(Character.isLowerCase(a[i]))
System.out.println(a[i] + " is lowercase.");
}
}
}
程序的输出结果如下所示:
a is a letter.
a is lowercase.
b is a letter.
b is lowercase.
5 is a digit.
A is a letter.
A is uppercase.
is whitespace.
表 14-7 各种字符(Character)方法
方法 描述
static boolean isDefined(char ch) 如果ch是由Unicode定义的,则返回true,否则,返回false
static boolean isDigit(char ch) 如果ch是一个数字,则返回true,否则,返回false
static boolean isIdentifierIgnorable(char ch) 如果在一个标识符中ch应被忽略,则返回true,否则,返
回false
static boolean isISOControl(char ch) 如果ch是一个ISO控制字符,则返回true,否则,返回false
 
续表
方法 描述
static boolean isJavaIdentifierPart(char ch) 如果ch被做为Java标识符的一部分(除了第一个字符),
则返回true。否则,返回false
static boolean isJavaIdentifierStart(char ch) 如果ch被做为Java标识符的首字符,则返回true。否则返
回false
static boolean isLetter(char ch) 如果ch是一个字母,则返回true。否则返回false
static boolean isLetterOrDigit(char ch) 如果ch是一个字母或一个数字,则返回true。否则返回
false
static boolean isLowerCase(char ch) 当ch是小写字母时,返回true。否则返回false
static boolean isSpaceChar(char ch) 如果ch是Unicode编码的空格字符,则返回true。否则返
回false
static boolean isTitleCase(char ch) 如果ch是Unicode编码的标题字符,则返回true。否则返
回false
static boolean isUnicodeIdentifierPart
(char ch)
如果ch被做为Unicode编码标识符的一部分(除了第一个
字符),则返回true。否则,返回false
static boolean isUnicodeIdentifierStart
(char ch)
如果ch被做为一个Unicode标识符的首字符,则返回true。
否则返回false
static boolean isUpperCase(char ch) 如果ch是一个大写字母,则返回true。否则返回false
static boolean isWhitespace(char ch) 如果ch是一个空白符,则返回true。否则,返回false
static char toLowerCase(char ch) 返回ch的小写等价形式
static char toTitleCase(char ch) 返回ch的标题等价形式
static char toUpperCase(char ch) 返回ch的大写等价形式
字符(Character)定义了如下形式的forDigit( )和digit( )方法:
static char forDigit(int num, int radix)
static int digit(char digit, int radix)
forDigit( )方法返回与num的值关联的数字字符。而转换的基数由radix指定。digit( )方
法按照给定的基数,返回与指定字符(该字符可能是一个数字)相关联的整数值。
由Character类定义的另一个方法是compareTo( ),该方法具有如下的两种形式:
int compareTo(Character c)
int compareTo(Object obj)
第一种形式当调用对象与c具有相同值时返回0。当调用对象具有比c小的值时返回一个
负值。否则它将返回一个正值。在第二种形式中,当obj是对Character类的一个引用时,其
功能与第一种形式一样。否则它将引发一个ClassCastException异常。这些方法是在Java 2
中新增加的。
Character类还定义了equals( )和hashCode( )方法。
另两个与字符有关的类是 Character.Subset 和 Character.UnicodeBlock ,其中
 
Character.Subset类用于描述Unicode编码的一个子集,而Character.UnicodeBlock类中包含了
Unicode 2.0编码的字符块。

java.util 第 1 部分:类集框架

封装以下类库

AbstractCollection (Java 2) EventObject Random AbstractList (Java 2) GregorianCalendar ResourceBundle AbstractMap (Java 2) HashMap (Java 2) SimpleTimeZone AbstractSequentialList (Java 2) HashSet (Java 2) Stack AbstractSet (Java 2) Hashtable StringTokenizer ArrayList (Java 2) LinkedList (Java 2) Timer (Java 2, v1.3) Arrays (Java 2) ListResourceBundle TimerTask (Java 2, v1.3) BitSet Locale TimeZone Calendar Observable TreeMap (Java 2) Collections (Java 2) Properties TreeSet (Java 2) Date PropertyPermission (Java 2) Vector Dictionary PropertyResourceBundle WeakHashMap (Java 2) java.util定义了如下的接口。注意其中大多数是在Java 2中新增加的。 Collection (Java 2) List (Java 2) Observer Comparator (Java 2) ListIterator (Java 2) Set (Java 2) Enumeration Map (Java 2) SortedMap (Java 2) EventListener Map.Entry (Java 2) SortedSet (Java 2)

大部分是和集合相关的

LinkedList类

LinkedList类扩展AbstractSequentialList并执行List接口。它提供了一个链接列表数据结 构。它具有如下的两个构造函数,

说明如下: LinkedList( ) LinkedList(Collection c) 第一个构造函数建立一个空的链接列表。第二个构造函数建立一个链接列表,该链接 列表由类集c中的元素初始化。 除了它继承的方法之外,LinkedList类本身还定义了一些有用的方法,这些方法主要用 于操作和访问列表。

使用addFirst( )方法可以在列表头增加元素;

使用addLast( )方法可以在 列表的尾部增加元素。

它们的形式如下所示: void addFirst(Object obj) void addLast(Object obj) 这里,obj是被增加的项。 调用getFirst( )方法可以获得第一个元素。

调用getLast( )方法可以得到最后一个元素。

它们的形式如下所示: Object getFirst( ) Object getLast( )

为了删除第一个元素,可以使用removeFirst( )方法;为了删除最后一个元素,可以调 用removeLast( )方法。

它们的形式如下所示: Object removeFirst( ) Object removeLast( )

下面的程序举例说明了几个LinkedList支持的方法。

// Demonstrate LinkedList. import java.util.*; class LinkedListDemo { public static void main(String args[]) { // create a linked list LinkedList ll = new LinkedList(); // add elements to the linked list ll.add("F"); ll.add("B"); ll.add("D"); ll.add("E"); ll.add("C"); ll.addLast("Z"); ll.addFirst("A"); ll.add(1, "A2"); System.out.println("Original contents of ll: " + ll); // remove elements from the linked list ll.remove("F"); ll.remove(2); System.out.println("Contents of ll after deletion: " + ll); // remove first and last elements ll.removeFirst(); ll.removeLast(); System.out.println("ll after deleting first and last: " + ll); // get and set a value Object val = ll.get(2); ll.set(2, (String) val + " Changed"); System.out.println("ll after change: " + ll); } } 该程序的输出如下所示: Original contents of ll: [A, A2, F, B, D, E, C, Z] Contents of ll after deletion: [A, A2, D, E, C, Z] ll after deleting first and last: [A2, D, E, C] ll after change: [A2, D, E Changed, C]

因为LinkedList实现List接口,调用add(Object)将项目追加到列表的尾部,如同addLast( ) 方法所做的那样。使用add( )方法的add(int, Object)形式,插入项目到指定的位置

注意如何通过调用get( )和set( )方法而使得ll中的第三个元素发生了改变。为了获得一 个元素的当前值,通过get( )方法传递存储该元素的下标值。为了对这个下标位置赋一个新 值,通过set( )方法传递下标和对应的新值。

通过迭代函数访问类集

通常希望循环通过类集中的元素。例如,可能会希望显示每一个元素。到目前为止, 处理这个问题的最简单方法是使用iterator,iterator是一个或者实现Iterator或者实现 ListIterator接口的对象。Iterator可以完成循环通过类集,从而获得或删除元素。ListIterator 扩展Iterator,允许双向遍历列表,并可以修改单元。Iterator接口说明的方法总结在表15-4 中。ListIterator接口说明的方法总结在表

使用迭代函数 在通过迭代函数访问类集之前,必须得到一个迭代函数。

每一个Collection类都提供一 个iterator( )函数,该函数返回一个对类集头的迭代函数。通过使用这个迭代函数对象,可 以访问类集中的每一个元素,一次一个元素。通常,使用迭代函数循环通过类集的内容,

步骤如下: 1. 通过调用类集的iterator( )方法获得对类集头的迭代函数。

2. 建立一个调用hasNext( )方法的循环,只要hasNext( )返回true,就进行循环迭代。

     3. 在循环内部,通过调用next( )方法来得到每一个元素。

对于执行List的类集,也可以通过调用ListIterator来获得迭代函数。正如上面解释的那 样,列表迭代函数提供了前向或后向访问类集的能力,并可让你修改元素。否则,ListIterator 如同Iterator功能一样。 这里是一个实现这些步骤的例子,说明了Iterator和ListIterator。它使用ArrayList对象, 但是总的原则适用于任何类型的类集。当然,ListIterator只适用于那些实现List接口的类集。

JAVA-基础(三)的更多相关文章

  1. Java 基础三、接口与内部类

    1.   在Java程序语言中,接口是对类的一种描述.例如Arrays类中sort方法声明可以对对象进行排序,但前提是对象所属的类必须实现Comparable接口. public interface ...

  2. java基础(三)

    1.枚举类,使用enum定义的枚举类默认继承java.lang.Enum,而不是Object类.枚举类的所有实例必须在枚举类中显示列出,否则这个枚举类永远都不能产生实例.相关内容较多,需要后续继续跟进 ...

  3. java基础三种循环的使用及区别

    摘要:Java新人初学时自己的一些理解,大神们路过勿喷,有什么说的不对不足的地方希望能给予指点指点,如果觉得可以的话,希望可以点一个赞,嘿嘿,在这里先谢了.在这里我主要说的是初学时用到的Java三个循 ...

  4. java 基础三

    1 运算符 1.1  比较运算符 比较运算符的结果都是boolean类型,也即是要么是true,要么是false. 比较运算符"=="不能写成"=". > ...

  5. Java基础(三)-final关键字分析

    今天来谈谈final关键字的作用, 虽然有很多博文关于final进行了很深的研究,但还是要去记录下谈谈自己的见解加深下印象.下面直接进入主题: 一.final关键字的作用 1.被final修饰的类不能 ...

  6. java基础(三)-----java的三大特性之多态

    面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 继承 ...

  7. java基础(三):反射、反序列化破解单列模式和解决方式

    单例模式指的是一个类只有一个对象,通过一些措施达到达到这个目的.但是反射和反序列化可以获得多个不同的对象. 先简单的认识一下单例模式 一:单例模式 通过私有构造器,声明一个该类的静态对象成员,提供一个 ...

  8. Java基础三(Scanner键盘输入、Random随机数、流程控制语句)

    1.引用类型变量的创建及使用2.流程控制语句之选择语句3.流程控制语句之循环语句4.循环高级 ###01创建引用类型变量公式 * A: 创建引用类型变量公式 * a: 我们要学的Scanner类是属于 ...

  9. java基础(三) 加强型for循环与Iterator

    引言   从JDK1.5起,增加了加强型的for循环语法,也被称为 "for-Each 循环".加强型循环在操作数组与集合方面增加了很大的方便性.那么,加强型for循环是怎么解析的 ...

  10. java基础 三 概念和java程序的结构.

    一.java的一些概念: JRE(java  runtime environment):java程序运行环境,如果要运行java程序,需要jre支持.jre里包含jvm JDK(java  devel ...

随机推荐

  1. springMVC数据校验与单文件上传

    spring表单标签:    <fr:from/> 渲染表单元素    <fr:input/>输入框组件    <fr:password/>密码框组件标签    & ...

  2. ES5数组遍历

    reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值. array.reduce(function(total, currentValue, curren ...

  3. 9、数值的整数次方------------>剑指offer系列

    数值的整数次方 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 思路 这道题逻辑上很简单,但很容易出错 关键是要考虑全面,考虑到所有情况 ...

  4. ios 开发最新屏幕适配

  5. 真正的S2b其实是S2b2c

    本文转自阿里参谋长曾鸣:真正的S2b其实是S2b2c! 在<在未来五年,S2b是最有可能领先的商业模式>这篇文章发表之后,曾鸣书院收到了非常多的反馈,看到很多实践和思考. 在这篇文章中,曾 ...

  6. 快速搭建高可用 LNMP Web应用基础架构

    云服务器费用:查看费用 产品详情                 产品介绍 本镜像是根据Azure Resource Manager模板创建的,基于资源组下的高可用web系统,主要包括前端web负载均 ...

  7. SQLServer 2012 报表服务部署配置(2)

    2.当系统打开"SQL Server安装中心",则说明我们可以开始正常的安装SQL Server 2012,可以通过"计划"."安装".&q ...

  8. LibreOJ #514. 「LibreOJ β Round #2」模拟只会猜题意

    内存限制:256 MiB 时间限制:1000 ms 标准输入输出 题目类型:传统 评测方式:文本比较 题目描述 给定一个长度为 nnn 的序列 AAA . 定义 f(l,r)=∑i=lrAif(l,r ...

  9. 使用nginx搭建一个简单的负载均衡

    在windows系统上使用IIS模拟出两个不同服务器的站点: 然后再NGINX使用轮询机制配置两个服务器以及虚拟服务器的端口: 需要注意的是,配置虚拟代理域名的话需要找到windowsC盘下的host ...

  10. HDU 5091 Beam Cannon (扫描线思想)

    题意:移动一个矩形,使矩形内包含的点尽量多. 思路:把一个点拆成两个事件,一个进(权值为1)一个出(权值为-1),将所有点按照x排序,然后扫描,对于每个x,用一个滑窗计算一下最大值,再移动扫描线.树状 ...