常用类
String : 不可变长的字符序列
StringBuilder :可变长的字符序列
StringBuffer : 可变长的字符序列
String:字符串
String str=new String("abc");
String str2="abc"; //重新赋值
/在给str2重新赋值的时候,相当于重新创建了一个对象
System.out.println(str==str2);//false
System.out.println(str.equals(str2));//true,只比较内容
s1.length()//字符串中字符数组
String name="java程序员"; //字符串对象 "字符串字面常量值"
byte[] bs=name.getBytes(); //默认utf-8字符编码格式
System.out.println(Arrays.toString(bs));//[-27, -101, -96, -28, -72, -70]
//String(byte[] bytes) 根据参数字节数组,构建字符串
String s2=new String(bs);
//String(byte[] bytes, int offset, int length)
String s3=new String(bs,3,3);
System.out.println(s3);
/*
* String(byte[] bytes, int offset, int length, String charsetName)
通过使用指定的字符集解码指定的 byte 子数组,构造一个新的 String。
String(byte[] bytes, String charsetName)
通过使用指定的 charset 解码指定的 byte 数组,构造一个新的 String
*/
bs=name.getBytes("gbk");
System.out.println(Arrays.toString(bs));
System.out.println(new String(bs,"gbk"));
/*
* String(char[] value)
分配一个新的 String,使其表示字符数组参数中当前包含的字符序列。
String(char[] value, int offset, int count)
分配一个新的 String,它包含取自字符数组参数一个子数组的字符。
*/
char[] ch={'s','h','s','x','t'};
System.out.println(new String(ch));
System.out.println(new String(ch,2,3));
String str="shsxtverygood";
String str1="Shsxtverygood";
/*
* *** char charAt(int index) 返回指定索引处的 char 值。
*/
System.out.println("charAt():"+str.charAt(3));
//***String concat(String str) 将指定字符串连接到此字符串的结尾。
System.out.println("concat():"+str.concat(str1));
/*
* boolean endsWith(String suffix) 测试此字符串是否以指定的后缀结束。
boolean startsWith(String prefix) 测试此字符串是否以指定的前缀开始。
*/
System.out.println("startsWith():"+str.startsWith("shsxt"));
/*
* ***String replace(char oldChar, char newChar)
*/
System.out.println("replace():"+str.replace("s","S"));
/*
* ***String[] split(String regex)
*/
String str2="name=zhangsan";
System.out.println(Arrays.toString(str2.split("=")));
/*
* *** String toLowerCase() 转小写
* String toUpperCase() 转小写
*/
System.out.println("toUpperCase():"+str1.toUpperCase());
/*
* *** trim() 去收尾空格
*/
String str3=" 哈哈 ";
System.out.println("trim():"+str3.trim());
StringBuilder: 线程不安全的,相对效率高
StringBuffer : 线程安全的,相对效率低
//StringBuilder() 默认初始容量为16
StringBuilder sb=new StringBuilder();
//int capacity() 初始容量
System.out.println(sb.capacity());
//StringBuilder(CharSequence seq)
StringBuilder sb2=new StringBuilder("abc"); //str.length() + 16
//StringBuilder(int capacity)
System.out.println(new StringBuilder(30).capacity());//容量30
//append(内容) 追加
StringBuilder ss=sb2.append(true);
//StringBuilder delete(int start, int end)
ss=sb2.delete(2, 5);//不包括5
//StringBuilder reverse() 翻转
ss=sb2.reverse();
包装类
基本数据类型的包装类:
基本数据类型----> 引用数据类型
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character
自动拆装箱
自动装箱:从基本数据类型到引用数据类型
自动拆箱:从包装类型到基本数据类型
int i=10; //基本数据类型
Integer in1=i; //自动装箱 Integer.valueOf(i);
System.out.println(3+in1); //自动拆箱
int i2=in1; //自动拆箱 in1.intValue()
1.基本数据类型与对象的包装类型的数据比较,只要值相同,无论是否new都相等,因为会发生自动拆箱
2.两个new肯定不相等,因为两个地址
3.Integer和new Integer肯定不相等,一位一个是在堆中
4.如果两个Integer对象比较,在奇范围内 -128~127之间就相等,缓冲区对象,否则范围new
Integer i1=101; //常量池
Integer i2=101;
Integer i3=128;
Integer i4=128;
Integer i5=new Integer(101); //堆
Integer i6=new Integer(101); //堆
int i=101;
System.out.println(i1==i2); //true
System.out.println(i3==i4); //false
System.out.println(i1==i5); //false
System.out.println(i6==i5); //false
System.out.println(i==i1); //true
System.out.println(i==i5); //true
日期类
Date 日期类 类 Date 表示特定的瞬间,精确到毫秒。
//Date() 当前时间
Date date=new Date();
System.out.println(date);
//Date(long) 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。
Date date2=new Date(1572249000424L);
System.out.println(date2);
// long getTime() 毫秒数
System.out.println(date.getTime());
//date.setTime(1572249000424L);
//System.out.println(date);
//toString
System.out.println(date.toString());
System.out.println(date.toLocaleString());
//after
System.out.println(date.after(date2));
日期格式转换类 SimpleDateFormat
字符串转为日期对象
Date parse(“字符串”) 字符串转为日期对象
日期对象转为字符串
String format(date) 日期对象转为字符串
SimpleDateFormat() 空构造 以默认格式进行转换
Date date=new Date();
SimpleDateFormat simple=new SimpleDateFormat(); //19-10-28 下午4:00
String str=simple.format(date);
Date d=simple.parse("2020-10-10 下午4:00");
System.out.println(d);
SimpleDateFormat simple2=new SimpleDateFormat("yyyy年MM月dd日 E hh:mm:ss SSS");
System.out.println(simple2.format(date));
y 年,M 月, d 日,H 时, m 分,s 秒,S 毫秒
枚举类
枚举类: 一种事物的所有可能,所有情况
- enum 定义枚举
- 只要是枚举类都会隐式的继承自java.lang.包下的enum
- 枚举类中的成员,都是该类的一个实例,默认修饰符为public static final
enum Week{
Mon,Thues,Sun; //枚举类中的成员
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void test(){
System.out.println(name+"haha");
}
}
异常
自定义异常:
不是java提供的异常类,根据自己的逻辑业务进行定义,合理的地方使用
//自定义异常类
//直接或者间接的继承自Exception
//运行时异常必须直接或者间接继承自RuntimeException
//当出现年龄不合法问题(<0||>150),会抛出这个异常
class AgeException extends RuntimeException{
public AgeException() {
super();
}
public AgeException(String s) {
super(s);
}
}