Java (1-2)

来源:互联网 发布:淘宝买lol账号安全吗 编辑:程序博客网 时间:2024/05/22 10:58

1.字符串:从概念上讲,Java字符串就是Unicode字符序列。java没有内置字符串,而是在库中提供了一个预定义的类,叫String。下面介绍相关API:
①字串
String类的substring方法可以从较大的字符串中提取出一个字串。

String greeting = "hello"String s = greet.substring(0,3);

这将创建一个由字符“Hel”组成的字符串。substring的第二个参数是不想复制的第一个位置。上例中要复制的位置是0,1,2。 这样有一个优点:容易计算子串的长度,substring(a,b),长度就是b - a。
②拼接
众所周知,Java允许两个字符串用‘+’进行拼接,当其中一个非字符串时,Java会自动把他转换成字符串。
③不可变字符串
Java的字符串没有提供修改字符串的方法!!!(天啊,挺惊讶的,在现在的我看来挺浪费的),那如何修改呢?首先提取需要的字符,然后再拼接上替换的字符串:

greeting = greeting.substring(0,3) + "p!";

上面的语句将hello修改为help。注意:由于String不能修改,所以在java文档中将String类对象称为不可变字符串,“Hello”将永远是“Hello”,如同x = 3,3 就永远是 3 一样,但是,我们可以修改他们的引用变量,比如上面的greeting 和 x。
Tip: 学过c的很多人可能认为 字符串是这样的:

char greeting [] = "hello";

这是c/c++里面的,java不一样,java的字符串是这样的:

char* greeting="Hello";

当采用另一个字符串替换greeting时,java的代码大致如下:

char* temp=malloc(6);strncpy(temp,greeting,3);strncpy(temp+3,"p!",3);greeting = temp;//换的是变量引用

④检测字符串是否相等
可以使用equals方法检测两个字符串是否相等,若想检测两个字符串是否相等,而不区分大小写,可以使用equalsIgnoreCase方法。千万别用‘==’来判断两个字符串是否相等,这个运算符只能判断两个字符串是否在同一个位置上。

需要注意的是:equals方法并不能作用于基本数据类型 如 int float等。

⑤空串与Null串
空串”“是长度为0的字符串,是一个java对象。如果测试 str.length()与str.equals(“”)就会发现空串有自己的串长度(0) 和内容(空)。不过String变量还可以存放一个特殊的值,名为null,这表示目前没有任何对象与该变量关联,要检查一个字符串是否为null 要这么写 if(str == null)。

⑥码点与代码单元
Java字符串由char值序列组成,而char类型是一个采用UTF-16编码表示Unicode码点的代码单元。大多数常用的Unicode字符使用一个代码单元就可以表示i,而辅助字符需要一对代码单元。
length方法将返回UTF-16编码表示的给定字符串所需要的代码单元数量。

String greeting = "hello";int n = greeting.length(); // is 5

要想得到实际长度,即码点数量,可以调用:

int cpCount = greeting.codePointCount(0,greeting.length());

调用 s.charAt(n)将返回位置n的代码单元,n介于0和 s.length()-1之间。

char first = greeting.charAt(0) // first is 'H'char last = greeting.charAt(4)//last is 'o'

要想得到第i个码点,应该使用以下语句

int index = greeting.offsetByCodePoints(0,i)int cp = greeting.codePointAt(index)

我建议自己查阅下 java String的API