黑马程序员-Java学习日志之:String

黑马程序员-Java学习日志之:String
----------------------<a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IO开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------

   String类是java类库中最常用的类。Java中String类不属于基本数据类型;是符合数据类型,String是java中的类,每个字符串都是实例化的字符串对象。在java语言中,对象的默认值是null,所以String的默认值也是null。但是String类又是一种特殊的对象,有其他对象没有的一些特性。
   Java提供了两个类:String和StringBuffer,这两种类可以存储和操作字符串,即包含多个字符的字符数据,String和StringBuffer分别用于处理不变字符串和可变字符串。
String类的声明
   Public final class String extends Object implements Serializable,Comparable<String>,CharSequence
   String类声明为final类,即说明String类不可以有子类,继承了根类Object类,即继承了父类中的所有属性及方法;实现了3个接口:分别为Serializable接口、Comparable接口、CharSequence接口。
   Comparable<String>接口强行对实现它的每个类的对象进行整体排序。此排序被称为该类的自然排序,java类的compareTo方法被称为他的自然比较方法,实现Comparable接口的对象列表和数组可以通过Collection.sort和Array.sort进行自动排序;实现Comparable接口的对象可以用作 有序映射表中的键或有续集和中的元素,无需制定比较器。
String对象的创建
  String s1 = "abc";
  String s2 = new String("abc");
  String s3 = "abc";
  s1是一个类类型变量,"abc"是一个对象
  s1与s2的区别:s1在内存中有一个对象,s2在内存中有两个对象。
  字符串的特点:一旦被初始化就不可以被改变。
  s1 == s2; false 比较的是两个对象
  s1.equals(s2);true String类复写Object类的equals方法,
   该方法用于判断字符串是否相同。
  s1 == s3;true
字符串基本操作
  1,获取
1.1 字符串中包含的字符数,也就是字符串的长度。
int length();获取长度。
1.2 根据位置获取位置上某个字符。
char charAt(int index);
1.3 根据字符获取该字符在字符串中的位置
int indexOf(int ch);返回的是ch在字符串中第一次出现的位置
int indexOf(int ch,int fromIndex);从fromindex指定位置开
始获取ch在字符串中出现的位置。
int indexOf(String str);返回的是str在字符串中第一次出现的
位置。
int indexOf(String str,int fromIndex);从fromindex指定位
置开始str在字符串中出现的位置。
int lastIndexOf(int ch);从字符串的最后位置开始索引
   2, 判断
2.1 字符串中是否包含某一子串。
boolean contains(str);
特殊之处:indexOf(str);可以索引str第一次出现的位置如果出现
-1,则表示该str不在字符串中存在。
if(str.indexOf("aa" != -1);
而且该方法既可以判断,又可以获取出现的位置。
2.2字符串中是否有内容
boollean isEmpty();原理就是判断长度是否为0.
2.3字符串中是否是以指定内容开头。
boolean startsWith(str);
2.4 字符串中是否是以指定内容结尾。
boolean endWith(str);
2.5 判断字符串内容是否相同。复写了Object类中的equals方法
boolean equals(str);
2.6 判断内容是否相同,并忽略大小写。
boolean equalsIgnoreCase();
3,转换
3.1将字符数组转成字符串。
构造函数:
  String(char[]);
String(char[],offset,count);将字符数组中的一部分转成字符
串。
静态方法:
  static String copyValueOf(char[]);
static string copyValueOf(char[] data,int offset,int
count);
static String ValueOf(char[]);
3.2将字符串转成字符数组。
char[] toCharArray();
3.3将字节数组转成字符串
String(byte[]);
String(byte[],offset,count);将字符数组中的一部分转成字符
串。
3.4将字符串转成字节数组.
byte[] getBytes();
3.5将基本数据类型转成字符串.
static String valueOf(int);
static String valueOf(double);

特殊:字符串和字节数组在转换过程中,是可以指定编码表的。
4,替换
String replace(oldchar,newchar);
5,切割
String[] split(regex);
6, 子串。获取字符串中的一部分
String subString(begin);
String subString(begin,end);
  7,转换 去除空格 比较
7.1将字符串大写活着小写
String toUpperCase();
String toLowerCase();
7.2将字符串两端的多个空格去除
String trim();
7.3对两个字符串进行自然比较
   int compareTo(String);
StringBuffer是字符缓冲区。
StringBuffer也是一个容器。
特点:

1 长度是可以变化的。
2 可以操作多个数据类型
3 最终会通过toString方法变成字符串。

1,存储
StringBuffer append();将指定数据作为参数添加到已有数据结尾处。
StringBuffer insert(index,数据);可以将数据插入到指定index位 置。
2,删除

StringBuffer delete(start,end);删除缓冲区中的数据,半酣start 不包含end。
StringBuffer deleteCharAt(index);删除指定位置的字符。


3,获取
char charAt(int index);获取字符串
int indexOf(String str);根据字符串获取位置
int length();获取字符串长度
String subString(int start,int end);

4,修改 替换
StringBuffer replace(start,end,string);
sb.replace(1,4,"hfjk");
void setCharAt(int index,char ch);
sb.setCharAt(2,'j');

5, 反转
StringBuffer reverse();
6,
将缓冲区中指定数据存储到指定字符数组中。
void getChars(int srcbegin,int srcEnd,char[] dst,int
dstBegin);
将StringBuffer中从srcbegin到srcEnd,存储到数组dst中从srcEnd开始
存。

StringBuffer是线程同步。
StringBuilding是线程不同步。
六、基本数据类型数据包装类

byte Byte
short short
int integer
long Long
boolean Boolean
float Float
double Double
char Character

基本数据类型对象包装类的最常见作用。
就是用于基本数据类型和字符串类型之间的转换。

基本数据类型转成字符串

  基本数据类型.toString(基本数据类型值);
如:Integer.toString(21);

字符串转成基本数据类型。
静态:
xxx a = Xxx.ParseXxx(String);

int a = Integer.ParseInt("123");

double b = Double.ParseDouble("78.33");

boolean b = Boolean.ParseBoolean("true");

非静态:
Integer i = new Integer("123");
int num = i.intValue();

十进制转成其他进制。
Integer.toBinaryString();
Integer.toOctalString();

他进制转成十进制。
Integer.ParseInt(string,radix);

----------------------<a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值