Java菜鸟学习笔记--常用类篇(一):String,StringBuffer类

String 与StringBuffer类


1.String类是不可变字符类,一个对象初始化并且赋值以后,存的值就是固定的了,所以不能直接对里面的字符串进行增删改查,只能将值从内存中取出来。

2.StringBuffer类是可变字符,可以对对象内存的字符串直接进行增删插查等操作,但是声明时候要以标准类的初始化方法构造。



String 常用方法实例.


1.常用方法实例

//1.String是不可变字符
//2.String常用构造方法
//3.String常用方法
package me.string;

public class TestString{
	
	public static void main(String[] args){
		
		String s1="Java";
		String s2="Java";
		String s3="new";
		
		System.out.println(s1==s2);//输出true
		//因为“Java”分配在常量值,而s1直接指向常量值的Java,JVM做了优化,如果常量池有Java直接s2也指向它
		
		String s4=new String("Java");
		String s5=new String("Java");
		
		System.out.println(s4==s5);//输入false,没有指向同一个内存地址
		System.out.println(s4.equals(s5));//true
		//equal()是Object方法,当时String类已经复写,判断依据是存储的字符串是否一样
		
		String s6="Hello Java ,I am a Coder";
		//探测是否为空的方法
		System.out.println(s6.isEmpty());//输出false
		
		//查找有Java这个字符的第一个位置
		System.out.println(s6.indexOf("Java"));//输出6
		
		//返回长度的方法
		System.out.println(s6.length());
		
		//替换字符方法
		String s7=s6.replace(" ","_");//返回替换操作后的字符串
		System.out.println(s6);//Hello Java ,I am a Coder

		
		System.out.println(s7);//Hello_Java_,I_am_a_Coder
		
		//替换字符串中的所有某个字符
		String s8=s6.replace("a","*");
		System.out.println(s8);// Hello J*v* ,I *m * Coder
		

		String s9=s6.replaceAll("a","X");
		System.out.println(s9);// Hello JXvX ,I Xm X Coder
		
		//判断是否十一某个单词开头的字符串
		System.out.println(s6.startsWith("Hello"));// true
		
		//静态方法,直接以字符串形式返回输入的
		System.out.println(String.valueOf("value"));// value
		System.out.println(String.valueOf(999));//999
	
}


package me.string;

public class TestString{
	
	public static void main(String[] args){
		
		//求数字长度的方法
		int i1 =14565454;
		String s1=String.valueOf(i1);
		System.out.println(i1);
		System.out.println("i1的长度为 "+s1.length());
		
		//以空格为条件 拆分子串
		String s2="i am super Man";
		//按照空格分割,返回字符串数组
		String[] ss=s2.split(" ");
		for(int i=0;i<ss.length;i++){
			
			System.out.println(ss[i]);
			
		}
		/*输出:
		14565454
		i1的长度为 8
		i
		am
		super
		Man

		*///

	}
}





2.编写一个程序,输出字符串中大写英文字母个数,小写英文字母个数,非英文字母个数


//1.2.编写一个程序,输出字符串中大写英文字母个数,小写英文字母个数,非英文字母个数

package me.string;
public class TestString{
	
	public static void main(String[] args){
		
		//法一:用toCharArray()转成字符数组
		String s1="Az1df a d adjf ladDJL FAK jdd33uo o DJd";
		char[] coco=s1.toCharArray();
		int lowercase=0;
		int uppercase=0;
		int others=0;
		for(int i =0;i<coco.length;i++){
			
			//System.out.println(coco[i]);
			if(( 'A'<=coco[i]) &&(coco[i]<='Z')){
				uppercase++;
			}
			else if(('a'<=coco[i]) &&(coco[i]<='z')){
				
				lowercase++;
			}
			else{
				others++;
			}
		}
		System.out.println("uppercase "+uppercase);
		System.out.println("lowercase "+lowercase);
		System.out.println("others "+others);
		/*输出
		uppercase 9
		lowercase 19
		others 11
		*/
		
		//法二: 用charAt()拿出字符比较
		
		lowercase=0;
		uppercase=0;
		others=0;
		
		char temp;
		for(int i =0;i<s1.length();i++){
			
			temp=s1.charAt(i);
			
			if(( 'A'<=temp) &&(temp<='Z')){
				uppercase++;
			}
			else if(('a'<=temp) &&(temp<='z')){
				
				lowercase++;
			}
			else{
				others++;
			}
		}
		System.out.println("uppercase "+uppercase);
		System.out.println("lowercase "+lowercase);
		System.out.println("others "+others);
		
		/*输出
		uppercase 9
		lowercase 19
		others 11
		*///这个方法效率比较高
		
		
		
		//方法三:用indexOf()查找
		
		lowercase=0;
		uppercase=0;
		others=0;
		
		char the;
		String sU="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
		String sL=sU.toLowerCase();
		
		//查需每个提出来的额字符再不在大小写表里面,在的话就计数
		for(int i = 0;i < s1.length();i++){
			
			the =s1.charAt(i);
			//indexOf(参数)默认返回第一个字符位置,找不倒返回 -1
			if(sU.indexOf(the) != -1){
				
				uppercase++;
			}
			else if (sL.indexOf(the) != -1){
				lowercase++;
			}
			else{
				others++;
			}
			
			
		}
		System.out.println("uppercase "+uppercase);
		System.out.println("lowercase "+lowercase);
		System.out.println("others "+others);
		/*输出
		uppercase 9
		lowercase 19
		others 11

		*///用法三结合了 charAt(位置参数) indexOf(查找字符参数) 
		
		
		
		//方法四:用Character.isLowerCase()方法!!!
		
		lowercase=0;
		uppercase=0;
		others=0;
	
		for(int i = 0;i < s1.length();i++){
			
			//Character.isLowerCase()可以判断是否为大或小写
			if(Character.isLowerCase( s1.charAt(i) ) ){
				
				lowercase++;
			}
			else if (Character.isUpperCase( s1.charAt(i) )){
				uppercase++;
			}
			else{
				others++;
			}
			
			
		}
		System.out.println("uppercase "+uppercase);
		System.out.println("lowercase "+lowercase);
		System.out.println("others "+others);
		/*输出
		uppercase 9
		lowercase 19
		others 11

		*///

	}
}


2.编写一个程序,输出一个字符串中,某个字符串出现的次数


//2.编写一个程序,输出一个字符串中,某个字符串出现的次数

package me.string;
public class TestString{
	
	public static void main(String[] args){
		
		//方法一:用Split()拆分
		
		String s1="javadkfjkaldjfoejekajfavjavaajfavajavajldkfjaojfava45df4 a4f";
		// 创建数组记录按java拆分好的
		String[]  s2=s1.split("java"); 
		//如果有1个java 就拆成2个,2个就拆成3个数组..依次~~
		int number=s2.length-1;
		System.out.println("有 "+ number +" 个 java");
		
		//用indexOf()找到第一个位置,然后在用用split
	
	}
}



StringBuffer 方法实例.



//1.StringBuffer类为可变字符 
//2.StringBuffer可以对字符串进行修改
//3.String对象和 StringBuffer类 实现 s1=s1+s2;内存实现不同
//4.StringBuffer 的增加 删除 插入功能
package me.stringbuffer;

public class TestStringBuffer{
	
	
	public static void main(String[] args){
		
		//1.String StringBuffer实现字符串拼接
		String s1="Hello";
		String s2=" Java";
		s1=s1+s2;
		System.out.println(s1);
		/*输出:
		Hello Java
		*///因为String是不可变字符串,所以这个操作先取出 s1,s2原内存中的值,然后放入新内存区域实现拼接
		
		//StringBuffer ss1="Hello ";//编译错误,不能这样初始化
		StringBuffer ss1=new StringBuffer("Hello ");
		
		//StringBuffer ss2="Java";
		StringBuffer ss2=new StringBuffer("Java");
		
		//ss1=ss1+ss2;编译错误,不能这样操作
		System.out.println(ss1);//输出Hello
		//这个方法实现在ss1后面拼接如ss2
		ss1.append(ss2);
		
		ss2.append("/").append("me").append("/").append("code");
		/*由于append方法返回对象,所以可以进一步又调用方法*/
		
		System.out.println(ss1);//Hello Java
		System.out.println(ss2);//Java/me/code
		
		//2.用StringBuffer删除
		StringBuffer ss3=new StringBuffer("abcdefg");
		ss3.delete(0,3);
		System.out.println(ss3);//defg
		
		//3.插入功能
		ss3.insert(0,"xxxx");
		System.out.println(ss3);//xxxxdefg
		
		//4.字符串反转功能
		ss3.reverse();
		System.out.println(ss3);//gfedxxxx
		

	}
	

	
}




作者:YangGan
出处:http://blog.csdn.net/incyanggan
本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名Yanggan(包含链接).



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值