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?
- Integer类,类中提供很多功能,可以灵活操作数据
- 容器等内部只能存储引用数据类型的数据,自动装箱使用可以的非常灵活
- 从数据库中拿到的数据库
有了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
-------------------------------
2020年01月10日 星期五 下午 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]
星期天
String StringBuilder StringBuffer 包装类 Date 类 枚举类相关推荐
- String StringBuilder StringBuffer
1,String 是不可变类 immutable 不可变类:所谓的不可变类是指这个类的实例一旦创建完成后,就不能改变其成员变量值.如JDK内部自带的很多不可变类:八大包装类和String等. ...
- String StringBuilder StringBuffer三者之间的区别~~~
String StringBuilder StringBuffer三者之间的区别~~~ String是字符串常量,它是典型的immutable类,被声明final class,所有的属性都是fina ...
- String ,StringBuilder,StringBuffer的区分
String ,StringBuilder,StringBuffer的区分 一.区别 String是字符串常量,而StringBuffer和StringBuilder是字符串变量.由String创建的 ...
- Java 集合 --- String, StringBuilder, StringBuffer
Java 集合 --- String, StringBuilder, StringBuffer String String的声明方式 String的不可变性 对比两个String StringBuil ...
- String,Stringbuilder,Stringbuffer及正则表达式
掌握String StringBuilder StringBuffer类的区别 一.String String是不可变类,一旦String对象被创建之后,包含对象中的字符串序列都是不可改变的,直到类被 ...
- String , StringBuilder , StringBuffer
String 首先从String底层看起 从底层代码被final修饰,我们能看出来,String是只读字符串,他的成员方法也都默认为final方法.所以String所引用的字符串内容不能被改变 Str ...
- stringbuffer常用方法_Java 处理字符串常用的类:String StringBuilder StringBuffer
在Android/Java开发中,用来处理字符串常用的类有3种: String.StringBuilder.StringBuffer. 它们的异同点: 1) 都是 final 类, 都不允许被继承; ...
- String StringBuilder StringBuffer 对比 总结得非常好
转自:http://www.iteye.com/topic/522167 作者:每次上网冲杯Java时,都能看到关于String无休无止的争论.还是觉得有必要让这个讨厌又很可爱的String美眉,赤裸 ...
- String Stringbuilder StringBuffer的区别和应用
1.可变与不可变 1) String类中使用字符串数组来保存字符串.因为有final修饰,所以,String对象是不可变的 private final char vakue[]; 2) StringB ...
最新文章
- js 连接mysql_JS连接数据库
- php输入流php://input的使用分析
- Django处理MySQL事物的用法
- 软件架构设计——软件架构风格
- numpy - np.reshape:将二维数组转变三维数组
- 【并查集】亲戚(Relations)
- 软考资料(系统集成管理工程师)无偿分享
- 聊聊SEO与生意的关系,顺带说说百度快照功能下线原因及影响有哪些?
- Home Assistant 家庭助理安装
- 《GAMES203:三维重建和理解》1 三维视觉(3D Vision)介绍
- 面试题:深拷贝和浅拷贝(超级详细,有内存图)
- 他山之石 | 小米小爱Query识别
- 【Week 1】Preferences and Ratings
- shuipFCMS收集2
- XCode 报错Thread 2:signal SIGABRT
- 测试职业规划之知识点总结
- termux安装以及基本配置
- STM32F103C8T6引脚图及引脚功能说明
- 中国联通联合openGauss开源社区启动数据库自主创新
- 关掉Windows10的计划自动重启行之有效的方法
热门文章
- 小强说话---子曾经曰过的
- The type java.lang.String cannot be resolved. It is indirectly referenced from required .class files
- 数据分析1——系统认识数据分析
- 项目中Swagger2、lombok(小辣椒)、以及短信API的调用 简单介绍
- 使用透明数据加密(TDE)来保护数据库
- java 判断当前时间是月初还是月末 和 指定日期月初月末
- 《数据访问 - 第01章 文件 - 文件和流的概念》
- hdu5445 Food Problem(背包)
- 什么是懒惰的苏珊(Lazy Susan)
- win8全角/半角切换