String
创建方法不同,存储方式不同
public class TestString {
public static void main(String[] args) {
//创建对象方法一,在常量池中,相同值的地址是相同的
String s1 = "hello";
String s4 = "hello";
String s5 = "abc";
//创建对象方法二,在堆里
String s2 = new String();//创建一个空串
String s3 = new String("hello");
System.out.println(s1 == s3);
System.out.println(s1 == s4);
}
}
String类常用方法
//--------------------------------------------------------
//String 不可变类
String s = "hello";
//连接字符串
s.concat("tom");
//s对应的对象不能改,还是hello
System.out.println(s);
//需要创建新的对象,引用指向新的对象
s= s.concat("tom");
System.out.println(s);
//--------------------------------------------------------
//字符串的长度也就是字符的个数,hellotom,
System.out.println(s.length());
//--------------------------------------------------------
//两个字符串的值是否相等
String str1 = "hello";
String str2 = "hello";
String str3 = new String("hello");
System.out.println(str1.equals(str2));//true
System.out.println(str1.equals(str3));//true
//区分大小写
System.out.println(str1.equals("Hello"));//false
//--------------------------------------------------------
//忽略大小写
System.out.println(str1.equalsIgnoreCase("Hello"));//true
//转为大写
System.out.println("HELLo".toUpperCase());//HELLO
//转为小写
System.out.println("HELLo".toLowerCase());//hello
//--------------------------------------------------------
//索引从0开始
String sg = "hellohello";
//参数字符串在原字符串对象中第一次出现的位置索引
System.out.println(sg.indexOf('e'));//1
System.out.println(sg.indexOf("he"));//0
//不存在返回-1
System.out.println(sg.indexOf("abc"));//-1
System.out.println(sg.lastIndexOf("he"));//5
//--------------------------------------------------------
String sg1 = "hellohello";
//返回参数位置对应的字符char
System.out.println(sg1.charAt(1));//e
String sg2 = "helloabc";
//取子串,从参数位置取到末尾
System.out.println(sg2.substring(5));//abc
//取子串,从第一个参数位置开始取到第二个参数的前一位【);
System.out.println(sg2.substring(0,5));//hello
//--------------------------------------------------------
//去除首尾空格
String sg3 = " h e l l o ";
System.out.println(sg3.trim());//h e l l o
//字符串替换(旧的字符串,新的字符串)
String sg4 = "helloabc";
System.out.println(sg4.replace("hello", "你好"));//你好abc
//去掉字符串中所有的空格,用空串替换空格
System.out.println(sg3.replace(" ", ""));//hello
//--------------------------------------------------------
//判断是不是java文件
String sg5 = "abc.java";
//是否以指定字符串结尾
System.out.println(sg5.endsWith("java"));//true
//是否以指定字符串开头
System.out.println(sg5.endsWith("abc"));//true
//--------------------------------------------------------
//比较字符串大小
String sg6 = "hello";
String sg7 = "abc";
//比较对象在比较的参数之前,返回负数,之后返回正数,相等返回0
System.out.println(sg6.compareTo(sg7));//7
System.out.println("xxx".compareTo("aaa"));//23
System.out.println("xxx".compareTo("xxx"));//0
//--------------------------------------------------------
//是否包含指定参数的字符串
System.out.println("hello".contains("ello"));//true
//把字符串转换成字符数组
char [] c = "hello".toCharArray();
System.out.println(Arrays.toString(c));//[h, e, l, l, o]
//分割,用参数分隔成数组
String [] strs = "aa bb cc dd ee ff".split(" ");
System.out.println(strs.length);
//遍历输出验证
for(String ss : strs){
System.out.println(ss);
}
}
}
StringBuffer类的方法
可变类
在字符串的值频繁更改时,用StringBuffer可以提高效率
package day18;
import java.util.Scanner;
public class TestStringBuffer {
public static void main(String[] args) {
StringBuffer sf = new StringBuffer();//空串16个字符大小的缓冲区
System.out.println(sf.capacity());
//超16会扩容,大约成倍
sf.append("hellllllllllllllllllllllllllllllllllllllllllllllo00000000000000000000000000000000000000000000000000000");
System.out.println(sf.capacity());
StringBuffer sf1 = new StringBuffer();//空串16个字符大小的缓冲区
System.out.println(sf1.capacity());//16
sf1.append("hell0");
//缩小缓冲数组大小
sf1.trimToSize();
System.out.println(sf1.capacity());//5
//可以自己设置缓冲数组容量的大小
StringBuffer sf2 = new StringBuffer(100);//给出最大值容量
System.out.println(sf2.capacity());//100
//append方法
StringBuffer sr = new StringBuffer("hello");//给出最大值容量
sr.append("tom");
System.out.println(sr);//hellotom
char [] c ={'a','b','c'};
//(字符数组,起始位置,几个字符)
sr.append(c,1,2);
System.out.println(sr);//hellotombc
//-------------------------------------------
//在指定的位置插入一个字符串
sr.insert(5, "您好");
System.out.println(sr);//hello您好tombc
//修改某个位置的字符
sr.setCharAt(5, '你');//
System.out.println(sr);//hello你好tombc
//删除指定位置的字符
sr.deleteCharAt(5);
System.out.println(sr);//hello好tombc
//删除某一部分字符序列【起始位置,终止位置)
sr.delete(6, 9);
System.out.println(sr);//hello好bc
//反转字符串
sr.reverse();
System.out.println(sr);//cb好olleh
//转换为String类型
String strr = sr.toString();
//String 转为StringBuffer
Scanner input = new Scanner(System.in);
System.out.println("输入一行字符串");
String str = input.next();
StringBuffer sff = new StringBuffer(str);
}
}
String ,StringBuffer,StringBuilder的区别:正则表达式用某种模式去匹配指定字符串的一种方式 优点:符号符号 描述
\D row 1 col 2
\d row 2 col 2
\W row 2 col 2
\w row 2 col 2
. 除了换行以外的任意字符 符号 描述
{n} row 1 col 2
{n,m} row 2 col 2
* row 2 col 2
+ row 2 col 2
? 除了换行以外的任意字符 语法定义正则表达式:Pattern.compile(regString)
表达式的模式
验证 package day18;
import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern;
/**正则表达式 */
public class Ex4 {
public static void main(String[] args) { //1.设置正则表达式 // Pattern p = Pattern.compile("[0-9]{6}"); // Pattern p = Pattern.compile("\\d{6}"); // //2.设置要验证的数据 // Matcher m = p.matcher("123456"); // //3.验证 // System.out.println(m.matches());
Pattern p = Pattern.compile("1\\d{10}"); Scanner input = new Scanner(System.in); System.out.println("请输入十一位的电话号码"); String tel = input.next(); Matcher m = p.matcher(tel); System.out.println(m.matches());
System.out.println("请输入密码:"); String passwd = input.next(); Pattern p1 = Pattern.compile("\\w{4,10}"); Matcher m1 = p1.matcher(passwd); System.out.println(m1.matches());
System.out.println("请输入用户名"); String name = input.next(); Pattern p2 = Pattern.compile("[a-zA-z][a-zA-Z0-9]{3,15}"); Matcher m2 = p2.matcher(name); System.out.println(m2.matches());
}
} 包装类拆箱,装箱八种基本数据类型 byte Byte char Character int Integer 装箱:基本数据类型包装成对象;基本数据类型 -》类类型 拆箱:把对象中的值取出;类类型 -》基本类型 Date类- API
文档中的大部分方法均已过时,不建议使用 - 日期格式应该使用SimpleDateFormat类;
- 提取时间分量的方法应该使用Calendar类package day18;
import java.security.Timestamp;
import java.sql.Date;
import java.sql.Time;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.NumberFormat;
public class TestDate {
public static void main(String[] args) {
//-----------------------父类java.util--------------------------
java.util.Date date = new java.util.Date();
System.out.println(date);
System.out.println(date.getTime());
// System.out.println(System.currentTimeMillis());
//记录当时的瞬间
java.util.Date date1 = new java.util.Date(1526978531991L);
System.out.println(date1);
//------------------子类java.sql------------------------------
Date d1 = new Date(date.getTime());
//将日期转换为字符串
String sd1 = d1.toString();
System.out.println(d1);//2018-05-22
System.out.println(sd1);//
//将字符串转换为date类型
d1 = Date.valueOf(sd1);
Time t1 = new Time(date.getTime());
System.out.println(t1);
// Timestamp tp1 = new Timestamp(date.getTime());
// System.out.println(tp1);
//--------------------格式化--------------------------
//数字
//NumberFormat
NumberFormat nf1 = NumberFormat.getInstance();//当前缺省的数字格式化方式进行格式化
System.out.println(nf1.format(12.234455));
nf1 = NumberFormat.getCurrencyInstance();//当前缺省的货币格式化方法
System.out.println(nf1.format(24.45645));
//子类DecimalFormat
DecimalFormat df1 = new DecimalFormat("00.00");
System.out.println(df1.format(4.45645));
//日期格式化
DateFormat f1 = DateFormat.getInstance();
System.out.println(f1.format(date));
DateFormat f2 = DateFormat.getDateInstance();//日期
System.out.println(f2.format(date));
f1 = DateFormat.getDateInstance(DateFormat.SHORT);//短日期形式
System.out.println(f1.format(date));
f1 = DateFormat.getDateInstance(DateFormat.MEDIUM);//中日期形式
System.out.println(f1.format(date));
f1 = DateFormat.getDateInstance(DateFormat.LONG);//长日期形式
System.out.println(f1.format(date));
f1 = DateFormat.getDateInstance(DateFormat.FULL);//完整日期形式
System.out.println(f1.format(date));
//时间实例
f1 = DateFormat.getTimeInstance();
System.out.println(f1.format(date));
//日期时间实例
f1= DateFormat.getDateTimeInstance();
System.out.println(f1.format(date));
f1= DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL);
System.out.println(f1.format(date));
}
}
|