- 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<s.length();i++){
char ch = s.charAt(i);
if(ch>='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<s.length();i++){
System.out.println(s.charAt(i));
}
//字符串转小写
String s1 = "abcDEFTYU";
System.out.println(s1.toLowerCase());
//字符串转大写
System.out.println(s1.toUpperCase());*/
/*String s = new String("123456");
System.out.println(s.toString());*/
//trim 去掉字符串前面的空白以及后面的空白
/*String s = " abcd 123 456 ";
System.out.println(s.trim());*/
//valueOf() java中的字符串可以和任意一种类型做相互转换 只是把这个类型所代表的变量,转为字符串了,原始的类型没有变
/*Demo d = new Demo();
System.out.println(d);
String s1 = String.valueOf(d);
System.out.println(s1);*/
/*int a = 100000;
System.out.println(String.valueOf(a).length());*/
//求一个数字是否是回文数
// 123321 123454321 12321
}
}