1.String
基本数据类型(四类八种):不属于Object类型的继承体系之下
引用数据类型(字符串,数组,自定义类型):属于对象类型的继承体系之下。
String 字符串,引用数据类型 Object
什么是String
字符串,引用类型。(基本类型的变量存储的是数据,引用类型的变量存储的是数据的地址)
字符串对象。
String的特点:
-
字符串不可变
-
每一个字符串都是String类的实例对象
-
正是因为字符串是不可变的,所以字符串是共享的。
-
字符串的效果上相当于一个char[]数组,但是它的底层原理是byte[]字节数组。
创建字符串的2种常用方式 -
最常用的直接创建String str = “www”;
注意:直接使用双引号的就是字符串对象,没有new。 -
通过构造方法创建
String str = new String(“www”);
字符串常用方法
*
*@author:hzk
*/
public class Test3 {
public static void main(String[] args) {
String s = "王者荣耀里鲁班的峡谷中的被小兵打死的鲁班";
//获取字符串的长度
String s1 = " 123 452";
//拼接字符串
String s2 = s.concat(s1);
//System.out.println(s.length());
//System.out.println(s2);
//返回某位置的单个字符
//System.out.println(s.charAt(5));
//查找参数字符串首次出现的位置
//System.out.println(s.indexOf("小兵"));
//从后面查找参数字符串首次出现的位置
//System.out.println(s.lastIndexOf("鲁班"));
//从参数中截取一段
//System.out.println(s.substring(1,4));
//判断是否以某字符串结尾
//System.out.println(s.endsWith("鲁班"));
//判断是否以某字符串结尾
//System.out.println(s.startsWith("鲁班"));
//清楚左右两端空格
//System.out.println(s1.length());
//System.out.println(s1.trim().length());
//字符串以旧换新
System.out.println(s.replace("小兵","乐百"));
//按照参数的规则将字符串拆分成若干个,返回一个数组
String s3 = "123 456 789";
String[] s3Ary = s3.split(" ");
System.out.println(s3Ary[0]);
}
}
小结:
栈中存变量,new的对象在堆中,常量保存在常量池中。
String str1 = “123”,先去常量池中找"123"是否存在,如果存在则直接引用,不存在就创建。
“==”:用法
1.如果是基本数据类型:= =比较值(变量中的值)
2.如果是引用数据类型: = =比较变量中存储的数据的地址。如果比较内容则用equals方法
StringBuilder和StringBuffer
在java中字符串就是常量。就算对一个字符串进行操作,原来的字符串还是不会改变,只不过又生成了新的字符串。
我们做的对字符串的任何操作,都不会改变原有的字符串,但是会创建新的字符串对象。
stringBuilder是一个可变的字符序列。此类提供一个与stringBuffer兼容的API,但不保证同步。该类被设计用作StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候。如果可能,建议优先采用该类,因为在大多数实现中,它比StringBuffer要快。
/*
*author:hzk
*/
public class Test4 {
public static void main(String[] args) {
StringBuilder s = new StringBuilder("abc");
StringBuilder s1 = s.append("def");
System.out.println(s1);
s1.insert(1,"555");
System.out.println(s1);
StringBuffer s2 = new StringBuffer();
s2.append("xxxx");
s2.append("2222");
System.out.println(s2);
}
}
日期及格式化
y:代表年
M:代表月
d:代表日
E:代表星期
H:代表24进制的小时
h:代表12进制的小时
m:代表分钟
s:代表秒
S:代表毫秒
SimpleDateFormat类
功能:格式化和解析日期
1.将Date类型的日期格式化成我们需要的日期类型,一般是字符串类型
2.将字符串类的日期在转回来。
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test5 {
public static void main(String[] args) throws ParseException {
String startDate = "2018-9-15";
String endDate = "2022-1-20";
SimpleDateFormat zhuhua = new SimpleDateFormat("yyyy-MM-dd");
Date d1 = zhuhua.parse(startDate);
Date d2 = zhuhua.parse(endDate);
long day = (d2.getTime()-d1.getTime())/1000/60/60/24;
System.out.println(day);
}
}
jdk1.8之后的新增日期时间相关类