javaString类

javaString类_第1张图片
javaString类_第2张图片

  • String:
    * String 类代表字符串。Java 程序中的所有字符串字面值(如 “abc” )都作为此类的实例实现。
    * 字符串是常量;它们的值在创建之后不能更改
    * 父类:Object
    * 父接口:Serializable, Comparable, CharSequence
    * 从以下版本开始: JDK1.0
    * 构造器
    *
    * 编码:把认识的变为不认识 把一个字符串变为数组
    * 解码:把不认识变为认识 把一个数组变为字符串
    *
    * 切记:实际开发中,要保证 前台页面(jsp),后台java(servlet),数据库(mysql)三者字符保持一致,统一使用UTF-8
    */
public class Demo {
	
	/*
	 
	public static void main(String[] args) throws UnsupportedEncodingException {
		String s1 = new String("你");
		System.out.println(Arrays.toString(s1.getBytes()));
		//1:创建一个字符串
		
		/*String s1  = "abc"; //直接赋值法		
		String s2 = "abc";
		String s3 = new String("abc");
		String s4 = new String("abc");
		
		
		System.out.println(s1==s2);//true
		System.out.println(s1==s3);//false
		System.out.println(s2==s3);//false
		System.out.println(s3==s4);//false
		
		
		System.out.println(s1.equals(s2));//true
		System.out.println(s1.equals(s3));//true
		System.out.println(s2.equals(s3));//true
		System.out.println(s3.equals(s4));//true
*/		
		//String(byte[] bytes) 通过使用平台的默认字符集解码指定的 byte 数组,构造一个新的 String。 默认 gbk
		/*byte[] by = {1,2,3,4,5};
		String s1 = new String(by);
		System.out.println(s1);
		//String(byte[] bytes, String charsetName) 通过使用指定的 charset 解码指定的 byte 数组,
		                                        构造一个新的 String。
		String s2 = new String(by, "utf-8");
		System.out.println(s2);*/
		//创建一个字符串  把字符数组转为字符串
	/*	char[] ch = {'你'};
		String s1 = new String(ch);
		System.out.println(s1);
		//把字符串转为字节数组
		//getBytes(String charsetName) 使用指定的字符集将此 String 编码为 byte 序列,
		并将结果存储到一个新的 byte 数组中。
		
		byte[] by = s1.getBytes("utf-8");
		System.out.println(Arrays.toString(by));*/
		
		//String(char[] value, int offset, int count) 分配一个新的 String,它包含取自字符数组参数一个子数组的字符。
		/*char[] ch = {'你','好','吗','中',' ',' ',' '};
		String s = new String(ch, 0, 4);
		System.out.println(s);
		*/
		
		
		
	}

}

  • String的常用方法
    *
    * concat():拼接字符串,底层会创建新的对象,每拼接一次,就要创建一个新的,所以,如果有大量拼接操作,不建议使用String
    * 解决方案:使用可变字符序列 StringBuffer或者StringBuilder
    *
    * 面试题:问数组,字符串,集合有没有length这个方法?
    * 数组是length属性
    * 字符串是length方法
    * 集合是size方法
    *
    * 注意:split分割路径时候,如果是/
    * 例如:D:/java1129/第十四天-常用类(包装类和字符串)/代码
    * 我们需要使用/来作为分割的条件 split("/")
    * 如果是
    * 例如:D:\java1129\第十四天-常用类(包装类和字符串)\代码
    * 我们需要使用\\来作为分割的条件 split("\\")
import java.io.UnsupportedEncodingException;
import java.util.Arrays;

public class Demo2 {
	/*
	
	 */
	
	public static void main(String[] args) throws UnsupportedEncodingException {
		//String s = "abcdef";
		//获取当前下标的字符
		//System.out.println(s.charAt(0));
		//获取当前下标的字符的hashCode值
		//System.out.println(s.codePointAt(0));
		//按字典顺序比较两个字符串    使用hashCode做减法操作
		//String s1 ="a",s2 = "c";
		//System.out.println(s1.compareTo(s2));
		//将指定字符串连接到此字符串的结尾。
		//String s1 = "abc";
		//String s2 = "你好吗";
		//System.out.println(s1+s2);
		//String s3 = s1.concat(s2);  //底层创建了一个新的字符串对象,原来的字符串并没有改变
		//System.out.println(s1);
		//System.out.println(s2);
		//链式编程,一个方法的返回值又是一个对象,可以继续调用此方法
		//System.out.println(s1.concat(s2).concat("123").concat("789").concat("yut"));
		//当且仅当此字符串包含指定的 char 值序列时,返回 true。
		//String s = "abcdef";
		//注意:方法的形参是接口类型,其实需要们传递这个接口的实现类
		//System.out.println(s.contains("abd"));
		//返回指定数组中表示该字符序列的 String。
		//String str = String.copyValueOf(new char[]{'a','b','c'});
		//System.out.println(str);
		
		//测试此字符串是否以指定的后缀结束。  endsWith(String suffix) 
		/*String[] str = {"a.txt","b.txt","战狼.avi","中国人.mp3"};
		//请统计有几个文本文档
		int count = 0;
		for (String s : str) {
			if(s.endsWith(".txt")){
				System.out.println(s);
				count++;
			}
		}
		
		System.out.println(count);*/
		// 使用指定的格式字符串和参数返回一个格式化字符串。
		//保留小数2中做法
		/*double d = 10.1234;
		//1:printf做法,只能显示,不能接受
		//System.out.printf("%.2f",d);
		//2:format() 既能显示,又能接受
		String s = String.format("%.2f", d);
		//3:如何把字符串转为基本类型
		d = Double.parseDouble(s);
		System.out.println(d+123);*/
		//hashCode() 返回此字符串的哈希码。 10进制的整数
		/*System.out.println("a".hashCode());
		int a = "谭".hashCode();
		String s = Integer.toHexString(a);
		System.out.println(s);
		*/
		/*Demo2 d = new Demo2();
		System.out.println(d);*/
		//获取字符串的长度
	 /*  System.out.println("abcde".length());
		//返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。
		String s = "abcae";
		System.out.println(s.indexOf("a", 0));
		//返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索。
		System.out.println(s.lastIndexOf("a", s.length()-1));*/
		//返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
		/*String s = "123456qweyqiuwey";
		
		String s1 = null;
		//遍历字符串  length()+charAt()
		for(int i=0;i='0' && ch<='9'){
				s = s.replace(ch, '*');
				
			}
		}
		
		System.out.println(s);
		System.out.println(s.replaceAll("[0-9]", "*"));*/
		
		/*String s1 = s.replace('a', '*');
		System.out.println(s1);
		System.out.println(s);*/
		
		//按照某种规则分割字符串
		/*String s2 = "你好,123,789,iop";
		
		String[] str = s2.split(",");
		for (String string : str) {
			System.out.println(string);
		}*/
		
		/*String url = "D:/java1129/第十四天-常用类(包装类和字符串)/代码/day1218-常用类1";
		String[] str = url.split("/");
		for (String string : str) {
			System.out.println(string);
		}
		*/
		/*System.out.println("a.txt".startsWith("a"));
		System.out.println("a.txt".endsWith(".txt"));*/
		
		//截取字符串  获取123  包括起始下标,不包括结束下标
		/*String s = "123456789";
		System.out.println(s.substring(0, 3));
		System.out.println(s);*/
		
		//将字符串转为,字符数组
		/*String s = "123456";
		//遍历方式1:转数组遍历
		char[] ca = s.toCharArray();
		for (char c : ca) {
			System.out.println(c);
		}
		//遍历方式2:charAt+length
		for(int i=0;i

你可能感兴趣的:(java初级)