您的位置:首页 > 职场人生

黑马程序员————Java基础之String类和基本数据类型包装类

2015-01-06 14:29 751 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

一、String类概述

String是字符串的类类型,用于描述字符串事物,字符串是一个特殊的对象,特殊之处就在于:
String s = new String();和String s1 = "";两种写法都是在创建对象,使用起来一样。

1、特点

字符串最大的特点就是:一旦被初始化就不可以被改变。
例如:
String s1 = "abc";
String s2 = new String("abc");
String s3 = "abc";
比较的结果:
s1 == s2(false)
s1.equals(s2)(true)//String类复写了Object类中的equals方法。该方法用于判断字符串是否相同。
s1 == s3(true)
//因为“abc”这个字符串对象已经存在与内存中,作为字符串这种特殊的对象,这种在常量池中存在的数据。s3进行初始化时,发现abc已经在内存中存在,就不会再独立开辟空间,因为再开辟空间就比较浪费空间。因此为了节约内存,在字符串对象当中只要字符串相同,那么s1和s3就指向同一个对象。
s1和s2的区别:
s1在内存中有一个对象
s2在内存中有两个对象

2、常见操作方法

1、获取
1.1字符串中包含的字符数,也就是字符串的长度
           int    length():获取长度
1.2根据位置获取位置上的某个字符
           char charAT(int index):当访问到字符串中不存在的角标时,会发生字符串角标越界的错误。
1.3根据字符串获取该字符存在字符串的位置
          int indexOf(int ch):返回的是ch在字符串中第一次出现的位置,传入的是字符对应的ASCII码,如果没有找到,返回-1.
         int indexOf(int ch,int fromIndex):从fromIndex指定位置开始,获取ch在字符串中出现的位置。
         int indexOf(String str):返回的是str在字符串中第一次出现的位置。
         int indexOf(String str,int fromIndex:)从fromIndex指定位置开始,获取str在字符串中出现的位置。
         int lastIndexOf():反向索引
2、判断
2.1字符串中是否包含某一个字符
booleancontains(str);
特殊之处:indexOf(str)可以索引str第一次出现的位置,如果返回值-1表示该str不在字符串中存在。所以,也可以用于对指定判断是否包含。如:if(str.indexOf(“aa”)!=-1)而且该方法即可以判断,又可以获取出现的位置。如果只为判断,用contains。
2.2字符串中是否有内容
booleanifEmpty();原理就是判断长度是否为0;
2.3字符串是否是以指定内容开头
booleanstartsWith(str);
2.4字符串是否是以指定内容结尾
booleanendsWith(str);
2.5判断字符串内容是否相同,复写了Object类中的equals方法。
booleanequals(str);
2.6判断内容是否相同,并忽略大小写
booleanequalsIgnoreCase();
3、转换
3.1将字符数组组装成字符串
构造函数:String(char[]);
                  String(char[],dffset,count);
静态方法:
                  static String copy ValueOf(char[])
                  static String copy ValueOf(char[] data,int offset,int count)
                  static String valueOf(char[])
3.2将字符串转换成字符数组
          char[]toCharArray();
3.3将字节数组转换成字符串
            String(byte[]);
           String(byte[],offset,count);将字节数组的一部分转换成字符串。count表示个数
3.4将字符串转换成字节数组
            byte[]getBytes();
3.5将基本数据类型转成字符串
          StringvalueOf(int);
         StringvalueOf(doublr);
特殊:字符串和字节数组在转换过程中,时可以指定编码表的。
4、替换
    Stringreplace(oldchar,newchar);返回的是一个新字符串,如果要替换的字符不存在,返回的还是原字符串。
5、切割
   String[] split(regex);涉及到正则表达式的点;不能作为切割字符串的regex。
6、获取字符串中的一部分,子串
    String substring(begin);从指定位置开始到结尾。如果角标不存在,会出现字符串角标越界异常。
    String sbustring(begin,end)包含头,不包含尾。
7、转换,去除空格,比较
7.1将字符串转成大写或小写
      String toUpperCase();
      String toLowerCase();
7.2将字符串两端的多个空格去除
    String trim();
7.3对两个字符串进行自然顺序的比较
    intcompareTo(String);
练习:





二、StringBuffer概述

StringBuffer是一个容器,字符串的组成原理就是通过该类实现的。StringBuffer可以对字符串内容进行增删改查等操作,很多方法和String相同。
1、特点

a、长度是可变化的(数组是固定的)
b、可以直接操作多个数据类型。(数组只能操作一个)
c、最终会通过toString方法变成字符串。

2、常见操作

a、存储
StringBuffer append():将指定数据作为参数添加到已有数据的末尾处
StringBuffer insert(intoffest,数据):可以将数据插入到指定offset位置。
b、删除
StringBuffer delete(start,end):删除缓冲区中的数据,包含start,不包含end;
StringBuffer deleteCharAt(index):删除指定位置的字符。
c、获取
char charAt(int index);
int indexOf(String str);
int lastIndexOf(String str);
int length();
String substring(int start,int end);
d、修改
StringBuffer replace(int start,int end,String str)
void setCharAt(int index,char ch);
e、反转
StringBuffer reverse();
f、将缓冲区中指定数据存储到指定字符数组中
void getChars(int srcBegin,int srcEnd,char[] dst,int dstBejin)
在JDK1.5版本之后出现了StringBuilder。
StringBuffer是线程同步的,有锁,效率低
StringBuilder是线程不同步的,无锁,效率高
以后开发,建议使用StringBuilder,如遇多线程,使用StringBuffer加锁。

三、基本数据类型包装类

将基本数据类型封装成对象的好处,在于可以在对象中定义更多的功能方法操作该数据,基本数据类型对象包装类的最常见作用,就是用于基本数据类型和字符串之间做转换。下面我们来了解包装类的写法形式和常见方法。
1、基本数据类型对象包装类
<
aa73
blockquote dir="ltr" style="margin-right:0px;">
byte       Byte
short      Short
int       Integer
long      Long
boolean       Boolean
float   Float
double    Double
char    Character

2、基本数据类型转换成字符串

基本数据类型+" ";
基本数据类型.toString(基本数据类型值);
如:Integer.toString(43);将43整数变成"43";

3、字符串转成基本数据类型。

xxx a = Xxx.parseXxx(string);必须传入对应类型的字符串。
如 int a = Integer.parseInt("123");静态
boolean b = Boolean.parseBoolean("true");
Integer i = new Integer("123");
int num = i.intValue();跟上面的静态方式的结果一样,但这种属于对象调用方式。
在使用时,Integer x = null;上面的代码就会出现NullPointException

4、十进制转换成其他进制

toBinaryString();
toHexString();
toOctalString();

5、其他进制转换成十进制

parseInt(String,radix);
如:int a = Integer.parseInt("3c",16);

6、示例
Integer x = 128;
Integer y = 128;
x==y (flase)
Integer m = 127;
Integer n = 127;
m==n(true)
原因:因为m和n指向了同一个Integer对象,因为当数值在byte范围内,对于新特性,如果该数组已经存在,那么就不会再开辟新的空间。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐