JAVA API String and StringBuilder Case

示例一:
public class StringDemo1 {
	public static void main(String[] args) {
		String str1 = "helloworld";//字面量 直接量
		String str2 = "helloworld";
		System.out.println(str1==str2);//true
		
		str2 = str2+"!";
		System.out.println(str2);
		System.out.println(str1);
		
		System.out.println(str1==str2);	//false	
	}
}

示例二:

/**
 * 字符串是不变对象,指的是一旦创建该对象
 * 内容不能发生改变,内容改变会创建新对象
 * 
 * 字符串若是以字面量形式赋值,jvm会重用内容相同的
 * 字符串对象。过程:
 * 当jvm发现一个字面量形式的字符串赋值时,首先会检查
 * 常量池中是否已经创建过表示该字符串的对象,若有则
 * 直接使用该对象做重用,若没有就创建一个对象,然后存入
 * 常量池并将该对象的地址返回。
 * 
 * 
 * @author Administrator
 *
 */
public class StringDemo2 {
	public static void main(String[] args) {
		String s1 = "123abc";
		String s2 = "123abc";
		/*
		 * java编译器在编译代码时有一个优化措施:
		 * 当一个计算表达式中计算符两边的内容都是字面量
		 * 时,编译器会将其进行运算然后将结果写入字节码
		 * 文件中。
		 * 所以,下面的表达式在字节码文件中的样子是:
		 * String s3 = "123abc";
		 */
		String s3 = "123"+"abc";
		
		//字符与数字运算就是数学计算,结果不是"123abc"
		String s4 = 1 + '2' + 3 + "abc";
		
		String s5 = "123";
		/*
		 * 虽然s6的内容还是123abc
		 * 但是表达式中有一个变量,编译器不会进行处理
		 */
		String s6 = s5 + "abc";
		
		String s7 = new String("123abc");
		
		System.out.println(s1 == s2);//true
		
		System.out.println(s1 ==s3);//true
		
		System.out.println(s1 == s4);//false
		
		System.out.println(s1 == s6);//false
		
		System.out.println(s1 == s7);//false
		
	}
}
示例三:

/**
 * int length()
 * 获取当前字符串的长度(字符个数)
 * @author Administrator
 *
 */
public class StringDemo3 {
	public static void main(String[] args) {
		String str = "我爱java";
		//输出字符串长度
		System.out.println(str.length());//6
	}
}

示例四:

/**
 * int indexOf(String str)
 * 查看给定字符串在当前字符串中的位置。
 * 若当前字符串中包含给定字符串,会返回给定字符串第一个
 * 字符在当前字符串中的位置,若当前字符串不含有给定字符
 * 串,则返回-1.
 * @author Administrator
 *
 */
public class StringDemo4 {
public static void main(String[] args) {
//            0123456789012345
String str = "thinking in java";

//查找java在str的位置
int index = str.indexOf("java");
System.out.println(index);
/*
* int indexOf(String str,int fromIndex)
* 重载方法:从当前字符串的给定位置处开始检索
*         第一次出现给定字符串的位置
*/
//从第四个字符开始寻找第一次出现in的位置
index = str.indexOf("in",3);
System.out.println(index);


/*
* int lastIndexOf(String str)
* 查找最后一次出现给定字符串的位置
*/
index = str.lastIndexOf("in");
System.out.println(index);

/*
* 通常用来解决检查一个字符串中是否含有
* 要求的字符串,可以通过位置来得知。
* 甚至可以要求具体出现的位置。
*/

}
}

示例五:

/**
 * String substring(int start,int end)
 * 截取当前字符串中指定范围内的子字符串
 * 
 * @author Administrator
 *
 */
public class StringDemo5 {
	public static void main(String[] args) {
		//            012345678901234567890
		String str = "http://www.oracle.com";
		/*
		 * 在java API中,有一个特点。
		 * 用两个数字表示范围,通常都是"含头不含尾"的。
		 * 下面的参数就是:包含11位置的字符,但是不包含17位置
		 *               的字符
		 */
		String sub = str.substring(11,17);
		System.out.println(sub);//oracle
		
		/*
		 * String substring(int start)
		 * 从当前字符串的指定位置处开始,一直截取到字符串末尾
		 */
		sub = str.substring(7);
		System.out.println(sub);
		
		/*
		 * 获取一个URL的域名
		 * 思路:截取地址中第一个"."与第二个"."之间的字符串
		 *      即可
		 * 步骤:
		 *    1:找到第一个"."的位置
		 *    2:找到第二个"."的位置
		 *    3:截取第一个"."后面的第一个字符开始,到第二个
		 *      "."的位置的所有字符。
		 */
		String url = "www.baidu.com";
		//1
		int start = url.indexOf(".");
		
		//2
		int end = url.indexOf(".",start+1);
		
		//3
		String name = url.substring(start+1,end);
		System.out.println(name);
		
	}
}

示例六:

/**
 * String trim()
 * 该方法会将当前字符串中左右两边的"空白"去除
 * 
 * @author Administrator
 *
 */
public class StringDemo6 {
	public static void main(String[] args) {
		String str = "   hello				";
		String trim = str.trim();
		
		System.out.println(str);
		System.out.println(trim);
		
	}
}

示例七:

/**
 * char charAt(int i)
 * 返回当前字符串中给定位置处对应的字符
 * @author Administrator
 *
 */
public class StringDemo7 {
	public static void main(String[] args) {
		//            0123456789012345
		String str = "thinking in java";
		
		//查看第10个字符是什么
		char c = str.charAt(9);
		System.out.println(c);
		
	}
}

示例八:

/**
 * 检查一个字符串是否为"回文"
 * @author Administrator
 *
 */
public class StringDemo8 {
	public static void main(String[] args) {
		String str = "上海自来水来自上海";
		/*
		 * 思路:只要判断字符串中正数位置的字符与
		 *      倒数位置上的字符都一样,就是回文了
		 */
		for(int i=0;i<str.length()/2;i++){			
			if(str.charAt(i)!=str.charAt(str.length()-i-1)){
				 System.out.println("不是回文!");
				 return;
			}		
		}
		System.out.println("是回文!");
	}
}

示例九:

/**
 * boolean startsWith(String str)
 * 判断当前字符串是否是以给定字符串开始的
 * 
 * boolean endsWith(String str)
 * 判断当前字符串是否是以给定字符串结尾的
 * @author Administrator
 *
 */
public class StringDemo9 {
	public static void main(String[] args) {
		String str = "thinking in java";
		
		//判断str是否以"th"开始
		boolean starts = str.startsWith("th");
		System.out.println("starts:"+starts);
		
		//判断str是否以"ava"结尾
		boolean ends = str.endsWith("ava");
		System.out.println("ends:"+ends);
		
		
	}
}
示例十:

/**
 * String toUpperCase()
 * 将当前字符串中英文部分转换为全大写
 * 
 * String toLowerCase()
 * 将当前字符串中英文部分转换为全小写
 * @author Administrator
 *
 */
public class StringDemo10 {
	public static void main(String[] args) {
		String str = "我爱Java";
		
		String upper = str.toUpperCase();
		System.out.println(upper);
		
		String lower = str.toLowerCase();
		System.out.println(lower);
		
		/*
		 * 常被用作检查字符串中英文部分,完成忽略大小写操作
		 */
		
	}
}

示例十一:

/**
 * 字符串提供了若干的重载静态方法valueOf()
 * 通常用来将其他类型转换为字符串形式
 * @author Administrator
 *
 */
public class StringDemo11 {
	public static void main(String[] args) {
		int i = 100;
		String s1 = String.valueOf(i);
		System.out.println(s1);
		
		double d = 100.123;
		String s2 = String.valueOf(d);
		System.out.println(s2);
		
		//任何类型与字符串连接都是字符串
		String s3 = i + "";
		
	}
}

示例十二:

/**
 * StringBuilder用来解决修改字符串导致的内存消耗问题
 * StringBuilder内部维护一个可变的字符数组,所以修改的
 * 字符串内容都是在当前对象中完成,而不会创建新对象
 * StringBuilder提供了修改字符串的相关方法:增删改插
 * @author Administrator
 *
 */
public class StringBuilderDemo1 {
	public static void main(String[] args) {
		String str = "好好学习java";
		
		StringBuilder builder = new StringBuilder(str);
		/*
		 * 获取StringBuilder表示的字符串
		 * String toString()
		 */
		str = builder.toString();
		//好好学习java
		System.out.println(str);
		
		//好好学习java,为了改变世界!
		/*
		 * StringBuilder append(String str)
		 * 该方法用于向当前字符串末尾追加给定字符串
		 * 返回值还是当前StringBuilder.
		 */
		builder.append(",为了改变世界!");
		str = builder.toString();
		System.out.println(str);
		
		//好好学习java,就是为了改变世界!
		/*
		 * StringBuilder insert(int i,String str)
		 * 在当前字符串的指定位置插入给定字符串,原
		 * 位置及后续字符串顺序向后移动
		 */
		builder.insert(9, "就是");
		str = builder.toString();
		System.out.println(str);
		
		//活着,就是为了改变世界!
		/*
		 * StringBuilder replace(int start,int end,String s)
		 * 将当前字符串中指定范围内的字符串替换为给定的字符串
		 */
		builder.replace(0, 8, "活着");
		str = builder.toString();
		System.out.println(str);
		
		//活着,就是为了改变世界
		/*
		 * StringBuilder delete(int start,int end)
		 * 删除当前字符串中指定范围内的字符串
		 */
		builder.delete(11, 12);
		str = builder.toString();
		System.out.println(str);
		
		/*
		 * reverse()
		 * 将当前字符串内容反转
		 */
		builder.reverse();
		str = builder.toString();
		System.out.println(str);
		
		
	}
}




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值