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

------ Java培训、Android培训、iOS培训、.Net培训 、期待与您交流! -------



String类

一、String类概述

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

String s1=”abc”;//s1是一个类类型变量,”abc”是一个对象;

  //字符串的最大特点:一旦被初始化就不可以被改变

String s1=new String(“abc”);

//s1s2 有什么区别?

s1在内存中有一个对象

s2在内存中有两个对象(new“abc”)


System.ou.println(s1==s2);

System.ou.println(s1.equals(s2));//String类复写了object类中equals方法

//该方法用于判断字符串是否相同

 

二、String类常见操作:

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在字符串中出现的位置

 

2,判断

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

boolean contains(str);

2.2字符中是否有内容。

boolean startsWith(str);//原来就是判断长度是否为0,为0则返回true

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

boolean startsWith(str);

2.4字符串是否以指定内容结尾。

boolean endsWith(str);

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

boolean equals(str);

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

boolean equalsIgnoreCase(str);

 

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 valueOfint;

static String valueOfdouble;

//3+””;//String.valueOf(3);

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

 

4,替换

String replace(oldchar,newchar)

 

5,切割

String[] split(regex)

 

6,子串,获取字符串中的一部分。

String substring(begin);//从指定位置开始到结尾,如果脚标不存在,会出现字符串脚标越界。

String substring(begin,end);//包含头,不包含尾 s.substring(0,s.length())

 

7,转换,去除空格,比较

7.1将字符串转成大写或者小写

String toUpperCase();

String toLowerCase();

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

String trim();

7.3对两个字符串进行自然

Int compareTo(string);

 

class StringMethodDemo 
{
	//7转换,去除空格,比较
	public static void method_tra()
	{
		String str = "  Hello Java!3  ";
		//1.大小写互换
		sop(str.toUpperCase());
		sop(str.toLowerCase());
		//2.去除空格
		sop(str.trim());
		//3.比较
		String str1 = "  Hello Java!5  ";
		sop(str.compareTo(str1));
	}
	//6子串,获取字符串中的一部分。
	public static void method_substring()
	{
		String str = "abcdefgh";
		sop(str.substring(2));//从指定位置开始至结尾.如果角标不存在,会出现角标越界异常
		sop(str.substring(1,4));//包含头,不包含尾。s.substring(0,s.length())
	}
	//5切割
	public static void method_split()
	{
		String s = "lisi,zhangsan,wangwu";
		String[] arr = s.split(",");
		for(int x=0;x<arr.length;x++)
			sop(arr[x]);
	}
	//4替换
	public static void method_replace()
	{
		String s = "hello java";
		String s1 = s.replace('a','n');
		String s2 = s.replace("java","world");
		sop("s="+s);
		sop("s1="+s1);
		sop("s2="+s2);
	}
	//3转换
	public static void methid_trans()
	{
		//1.字符数组->字符串
		char[] arr = {'a','b','c','d','e'};
		String s1 = new String(arr);
		String s2 = new String(arr,1,2);
		String s3 = String.copyValueOf(arr);
		String s4 = String.copyValueOf(arr);
		sop("s1="+s1);
		sop("s2="+s2);
		sop("s3="+s3);
		sop("s4="+s3);
		//2.字符串->字符数组
		String str = "abcd";
		char[] chArr = str.toCharArray();
//		sopArray(chArr);
		//3.字节数组->字符串
		byte[] arr1 = {53,55,47,57};//ASCII值
		String s5 = new String(arr1);
		sop("s5="+s5);
		//4.字符串->字节数组
		byte[] byt = str.getBytes();
		sopArray(byt);
		//5.基本数据类型->字符串
		int x = 5;
		String s6 = String.valueOf(x);
		sop("s6="+s6);
	}
	//2判断
	public static void method_is()
	{
		String str = "ArrayDemo.java";
		//判断文件名是否以Array开头
		sop(str.startsWith("Array"));
		//判断文件名是否以Array开头
		sop(str.endsWith("java"));
		//判断文件名是否包含Demo
		sop(str.contains("Demo"));
	}
	//1获取
	public static void method_get()
	{
		String str = "abcdsdf";
		//长度
		sop(str.length());
		//根据索引获取字符
		sop(str.charAt(4));
		//根据字符获取索引
		sop(str.indexOf("ds",2));//如果没有找到,返回-1
		//反向索引一个字符出现的位置
		sop(str.lastIndexOf("d"));
	}
	public static void main(String[] args) 
	{
		method_tra();
//		method_substring();
//		method_split();
//		method_replace();
//		methid_trans();
//		method_is();
//		method_get();
	}

	public static void sop(Object obj)
	{
		System.out.println(obj);
	}
	public static void sopArray(byte[] arr)
	{
		System.out.print("[");
		for(int x=0;x<arr.length;x++)
		{
			if(x!=arr.length-1)
				System.out.print(arr[x]+",");
			else
				System.out.println(arr[x]+"]");
		}
	}
}

 



 

三、StringBuffer

是字符串缓冲区(是一个容器)

特点:

1,长度是可变化的

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

3,最终会通过toString方法变成字符串。


常见操作

 可以CURDCreate_Update_Read_Delete

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,修改

StringBuffer replace(star,end,string);

void setCharAt(int index,char ch);

5,反转

StringBuffer reverse();

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

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

程序范例:

public class  StringBufferDemo
{
	//将缓冲区中指定数据存储到指定字符数组中
	public static void method_6()
	{
		StringBuilder sb = new StringBuilder("HelloJava");
		char[] chs = new char[9];
		sb.getChars(1,4,chs,1);
		for(int x=0;x<chs.length;x++)
			sop("chs["+x+"]="+chs[x]);
	}
	
	//删除
	public static void method_delete()
	{
		StringBuffer sb = new StringBuffer("HelloWorld");
		//删除指定部分
		sb.delete(2,4);
		sop(sb.toString());
		//删除指定位置字符
		sb.deleteCharAt(3);
		sop(sb.toString());
		//清空缓冲区
		sb.delete(0,sb.length());
		sop(sb.toString());
	}
	//存储
	public static void method_add()
	{
		StringBuffer sb = new StringBuffer();
		//添加
		sb.append("abcef").append(true).append(23);
		sop(sb.toString());
		//插入
		sb.insert(2,"QQ");
		sop(sb.toString());
	}

	public static void main(String[] args) 
	{
		method_6();
		method_delete();
		method_add();
	}

	public static void sop(String str)
	{
		System.out.println(str);
	}
}

 



JDK1.5版本之后出现了StringBuilder

StringBuffer是线程同步,安全

StringBuilder是线程不同步,不安全

后续开发建议使用StringBuilder

方法与Buffer相同

 

升级3因素

提高效率,简化书写,提升安全性

 

 

 

 

基本数据类型包装类

 


基本数据类型         基本数据类型包装类

byte             Byte   

short            Short  

int               Integer  

long           Long   

boolean         Boolean  

float           Float    

double         Double   

char           Character  

基本数据类型对象包装类的最常见作用

就是用于基本数据类型和字符串类型之间做转换

 

1,基本数据类型转成字符串

     基本数据类型+””

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

例如:Integer.toString(34);//将整数34变成字符串”34”

 

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

     xxx  a = Xxx.parseXxx(String);

int a = Integer.parseInt(“123”);

double d = Double.parseDouble(“12.34”);

boolean b=Boolean.parseBoolean(“ture”);

 

3,十进制转成其他进制

   toBinaryString();

   toHexString();

   toOctalString();

 

4,其他进制转十进制

   parseInt(string,radix);

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值