您的位置:首页 > 编程语言 > Java开发

字符相关

2016-07-09 20:35 417 查看
一、字符类型

char是Java的一种基本数据类型,也是Java中的保留字。char在Java中占两个字节,无符号类型,是16位二进制Unicode字符。

char是类型表示的是字符,不是字符串;

char类型变量值只能用单引号来表示,不可使用双引号;

即表示单引号内的单个字符。

/**
* @author shen
* @desc char test
* @date 2016年7月15日
*/
public class CharTest {
public static void main(String[] args) {

//单引号内的单个字符
char test = 'C';
System.out.println(test);

//数组
char cha[] = {'J','a','v','a'};
System.out.println(cha);

//Unicode编码,每一个字符用16位2进制数标识
char ucode = '\u4F60';//20320
char hao = '\u597d';//22909

System.out.print(ucode);
System.out.println(hao);

//转换成的对应值
System.out.println( ucode + hao);
}
}
由于其编码方式,编码方式最多有65536种,远不足以使用,以及在数据库存储的一些问题,在一般情况下,char在java中的实际使用比较少,也并不推荐使用。




二、字符串类

1、String

(1)String类表示字符串,是字符串常量(另:常量池),其值在创建后不能改变,因此Stirng对象创建后是不可变的,直至到被GC回收。

(2)创建String对象

public class StringTest {
public static void main(String[] args) {

String str1 = "Java";//直接创建

String str2 = new String();//面向对象基本创建方法,有时浪费内存
str2 = "C++";

String str3 = new String("C");//String类提供许多构造创建方法和其他方法,详JDK源码

System.out.println(str1+"--"+str2+"--"+str3);
}

}


(3)常见方法

I.获取字符串长度与某个字符

String str = "Java Code";
str.charAt(0);//获取某个下标对应字符
str.length();//字符串长度


II.str.compareTo方法

该方法的作用是比较两个字符串的大小,比较的原理是依次比较每个字符的字符编码。首先比较两个字符串的第一个字符,如果第一个字符串的字符编码大于第二个的字符串的字符编码,则返回大于0的值,如果小于则返回小于0的值,如果相等则比较后续的字符,如果两个字符串中的字符编码完全相同则返回0。

String data1 = "Javi";
String data2  = "Java";
int value = data1.compareTo(data2);


III.截取方法

String str = "Java Code";
String subStr = str.substring(7);//截取得到从某个下标之后的字符串
String sub = str.substring(0, 5);//截取区间之内的字符串


IV.连接方法

String st1 = "Java";
String st2 = "Code";
String st = st1.concat(st2);//连接组成一个新的字符串JavaCode
String stt = st1+st2;//更直接的做法JavaCode
String sst = st1+007;//参与连接中有字符串按字符串连接Java007


V.查找方法

String str = "Java Code";
int i = str.indexOf('o');//某个在字符串第一次出现的下标,不存在则返回-1
int j = str.indexOf('o', 7);//从第几个字符开始查,返回下标,不存在则返回-1


VI.replace方法

该方法的作用是替换字符串中所有指定的字符,然后生成一个新的字符串。经过该方法调用以后,原来的字符串不发生改变。

String str = "Java Code";
String s = str.replace("Java", "C++");//把Java代替成C++


VII.split方法

以特定的分隔符分隔字符串,生成一个 数组。

String data = "java,c++,c,c#";
String arr[] = data.split(",");
for(int k = 0;k<arr.length;k++){
System.out.println(arr[k]);
}


2、Stringbuffer

同样是字符串类,Stringbuffer 是字符串变量,实现方式与String有所不同,在进行处理字符串时不生成新的对象。在存储和操作字符串操作比String更合适。

I.字符串拼接

StringBuffer data = new StringBuffer("The");//创建对象
StringBuffer data1 = data.append(" Great");//拼接方法
String str = " Wall";
data1.append(str).append("!");


II.dele
4000
teCharAt方法



此外,字符串操作相关的方法还有insert插入、reverse反转倒序、setCharAt修改某个下标上的字符、trimToSize将StringBuffer对象的中存储空间缩小到和字符串长度一样的长度,减少空间的浪费。

3、Stringbuilder

Stringbuilder和StringBuffer基本类似,相关方法也一样

4、String、StringBuffer和Stringbuilder的具体区别

[以下复制,来自其他博主总结]

String:字符串常量

StringBuffer:字符创变量,线程安全

StringBuilder:字符创变量,非线程安全

如果要操作少量的数据用String

单线程操作字符串缓冲区下操作大量数据StringBuilder

多线程操作字符串缓冲区下操作大量数据StringBuffer

5、其他[引用]

I.字符串比较”==”与equal()方法

“==” 判断两个引用的是不是同一个内存地址(同一个物理对象).

equals 判断两个字符串的值是否相等.

除非你想判断两个string引用是否同一个对象,否则应该总是使用 equals()方法.

II.密码及其他问题上char[]优先于String原因

String是不可变对象, 意思是一旦创建,那么整个对象就不可改变. 即使新手觉得String引用变了,实际上只是(指针)引用指向了另一个(新的)对象.

而程序员可以明确地对字符数组进行修改,因此敏感信息(如密码)不容易在其他地方暴露(只要你用完后对char[]置0).
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java