JAVA-基础(三)
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-基础(三)的更多相关文章
- Java 基础三、接口与内部类
1. 在Java程序语言中,接口是对类的一种描述.例如Arrays类中sort方法声明可以对对象进行排序,但前提是对象所属的类必须实现Comparable接口. public interface ...
- java基础(三)
1.枚举类,使用enum定义的枚举类默认继承java.lang.Enum,而不是Object类.枚举类的所有实例必须在枚举类中显示列出,否则这个枚举类永远都不能产生实例.相关内容较多,需要后续继续跟进 ...
- java基础三种循环的使用及区别
摘要:Java新人初学时自己的一些理解,大神们路过勿喷,有什么说的不对不足的地方希望能给予指点指点,如果觉得可以的话,希望可以点一个赞,嘿嘿,在这里先谢了.在这里我主要说的是初学时用到的Java三个循 ...
- java 基础三
1 运算符 1.1 比较运算符 比较运算符的结果都是boolean类型,也即是要么是true,要么是false. 比较运算符"=="不能写成"=". > ...
- Java基础(三)-final关键字分析
今天来谈谈final关键字的作用, 虽然有很多博文关于final进行了很深的研究,但还是要去记录下谈谈自己的见解加深下印象.下面直接进入主题: 一.final关键字的作用 1.被final修饰的类不能 ...
- java基础(三)-----java的三大特性之多态
面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 继承 ...
- java基础(三):反射、反序列化破解单列模式和解决方式
单例模式指的是一个类只有一个对象,通过一些措施达到达到这个目的.但是反射和反序列化可以获得多个不同的对象. 先简单的认识一下单例模式 一:单例模式 通过私有构造器,声明一个该类的静态对象成员,提供一个 ...
- Java基础三(Scanner键盘输入、Random随机数、流程控制语句)
1.引用类型变量的创建及使用2.流程控制语句之选择语句3.流程控制语句之循环语句4.循环高级 ###01创建引用类型变量公式 * A: 创建引用类型变量公式 * a: 我们要学的Scanner类是属于 ...
- java基础(三) 加强型for循环与Iterator
引言 从JDK1.5起,增加了加强型的for循环语法,也被称为 "for-Each 循环".加强型循环在操作数组与集合方面增加了很大的方便性.那么,加强型for循环是怎么解析的 ...
- java基础 三 概念和java程序的结构.
一.java的一些概念: JRE(java runtime environment):java程序运行环境,如果要运行java程序,需要jre支持.jre里包含jvm JDK(java devel ...
随机推荐
- WinForm 开发框架 Jade UI Beta
Jade UI Demo Beta 个人网站:http://www.2to.net 开源地址:https://github.com/dcdlove/JadeUI 预览DEMO下载: http://pa ...
- JAVA基础之线程
个人理解: 在相同的进程也就是运行同样的程序的前提下,线程越多效率越快!当然硬件也是个障碍!为了提高效率,可以多创建线程,但是也不是越多越好,这就需要了线程池进行管理!需要知道的线程实现的方法:继承T ...
- 前端js优化方案(二)持续更新
由于上篇篇幅过长,导致编辑出了问题,另开一篇文章继续: (4)减少迭代次数,最广为人知的一种限制循环迭代次数的模式被称为“达夫设备(Duff`s Device)” Duff`s Device的理念是: ...
- css3动画之圆形运动轨迹
css3中通过@keyframes定义动画,animation设置动画属性,从而实现动画效果: 在animation属性当中,可以规定动画的名称.整个动画的运行时间.运动的速度曲线以及其延迟时间.播放 ...
- 【机器学习实战】第2章 K-近邻算法(k-NearestNeighbor,KNN)
第2章 k-近邻算法 KNN 概述 k-近邻(kNN, k-NearestNeighbor)算法主要是用来进行分类的. KNN 场景 电影可以按照题材分类,那么如何区分 动作片 和 爱情片 呢? 动作 ...
- PostgreSQL: epoch 新纪元时间的使用
新纪元时间 Epoch 是以 1970-01-01 00:00:00 UTC 为标准的时间,将目标时间与 1970-01-01 00:00:00时间的差值以秒来计算 ,单位是秒,可以是负值; 有些应用 ...
- C#注册表操作类(完整版)
下面贴出自己用C#写的注册表操作类,欢迎大家拍砖! 1.注册表基项静态域 1 /// <summary> 2 /// 注册表基项静态域 3 /// 4 /// 主要包括: 5 /// 1. ...
- Android(java)学习笔记128:xml文件生成
1.xml文件: 用元素描述数据,跨平台. 2.利用传统的方式创建xml文件,下面是一个案例: 设计思路:建立一个学生管理系统,创建xml文件保存学生信息: (1)首先是布局文件activity_ma ...
- 激光推送报错:APNs is not available,please check your provisioning profile and certification 和 设置别名问题 app not registed, give up set tag:
前几天,项目中用到了推送功能,就集成了激光,遇到了2个问题,就给大家分享一下, 第一个问题: 在集成的过程是按照激光的文档做的,但是最后配置完了,一运行,就打印出这么一句话, APNs is not ...
- Sequence II
6990: Sequence II 时间限制: 3 Sec 内存限制: 128 MB提交: 206 解决: 23[提交][状态][讨论版][命题人:admin] 题目描述 We define an ...