黑马程序员——String类及基本数据类型包装类

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

一、String

String类代表字符串,用于描述字符串事物。

String类的特点:字符串对象一旦被初始化就不会被改变。"adc" 字符串是一个对象,一旦被初始化就不可以被改变。

class StringDemo
{
	public static void main(String[]args)
	{
		String s = "abc";
		s = "bcd";
		System.out.println("s="+s);
	}
}


原因分析:"abc"字符串对象并没有被改变,只是引用变量s指向了新创建的字符串对象"bcd"

1.1 String类常用方法

1、获取

获取字符串中字符的个数(长度)

int length();

根据位置获取字符

char charAt(int index);

根据字符获取在字符串中的位置

int indexOf(int ch);

indexO方法参数类型为int是为了既可以支持字符,也可以支持字符在ASCII码中对应的数字。

从指定位置开始查找ch第一次出现的位置

int indexOf(int ch,int fromIndex);

int indexOf(String str);

int indexOf(String str,int fromIndex);

根据字符串获取在字符串中最后一次出现的位置

int lastIndexOf(int ch);

int lastIndexOf(int ch,int fromIndex);

int lastIndexOf(String str);

int lastIndexOf(String str,int fromIndex);

获取字符串中的一部分字符串,也叫子串

String substring(int beginIndex,int endIndex);

String substring(int beginIndex);

2、转换

将字符串变成字符数组

char[] toCharArray();

将字符串变成字节数组

byte] getBytes();

将字符串中的字母转成大小写

String toUpperCase();大写

String toLowerCase();小写

3、判断

两个字符串内容是否相同

boolean equals(Object obj);

boolean equalsIgnoreCase(String str);忽略大小写比较字符串内容

字符串中是否包含指定字符串

boolean contains(String str);

字符串是否以指定字符串开头,是否以指定字符串结尾

boolean startsWith(String str);

boolean endsWith(String str);

字符串中是否有内容

boolean isEmpty() 判断length是否为0

4、比较

int compareTo(String str); 

如果参数字符串等于此字符串,则返回值0;如果此字符串按字典顺序。小于字符串参数,则返回一个小于0的值;如果此字符串按字典顺序大于字符串参数,则返回一个大于0的值。

5、替换

String replace(char oldCh,char newCh);

String replace(String s1,String s2);

replace方法如果没有找到要替换的内容,则返回的还是原字符串。

6、其他常用方法

去除字符串两端空格

String trim();

将字符串进行连接

String concat(String str);

concat效果与"+"连接符效果一致,但是效果更高一些。

将字符串进行切割

String[] split(String regex);涉及到正则表达式。

将其他类型数据转换成字符串

String.valueOf();

练习:

1、练习一些常用方法

class StringMethodDemo
{
	public static void method1()
	{
		String s1 = "abc";
		String s2 = "aaa";
		sop(s1);
	}
	public static void method_split()
	{
		String s = "zhangsan;lisi;haha";
		String[] arr = s.split(",");
		for(int x=0;x<arr.length;x++)
		{
			sop(arr[x]);
		}
	}
	public static void method_get()
	{
		String s1 = "abcdafgef";
		sop(s1.length());
		sop(s1.charAt(4));
		sop(s1.indexOf("d"));//如果没找打返回-1
	}
	public static void method_is()
	{
		String s2 = "ArrayDemo.java";
		sop(s2.startsWith("Array"));
		sop(s2.endsWith(".java"));
		sop(s2.contains("Demo"));
	}
	public static void method_trans()
	{
		char[] arr = {'a','b','c','d','e'};
		String str = new String(arr);
		sop("str="+str);
	}
	public static void main(String[] args)
	{
		method_get();
		
	}
	public static void sop(Object obj)
	{
		System.out.println(obj);
	}
}

2、将一个字符串反转

class RevDemo
{
	public static void main(String[]args)
	{
		String s = "abcdefg";
		s = reverseString(s);
		System.out.println("s="+s);
	}
	public  static String reverseString(String s)
	{
		//字符串变数组
		char[] chs = s.toCharArray();
		//反转数组
		reverse(chs);
		//数组变字符串
		return new String(chs);
	}
	private static  void reverse(char[] chs)
	{
		for(int start=0,end=chs.length-1;start<end;start++,end--)
		{
			swap(chs,start,end);
		}
	}
	private static void swap(char[] chs,int x,int y)
	{
		char temp = chs[x];
		chs[x] = chs[y];
		chs[y] = temp;
	}
}


3、获取一个字符串在另一个字符串中出现的次数

class SubCountDemo
{
	public static void main(String[]args)
	{
		String str = "abcfjhkjsdagsg";
		String key = "a";
		int count = getSubCount(str,key);
		System.out.println("cout:"+count);
	}
	public static int getSubCount(String str,String key)
	{
		int count = 0;
		int index = 0;
		while((index=str.indexOf(key,index))!=-1)
		{
			index = index + key.length();
			count++;
		}
			return count;
	}
}

4、获取两个字符串中的最大相同子串

class MaxSubString
{
	public static void main(String[]args)
	{
		String s1 = "abcfjhkjsdagsg";
		String s2 = "dags";
		String s = getMaxSubString(s1,s2);
		System.out.println("s:"+s);
	}
	public static String getMaxSubString(String s1,String s2)
	{
		String max = "",min = "";
		max = (s1.length()>s2.length())?s1:s2;
		min = (max==s1)?s2:s1;
		for(int x=0;x<min.length();x++)
		{
			for(int y=0,z=min.length()-x;z!=min.length()+1;y++,z++)
			{
				String temp = min.substring(y,z);
				if(max.contains(temp))
					return temp;
			}
		}
		return " ";
	}
}


二、StringBuffer

StringBuffer类:就是字符串缓冲区对象的描述,用于存储数据的容器。而且可以直接操作多个数据类型,最终会通过toString()变成字符串。

特点:

1. 长度是可变的,StringBuffer的字符串缓冲区初始容量为16个字符,其实质还是数组。

2. 可以存储不同类型数据。

3. 最终要转成字符串进行使用。

2.1 StringBuffer的功能

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 lastIndexOf(String str)  

int length()  

String substring(int start, int end) 

4.修改

void setCharAt(int index, char ch) 

StringBuffer replace(int start, int end, String str) 

5.反转

StringBuffer reverse() 

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

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

JDK1.5之后出现了StringBuilder

StringBuffer线程是同步的

StringBuilder线程不同步

练习:

class StringBufferDemo
{
	public static void method_add()
	{
		StringBuffer sb = new StringBuffer();
		sb.append("abc").append(true).append(34);//abct方法调用链
		sb.insert(1,"qq");
		System.out.println(sb.toString());
	}
	public static void method_dele()
	{
		StringBuffer sb = new StringBuffer("dsfasfa");
		sb.delete(0,sb.length());//清空缓冲区
		System.out.println(sb.toString());
	}
	public static void method_update()
	{
		StringBuffer sb = new StringBuffer("dsfasfa");
		sb.replace(1,4,"java");
		System.out.println(sb.toString());
	}
	public static void main(String[] args)
	{
		method_add();
		method_dele();
		method_update();
	}
}


三、基本数据类型对象包装类

为了方便操作基本数据类型值,将其封装成了对象,在对象中定义了属性和行为丰富了该数据的操作。用于描述该对象的类就称为基本数据类型对象包装类。

byte  Byte

short    Short

int  Integer

long   Long

float  Float

double  Double

char  Character

boolean  Boolean

基本数据类型和字符串之间的转换

基本类型-->字符串

1. 基本类型数值+""。

2. String类中的静态方法valueOf(基本类型数值);

字符串-->基本类型

 使用包装类中的静态方法xxx parseXxx("xxx");

int parseInt(String str);

long parseLong(String str);

boolean parseBoolean(String str);

只有Character没有parse方法

十进制转其他进制

static String toBinaryString(int i) 二进制

static String toHexString(int i)  十六进制

static String toOctalString(int i)  八进制

其他进制转十进制

static int parseInt(String s, int radix)  


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值