黑马程序员----String类

黑马程序员----String类_第1张图片

String

黑马程序员----String类_第2张图片


package cn.itcast.p1.string.demo;

public class StringDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		/*
		 * String类特点: 字符串对象一旦被初始化就不会被改变了。
		 */
//		StringDemoTest();
		
		StringDemo2();
		
	}
	public static void StringDemo2() {
		// TODO Auto-generated method stub
		String s = "abc";//创建一个字符串对象在常量池中。
		String s1 = new String("abc");//创建两个对象,一个new,一个字符串对象在堆内存中。
		System.out.println("s==s1:"+s==s1);//false ----比较地址值,所以是错的。
		
		
		System.out.println(s.equals(s1));//true
		/*这里能比较字符串内容的原因是:String类中的equals方法
		 * 覆盖了Object类中的equals方法。*/
		 
	}
	/*
	 * 演示:字符串定义的第一种方式,并明确常量池的特点:
	 * 池中有就直接拿来用,池中没有就建立。
	 * 创建方法快捷键:选中+右键点出来+Refactor+ Extract Method
	 * 联想快捷键:Ctrl+1
	 * 移动行:Alt+上 (下)
	 * JDK1.5 lang 包会自己导入
	 */

	private static void StringDemoTest() {
		String s = "abc";
		String s1 = "abc";
		System.out.println("s=" + s);
		System.out.println(s1==s);
		
	}

}

String类构造器:

package cn.itcast.p1.string.demo;

public class StringConstructorDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
//		 stringConstructorDemo();
		 stringConstructorDemo2();
		
	}

	public static void stringConstructorDemo2() {
		char [] arr = {'w','c','p','a','s'};
		String s = new String(arr);//String(char[] value) 获取数组中全部字符串,打印结果:s=wcpas

		String s1 = new String(arr,1,3);
		//String(char[] value, int offset, int count) 获取数组中部分字符串,offset开始,count拿多少个。

		System.out.println("s1="+s1);
	}

	private static void stringConstructorDemo() {
		//修改模板快捷键路径:Preferences > Java > Code style > Code templates > code
		String s = new String();//等效于String s ="",不等效于 String s = null;
		byte [] arr = {65,66,67,68};
		
		String s1 = new String(arr);
		System.out.println("s1="+s1);//ABCD :自动将数值拿去查ascill表,转换成字符
		System.out.println("arr="+arr);//[B@76fba0  : [数组,B字节,@符号,76fba0哈希值(地址)
	}



}





String类获取功能:

String类转换:

package cn.itcast.p1.string.demo;

public class StringMethodDemo {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		/*1,获取:
		 * 1.1获取字符串中的长度(个数)
		 * 		int length();
		 * 1.2根据位置获取字符。
		 * 		char charAt(int index);
		 * 1.3根据字符获取字符串中的位置(第一次出现的位置)
		 *  	int indexOf(int 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 LastIindexOf(String str,int fromIndex);
		 *  1.4获取字符串中的一部分字符串。也叫子串
		 *  	String substring(int beginIndex, int endIndex); //包含begin ,不包含end
		 *  	原因:e.length的时候就会角标越界
		 *  	String substring(int beginIndex);
		 *  
		 *  2.转换
		 *  	2.1将字符串变成字符串数组(字符串切割)
		 *  		String [] split(String regex):涉及到正则表达式  \\.两次转义
		 *  	2.2将字符串变成字符数组
		 *  		char [] toCharArray();
		 *  	2.3将字符串变成字节数组
		 *  		byte [] getBytes();
		 *  	2.4将字符串中的字母转换成大小写。
		 *  		String toupperCase();大写
		 *  		String toLowerCase();小写
		 *  	2.5将字符串中的内容进行替换。
		 *  		String replace(char oldch,char newch);
		 *  		String replace(String s1,String s2);
		 *  	2.6将字符串中两端的空格去除
		 *  		String trim();    //输入账号为例,担心用户最后输入空格而看不见导致的问题。
		 *  	2.7将字符串进行连接
		 *  		String concat();  //只能说,这个比较专业,因为+号也可以实现啊!
		 *  

		 *  
		 *
		 * 
		 */
		//stringMethodDemo();
		stringMethodDemo2();
		
	}

	public static void stringMethodDemo2() {
		String s ="张三.李四.王五";
		
		
		
		/* *************字符串切割转换成字符串数组************** */
		System.out.println("字符串切割转换成字符串数组打印结果:");
		String arr[] = s.split("\\.");
		//System.out.println("arr="+arr);//arr=[Ljava.lang.String;@290fbc  包呀,自己导入了
		
		for(int x = 0 ; x
字符串切割转换成字符串数组打印结果:
s.split = 张三
s.split = 李四
s.split = 王五

字符串转成字符数组打印结果:
s.toCharArray = 张
s.toCharArray = 三
s.toCharArray = .
s.toCharArray = 李
s.toCharArray = 四
s.toCharArray = .
s.toCharArray = 王
s.toCharArray = 五

字符串转字节数组打印结果:
 s.getBytes = 97
 s.getBytes = 98
 s.getBytes = -60
 s.getBytes = -29

大小写转换实例打印结果:
s.toUpperCase = ABCJJJJJJJ
s.toLowerCase = abcjjjjjjj

字符串内容替换实例打印结果:
replace = jovo
false

trim()方法应用打印结果:
-ab c-

字符串连接方法应用打印结果:
abc.concat(sssss) = abcsssss



黑马程序员----String类_第3张图片

字符串就是对象,对象的比较就要用方法


* 按照面向对象的思想对字符串进行功能分类。
* "abcd"



* 3,判断
* 3.1 两个字符串内容是否相同啊?
* boolean equals(Object obj);
* boolean equalsIgnoreCase(string str);忽略大写比较字符串内容。
* 3.2 字符串中是否包含指定字符串?
* boolean contains(string str);
* 3.3 字符串是否以指定字符串开头。是否以指定字符串结尾。
* boolean startsWith(string);
* boolean endsWith(string);
*
* 4,比较:字符串就是对象,对象比较就要用方法!




intern:

黑马程序员----String类_第4张图片 

就说intern这个方法,会去堆里面找所指的字符串,如果堆里面没有,就返回池里面建立一个!

你可能感兴趣的:(黑马程序员----String类)