黑马程序员————String(day13)

----------------------ASP.Net+Android+IOS开发----------------------期待与您交流!

 

 

 

String

l  String(概述)

l  String(常见功能获取和判断)

l  StringBuffer(常见功能添加)

l  StringBuilder

l  基本数据类型对象包装类

l  基本数据类型对象包装类新特性

 

 

String(概述)

1.      字符串是一个特殊的对象。

2.      字符串一旦初始化就不可以被改变。

 

String str = “abc”;   //str是一个类类型变量,”abc”是一个对象。字符串最大特点,一旦被初始化就不可以被改变。

 

String str1 = new String(“abc”);

 

str.equals(str1)结果为true//String类覆写了Object类中equals方法,该方法用于判断字符串是否相同。

 

strstr1有什么区别?

str在内存中一个对象。str1在内存中有两个对象。

 

 

String(常见功能获取和判断)

String类适用于描述字符串事物,那么它就提供了多个方法对字符串进行操作。

常见的操作有哪些?

1.      获取:

l  1.1字符串中包含的字符数,也就是字符串的长度:int length();获取长度

l  1.2根据位置获取位置上某个字符:char charAt(int index)

l  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):反向索引。

例:

public class StringDemo1 {
	public static void method_get(){
		String str = "sjavofoska";
		//长度
		sop(str.length());
		//根据索引获取字符
		sop(str.charAt(5));//当访问到字符串中不存在的角标时会发生字符串角标越界异常
		//根据字符获取索引
		sop(str.indexOf('a',3));//如果没有找到,返回-1
		//反向索引一个字符出现的位置
		sop(str.lastIndexOf('a'));
	}
	
	public static void sop(Object obj){
		System.out.println(obj);
	}
	
	public static void main(String[] args){
		method_get();
	}
}


 

1.      判断

l  2.1字符串中是否包含某一个子串。

         boolean contains(str); 

                  特殊之处:indexOf(str):可以索引str第一次出现位置,如果返回-1,表示该str不在字符串中存在,所以,也可以用于对指定判断是否包含。

                   If(str.indexOf(“aa” != -1))

                    而且该方法既可以判断,又可以获取出现的位置。

l  2.2字符串是否有内容。

           boolean isEmpty(); 原理就是判断长度是否为0

l  2.3字符串是否是以指定内容开头。

           boolean startsWith(str);

l  2.4字符串是否是以指定内容皆为。

           boolean endsWith(str);

l  2.5判断字符串内容是否相同。覆写了Object类中的equals方法。

           Boolean equals(str);

l  2.6判断内容是否相同,并忽略大小写。

           Boolean equalsIgnoreCase();

 

2.      转换:

l  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[])

l  3.2将字符串转成字符数组。

           char[] toCharArray()

l  3.3将字节数组转成字符串。

           String(byte[])

           String(byte[], offset, count):将字节数组中的一部分转成字符串

l  3.4将字符串转成字节数组。

           byte[] getBytes()

l  3.5将基本数据类型转换成字符串。

           static String valueOf(int)

           static Stringg valueOf(double)

 

           特殊:字符串和字节数组在转换过程中,是可以指定编码表的。

 

3.      替换:

String replace(oldchar, newchar);

例:String s = “hello java”;

String s1 = s.replace(‘h’, ’a’);   //h替换为a,如果要替换的字符不存在,返回的还是原串。这时候s还是”hello java”s1则是”aello java”,因为字符串一旦初始化就不会改变。replace返回来的是一个新字符串。

 

4.      切割:

String[] split(regex);

例:String s = “zhangsan, lisi, wangwu”;

String[] arr = s.split(“,”)   //以逗号分割把字符串切割,再用for循环遍历arr就行了。

 

5.      字串。获取字符串中的一部分。

String substring(begin);

String substring(begin, end);

例:String s = “abcdef”;

输出s.substring(2);   //从指定位置开始到结尾:cdef。如果角标不存在,会出现角标越界异常。

输出s.substring(2, 4);   //包含头,不包含尾:cd

 

6.      转换,去除空格,比较。

l  7.1将字符串转成成大写或则小写。

           String toUpperCase();     //大写

           String toLowerCase();     //小写

l  7.2将字符串两端的多个空格去除。

           String trim();

l  7.3对两个字符串进行自然顺序的排序。

           Int compareTo(String);

 

 

StringBuffer(常见功能添加)

一个字符串就是一连串的字符,字符串的处理在许多程序中都用得到。Java定义了StringStringBuffer两个类来封装对字符串的各种操作。它们都被放到了Java.lang包中,不需要用import java.lang这个语句导入该包就可以直接使用它们。

StringBuffer类用于内容可以改变的字符串,可以将其他各种类型的数据增加、插入到字符串中,也可以转置字符串中原来的内容。一旦通过StringBuffer生成了最终想要的字符串,就应该使用StringBuffer.toString()方法将其转换成String类,随后,就可以使用String类的各种方法操作这个字符串了。

 

StringBuffer

1.      字符串的组成原理就是通过该类实现的。

2.      StringBuffer可以对字符串内容进行增删。

3.      StringBuffer是一个容器。

4.      很多方法与String相同。

5.      StringBuffer是可变长度的。

 

StringBuffer是字符串缓冲区。是一个容器。

特点:

1.      而且长度是可以变化的。

2.      可以字节操作多个数据类型。

3.      最终会通过toString方法编程字符串。

 

CURD:   create update read delete

1.      存储

StringBuffer append():将制定数据作为参数添加到已有数据结尾处。

StringBuffer insert(index,数据):可以将数据插入到制定index位置。

2.      删除

StringBuffer delete(start, end):删除缓冲区中的数据,包含start,不包含end

StringBuffer deleteCharAt(index):删除指定位置的字符。

sb.delete(0, sb.length());   //清空缓冲区。sb是对象,指向StringBuffer

3.      获取

char charAt(int index)

int indexOf(String str)

int lastIndexOf(String str)

int length()

4.      修改

StringBuffer replace(start, end, string);

Void set CharAt(int index, char ch);

5.      反转

StringBuffer reverse();

6.      将缓冲区中指定数据存储到字符数组中

Void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)

示例: StringBuffer = new StringBuffer(“abcdef”);

     Char[] chs = new char[6];

     Sb.getChars(1, 4, chs, 1)   //把脚标1-4(不包含4,也就是1-3)内容存储到chs数组中,从脚标1开始存。

 

 

StringBuilder

JDK1.5版本之后出现了StringBuilder

 

StringBuffer是线程同步。

StringBuilder是线程不同步。

 

以后开发,建议使用StringBuilder

 

Java升级三个因素:

1.      提高效率。

2.      简化书写。

3.      提高安全性。

 

 

基本数据类型对象包装类

Java对数据既提供基本数据的简单类型,也提供了相应的包装类。使用基本数据类型,可以改善系统的性能,也能够满足大多数的应用需求。但基本数据类型不具有对象的特征,不能满足某些特殊的需求。从JDK中可以知道,Java中的很多类的很多方法的参数类型都是Object,即用到包装类。比如,用Integer类来包装整数。

我们已经知道Java中的基本数据类型共有8种,那么与之相对应的基本数据类型包装类也同样有8种,表中列出了其对应关系。

基本数据类型

基本数据类型包装类

int

Integer

char

Character

float

Float

double

Double

byte

Byte

long

Long

short

Short

boolean

Boolean

 

 

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

基本数据类型转成字符串:

                  基本数据类型 + “”

                  基本数据类型.toString(基本数据类型值);

                  如:Integer.toString(34);  //34整数变成”34”

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

                   xxx a = Xxx.parseXxx(String);

示例:int a = Integer.parserInt(“123”);

      double b = Double.parseDouble(“12.23”);

      boolean bo = Boolean.parseBoolean(“true”);

 

十进制转换成其他进制:

                   toBinaryString();   //二进制

                   toHexString();     //十六进制

                   toOctalString();    //八进制

其他进制转换成十进制:

                   parseInt(String, radix);

 

 

基本数据类型对象包装类新特性

JDK1.5版本以后出现的新特性:

Integer x = 1;  //自动装箱。就等于:Integer x = new Integer(1);

X = x + 2;     //x + 2:x进行了自动拆箱。变成了int类型,和2进行加法运算,再将和进行装箱赋给x。拆箱:x是对象,自动调用x.intValue()

 

示例:

Integer m = 128;

Integer n = 128;

System.out.println(“m==n: ” + (m==n));   //结果为flase

 

Integer a = 127;

Integer b = 127;

System.out.println(“a==b: ” + (a==b));    //结果为true。因为ab指向了同一个Integer对象。因为当数值在byte范围内容,对于新特性,如果该数值已经存在,则不会再开辟新的空间。

 

 

 

----------------------ASP.Net+Android+IOS开发----------------------期待与您交流!

详情请查看:http://edu.csdn.net

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值