String StringBuilder StringBuffer 包装类 Date 类 枚举类

String,StringBuilder,StringBuffer直接的区别是:
String 不可变长的字符序列
StringBuilder 可变长的字符序列,线程不安全的,效率较高
StringBuffer 可变长的字符序列,线程安全的,相对效率较低

执行效率: StringBuilder>StringBuffer>String

推荐使用:

  • String: 单线程,对字符串没有大量改变内容,灵活操作字符串推荐使用
  • StringBuilder:单线程,对字符串进行大量的改动操作,推荐使用StringBuilder
  • StringBuffer: 多线程,对字符串进行大量的改动操作,推荐使用StringBuffer

String

		String s=new String();
		System.out.println(s);//字符串可以被直接打印,对象和数组是不可以直接打印的
		System.out.println(s.length());  //字符串中字符的个数

String(char [ ] value) 参数字符串数组的内容创建字符串

char[] arr={'a','b','c','d','e'};

String(char [ ] value, int offset, int count)获取参数字符数组中的某一部分创建字符串对象

String s2=new String(arr,1,3);

字节数组转为字符->字符编码格式问题(字符集合)

		System.out.println("国".getBytes("UTF-8").length);
		byte[] bytes="火影忍者".getBytes();

String(byte[] bytes, String charsetName) 指定字符编码格式进行转换

System.out.println(new String(bytes,"GBK"));

String(byte[] bytes, int offset, int lengthe)

System.out.println(new String(bytes,6,6));

String常用的常用方法

public static void main(String[] args) {
		String s="heikoverygood";
		String s1="Heikotverygood";
		//索引
		System.out.println(s.charAt(8));
		//首位比较大小
		System.out.println(s.compareTo(s1));
		//字符串拼接
		System.out.println(s.concat(s1));
		//指定字符串是否是
		System.out.println(s.contains("heik"));
		//是否指定后缀结束
		System.out.println(s.endsWith("good1"));
		//是否指定前缀开始
		System.out.println(s.startsWith("he"));
		System.out.println("---------------");
		char []arr=new char[4];
		s.getChars(5, 9, arr, 0);//从第5个字符到第9个字符抽取到char这个数组上
		System.out.println(arr);
		// int indexOf(int ch) 返回指定字符在此字符串中第一次出现处的索引
		System.out.println(s.indexOf("eiko",1));
		System.out.println(s.lastIndexOf("v"));
		//将e换成其他字母
		System.out.println(s.replace("e", "E"));
		System.out.println(s);
		//根据指定分隔符分隔字符串
		System.out.println(Arrays.toString(s.split("i")));
		//截取第3-6个字符
		System.out.println(s.substring(3,6));
		//字符串变字符数组
		System.out.println(Arrays.toString(s.toCharArray()));
		//转成大写
		System.out.println(s.toUpperCase());
		//去除前后空格
		System.out.println("    哈哈哈哈哈   ".trim());
		//参数转换成字符串
		System.out.println(String.valueOf(123));
	}

StringBuilder 常用方法

public static void main(String[] args) {
		//StringBuilder() 默认构建初始容量为16个大小
		StringBuilder sb=new StringBuilder();
		//容量大小
		System.out.println(sb.capacity());
		//sb.append(false) 追加
		StringBuilder sb2=sb.append(false);
		System.out.println(sb==sb2);
		sb.append("abcd");
		System.out.println(sb);
		//删除5-8位的字符
		sb.delete(5, 8);
		System.out.println(sb);
		//第5位插入"Yes"
		sb.insert(5, "Yes");
		System.out.println(sb);
		//前后字符反转,顺序颠倒
		sb.reverse();
		System.out.println(sb);
		//返回一个字符串,表示这个序列中的数据。 
		System.out.println(sb.toString());
	}

包装类

int 的包装类是 Integer
char 的包装类是 Character
转换问题: 自动拆装箱
自动装箱: 从基本类型—>包装类型
自动拆箱: 从包装类型—>基本类型

有了int为什么包装类型Integer?

  1. Integer类,类中提供很多功能,可以灵活操作数据
  2. 容器等内部只能存储引用数据类型的数据,自动装箱使用可以的非常灵活
  3. 从数据库中拿到的数据库

有了Integer为什么还要int??
引用数据类型存储对象类型数据,new的数据在堆中,对象数据比较消耗资源,考虑效率问题使用基本数据类型更合适

Date 类

类Date代表一个特定的瞬间,毫秒精度; java.util.Date 包下的日期类

public static void main(String[] args) throws ParseException {
		Date date=new Date();
		System.out.println(date);
		//获得毫秒
		long l=date.getTime();
		System.out.println(l);
		
		Date date2=new Date(1578643898755L);
		System.out.println(date2);
		
		System.out.println(date.before(date2));
		System.out.println(date.toString());
		System.out.println("-------------------------------");
		//日期格式转换
		SimpleDateFormat Simple=new SimpleDateFormat();
		SimpleDateFormat simple2=new SimpleDateFormat("yyyy年MM月dd日 E a hh:mm:ss");
		Date date3=new Date();
		//format(Date) 日期对象转为字符串
		System.out.println(simple2.format(date3));
		//parse(String) 字符串转为日期对象
		Date s=simple2.parse("2020年01月10日 星期五 下午 04:35:29");
		System.out.println(s);
	}
控制台:
Fri Jan 10 20:25:57 CST 2020
1578659157249
Fri Jan 10 16:11:38 CST 2020
false
Fri Jan 10 20:25:57 CST 2020
-------------------------------
20200110日 星期五 下午 08:25:57
Fri Jan 10 16:35:29 CST 2020

其中H代表24小时制的小时, M代表月份, S代表毫秒

枚举类

枚举类: 定义一种事物的所有可能
java所有中的枚举类都隐式的继承自java.lang.Enum
定义枚举类,不适用class,使用enum关键字定义
枚举类中的字段,相当于当前枚举类型的一个实例
枚举类中的字段,相当于class类中被 public static final修饰

import java.util.Arrays;

public class EnumDemo001 {

	public static void main(String[] args) {
		Week w=Week.SUNDAY;
		System.out.println(w.name());//获取枚举类型引用存储的枚举字段值
		System.out.println(w.ordinal());//枚举类中的字段索引位置
		//获取枚举中所有的字段值,返回一个数组
		Week [] arr=w.values();
		System.out.println(Arrays.toString(arr));//需要导包
			
		switch(w){//switch可以使用枚举
			case MONDAY:
				System.out.println("星期一");
				break;
			case  TUESDAY:
				System.out.println("星期二");
				break;
			case  SUNDAY:
				System.out.println("星期天");
				break;	
		}
			
		
	}

}
enum Week{
	MONDAY,TUESDAY,SUNDAY;//也可以竖着写
}

控制台:
SUNDAY
2
[MONDAY, TUESDAY, SUNDAY]
星期天
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值