字符串 String
String 类 应用类型 默认值为null
声明字符串
字符串的拼接:"+"在拼接字符串和数字运算时优先级是一样的,字符串和所有的类型相加(+)后得到的都是字符串
str="123"+new Object();//123+这个对象的toString方法的结果
字符串比较
使用equals方法比较字符串
boolean bool="123".equals("123");//true
String类型中的常用方法:valueOf--将传入的参数转成字符串
String.valueOf('1'); String.valueOf(new Object()); String.valueOf(""); String.valueOf("null");
查找字串出现的位置(index) 找不到返回-1
int index="123456".indexOf("34"); System.out.println(index); index="123123123".indexOf("1");//0 System.out.println(index); index="123123123".lastIndexOf("1");//6 System.out.println(index);
获取指定位置的字符
char item="123456".charAt(4);//'5' System.out.println(item);
截取字符串
str="123456".substring(1); System.out.println(str); //包含开始下标,不包含结束下标 str="123456".substring(3, 5); System.out.println(str);
替换
str="12345634".replace("34", "nb"); System.out.println(str); str="123123".replaceAll("12","a"); System.out.println(str);
分割字符串
String[] strArr="123123123".split("1"); System.out.println(Arrays.toString(strArr)); strArr="12312312311".split("1"); System.out.println(Arrays.toString(strArr));
字符串长度:length()
int l="123123".length(); System.out.println(l); for(int i=0;i<str.length();i++) { }
trim 去除"前后"空白位
空白位:空格 \n \r \t
String strC="\n \r \t \n \r 12 3"; System.out.println(strC); System.out.println("----------------"); System.out.println(strC.trim());
大写 小写 (针对字母)
str="123abc".toUpperCase();//转成大写 System.out.println(str); str="123ABCabc".toLowerCase(); System.out.println(str);
判断是否是空串
bool="123".isEmpty();//是空返回true,非空返回false System.out.println(bool); if(!str.isEmpty()) { //str中有内容就执行此代码 } "123456".startsWith("1");//true "123456".endsWith("65");//false } public static void test(String str) { System.out.println("string"); } public static void test(Object obj) { System.out.println(); }
String 对象 定义后就不可改变 常量 private final修饰value数组
字符串常量池 池 容器 重用
字符串怎样加入到常量池中---使用量的方式声明的字符串就会加入到常量池中
int a=12; String str="abc"; Integer.valueOf("23"); char[] arr= {'a','b','c'}; str=new String(arr);
程序中第一次使用量的形式定义"123",会将这个字符串对象存入字符串常量当中
之后再使用量的形式使用该对象,就执行使用常量池中的对象
String strA="123"; String strB="123"; System.out.println(strA==strB);//true String strC=new String("123"); String strD=new String("123"); System.out.println(strA==strC);//false System.out.println(strC==strD);//false String strE="12"+"3";//"123" String strF="1"+"2"+"3";//"123" String item="12"; String strG=item+"3";//item为变量 String strGG=item+3; System.out.println((strG==strGG)+"---------"); //str()+"3" String strH="12"+3; System.out.println(strA==strE);//true System.out.println(strA==strF);//true System.out.println(strE==strF);//true System.out.println(strA==strG);//false System.out.println(strA==strH);//true System.out.println(strC==strG);//false final String aa="12"; String strI=aa+"3"; System.out.println(strA==strI);//true final String bb=new String("12"); String strJ=bb+"3"; System.out.println(strA==strJ);//false String strK=aa+"3";
intern
str.intern();
返回 str对象在字符串常量池中的副本对象 作用:检查str是否在字符串常量池中存在副本,如果不存在就复制一份存入到常量池中 然后返回常量池中的副本对象 如果已经存在副本对象,则直接返回副本对象 所以 两个字符串 equals为true 那么两个字符串的intern方法相等
System.out.println(str.intern()); strA=new String("123123"); strB=new String("123123"); System.out.println(strA.equals(strB));//true System.out.println(strA==strB);//false System.out.println(strA.intern()==strB.intern());//true
String 字符串定义后就不可改变 存在于常量池中
在拼接字符串时不要产生中间串 StringBuilder StringBuffer0
StringBuilder strB=new StringBuilder(); strB.append("123"); strB.append("abc"); strB.append("456");
调用append 往StringBuilder数组中追加字符
StringBuffer线程安全的
System.arraycopy(src, srcPos, dest, destPos, length);
long类型表示时间 1970-1-1 00:00:00 000
时间类型 Date
获取当前时间 --执行时
Date date=new Date(); System.out.println(date); long time=date.getTime(); System.out.println(time); time=time+2*24*60*60*1000; date=new Date(time); System.out.println(date);
时间格式化
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS"); String sdfStr=sdf.format(date); System.out.println(sdfStr); LocalDateTime ldt=LocalDateTime.now();//不记录时区 ZonedDateTime zdt=ZonedDateTime.now();//记录时区 Object obj=zdt.getZone(); System.out.println(obj);
随机数
double ran=Math.random();//[0,1)之间的随机数 double ranNum=ran*82+8; Random ranObj=new Random(); Random ranObjN=new Random(); int a=ranObj.nextInt(); int b=ranObjN.nextInt(); System.out.println(a+"======"+b); a=ranObj.nextInt(); b=ranObjN.nextInt(); System.out.println(a+"======"+b);
取整
ranNum=12.5;
//四舍五入
long num=Math.round(ranNum);//13 System.out.println(num); int intNum=Math.round(12.33f); System.out.println(intNum);
//向上取整
double ceilNum=Math.ceil(ranNum);//13 System.out.println(ceilNum);
//向下取整
double floorNum=Math.floor(ranNum);//12 System.out.println(floorNum);