2019-7-9 [JavaSE] String ,StringBuffer,StringBuilder比较 装箱和拆箱 日期类 正则
文章目录
- 1.StringBuffer类
- 方法:
- 利用StringBuffer开头与结束的时间计算:
- String ,StringBuffer,StringBuilder比较
- 2.装箱和拆箱
- 3.日期类
- 4.正则
- 验证一:
- 验证二: 用String的方法
- 5.编写:StringBuffer
- 6.编写:包装类 统计字符串中指定类型的个数
- 7.编写:正则
- 8.注意:
1.StringBuffer类
变长字符串序列。
扩容: int newCapacity = (value.length << 1) + 2;
数组扩容是到之前数据量的两倍
StringBuffer sr = new StringBuffer();
1. // 初始容量 16System.out.println(sr.capacity());// 16sr.append("hello");// "hello"System.out.println(sr.capacity());// 16sr.append("hellohellohellohello");System.out.println(sr.capacity());// 34
//-------------------------------------------------StringBuffer sr = new StringBuffer();System.out.println(sr);// /** 底层: char[] value;*/System.out.println(sr.capacity());// 16sr.append("hello");sr.append("hello");System.out.println(sr);//System.out.println(sr.capacity());// 16
2.// 减少空间大小为 存储的字符串个数。sr.trimToSize();System.out.println(sr.capacity());// 10
方法:
StringBuffer sr = new StringBuffer(1024);//添加
// 3. 字符串的末尾 追加新串sr.append("hello");System.out.println(sr);
// 4. 向参数一位置 插入一个字符串sr.insert(2, "你好");// "he你好llo"System.out.println(sr);// 修改
// 5. 修改指定位置的字符sr.setCharAt(2, '您');System.out.println(sr); // he您好llo// 删除
// 6. 删除指定位置的一个字符sr.deleteCharAt(2);System.out.println(sr);// he好llo
// 7 删除范围内的字符序列sr.delete(3, 5);System.out.println(sr);// he好o
// 8. 反转字符串sr.reverse();System.out.println(sr);// o好eh
利用StringBuffer开头与结束的时间计算:
public class TestStringBuffer5_exam {public static void main(String[] args) { long start = System.currentTimeMillis(); StringBuffer sf = new StringBuffer();for(int i = 1; i <= 10000; i ++) {sf.append(i);}long end = System.currentTimeMillis();System.out.println(end - start);}
}
String ,StringBuffer,StringBuilder比较
String:
表示一个字符串。
不可变类,定长。
频繁的修改字符串的字符序列,效率很低。
StringBuffer 和 StringBuilder
可变字符串类,变长。
StringBuffer :线程安全的。 synchronized同步。
StringBuilder : 线程非安全的。
2.装箱和拆箱
int n = 11;//装箱:把基本数据类型包装成对象Integer i = new Integer(n);i = Integer.valueOf(n);// 自动装箱 i = n; // Integer.valueOf(n);//* 整数类型: Byte,Short,Integer,Long : -128 到 127* 布尔: 全都缓冲。* 字符: 0 - 127//// 拆箱: 把对象中的数据取出来n = i.intValue();// 自动拆箱n = i;// i.intValue()----------------------判断-----------------------------------Integer i1 = 11;// int -> Integer 自动装箱 Integer.valueOf(11);Integer i2 = 11;System.out.println(i1 == i2);// true Integer i3 = 888;// int -> Integer 自动装箱 Integer.valueOf(888); new Integer(888)Integer i4 = 888;// new Integer(888)System.out.println(i3 == i4);// false ----------------------------------------------------------------// 转换// int -> String length()int num = 33;String str = num + ""; // 常用str = Integer.toString(num);str = String.valueOf(num);// int - > String ->StringBuffer num = Integer.parseInt(str);num = Integer.valueOf(str);// 进制System.out.println(Integer.toBinaryString(5));//101System.out.println(Integer.toOctalString(15));// 17System.out.println(Integer.toHexString(25));// 19System.out.println(Integer.valueOf("101", 2));// 5System.out.println(Integer.valueOf("17", 8));// 15System.out.println(Integer.valueOf("19", 16));// 25
3.日期类
大写H代表24小时,h代表12小时
---------------------Date 父类 java.util--------------------------------1// 获得系统的日期和时间System.out.println(System.currentTimeMillis());//毫秒 longjava.util.Date date = new java.util.Date();2// 创建了一个 系统的日期和时间类型System.out.println(date);// Tue Jul 09 15:55:01 CST 20193// 获得的是 当前系统日期和时间的毫秒值System.out.println(date.getTime());// long* Tue Jul 09 15:58:14 CST 201915626590945284// 封装某一个时刻java.util.Date date1 = new java.util.Date(1562659094528L);System.out.println(date1);//Tue Jul 09 15:58:14 CST 2019System.out.println(date1.getYear() + 1900);//2019System.out.println(date1.getMonth() + 1);//7System.out.println(date1.getDate());//9------------------------Date子类- java.sql------------------------------------5// 日期 Date---------------------------------------------Date dt1 = new Date(date.getTime());System.out.println(dt1); // 2019-07-096// 日期 -》 字符串String sdt = dt1.toString();7// 字符串 -》 日期dt1 = Date.valueOf(sdt);8// 时间-------------------------------------------Time time1 = new Time(date.getTime());System.out.println(time1);// 16:09:589// 时间 - 》 字符串String stime = time1.toString();10// 字符串 -》 时间time1 = Time.valueOf(stime);11// 时间戳 :日期+ 时间 -------------------------------------Timestamp stamp = new Timestamp(date.getTime());System.out.println(stamp);// 2019-07-09 16:11:54.191---------------------------Calendar 日历类------------------------------------12// 获得一个 实例(对象)Calendar c = Calendar.getInstance();13// 获得日历表示的当前的 系统日期时间System.out.println(c.getTime());// Tue Jul 09 16:16:31 CST 201914// 获得日期中的某一个部分System.out.println(c.get(Calendar.YEAR));// 2019System.out.println(c.get(Calendar.MONTH) + 1);// 6 + 1System.out.println(c.get(Calendar.DATE));// 9 15// 设置日期时间Calendar c1 = Calendar.getInstance();c1.set(2010, 5, 22);System.out.println(c1.getTime());// Tue Jun 22 16:21:33 CST 201016// 计算c1.add(Calendar.YEAR, 10); // 10年后 System.out.println(c1.getTime());// Mon Jun 22 16:23:14 CST 2020
----------------------------格式化--------------------------------------------17// 日期格式化 --------------------------------------------// Tue Jul 09 16:24:04 CST 2019System.out.println(date);18// DateFormatDateFormat df = DateFormat.getInstance();System.out.println(df.format(date));// 19-7-9 下午4:2819// SimpleDateFormat// 年 y 月 M 日 d 小时 h H 分 m 秒 s 毫秒 SSimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd hh小时mm分ss秒SSS毫秒");System.out.println(sdf.format(date));// 2019年07月09 04小时33分25秒879毫秒sdf = new SimpleDateFormat("yyyy-MM-dd H:mm:ss.SSS");System.out.println(sdf.format(date));// 2019-07-09 16:34:27.617// 数字 格式化--------------------------------------------20// NumberFormat ------
// NumberFormat format = NumberFormat.getInstance();
// System.out.println(format.format(35.4565757));// 35.457// // 0 一个数字 用0补位// # 不用补位DecimalFormat dformat = new DecimalFormat("00.00");System.out.println(dformat.format(55.547568));// 55.55System.out.println(dformat.format(5.5));// 05.50dformat = new DecimalFormat("##.##");System.out.println(dformat.format(5.5));
4.正则
正则表达式:是一个模式匹配的规则。
正则验证一:
定义正则表达式: Pattern.compile(regString,);
表达式的模式:Matcher matcher = ptn.matcher("需要匹配的数据");
验证:matcher.matches()
验证一:
// 6位数字
// [0-9]{6} \\d{6}
// 验证一:
Pattern p = Pattern.compile("\\d{6}");
Matcher m = p.matcher("123456");
System.out.println(m.matches());//
正则验证二:
验证二: 用String的方法
// 1. 数字
String s = "64565";//
System.out.println(s.matches("[0-9]+"));// 2. 分割
String s1 = "aa.bb.cc.dd.ee";
String [] strs = s1.split("\\.");
System.out.println(Arrays.toString(strs));//3. 去掉数字
String s3 = "43fld23sjfe45";
System.out.println(s3.replaceAll("[a-zA-Z]+", ""));
5.编写:StringBuffer
编写一个一直输入名称的,直到输入q为止
import java.util.Scanner;
public class TestStringBuffer4_exam {public static void main(String[] args) {String name;Scanner input = new Scanner(System.in);
// String sum = "";StringBuffer sf = new StringBuffer();while(true) {System.out.println("--输入名字:");name = input.next();if(name.equals("q")) {break;}
// sum += name;// sum = sum + name;sf.append(name);}System.out.println(sf);}
}
6.编写:包装类 统计字符串中指定类型的个数
public class TestCharacter_exam {public static void main(String[] args) {// 统计字符串中 空格 、字母、数字 的个数// String s = "af d 4565 222@@@";String s = "a b c 456@@@";// input.nextLine()char [] crs = s.toCharArray();int count1,count2,count3;count1 = count2 = count3 = 0;
法1: for(char cr : crs) {if(cr >= 'a' && cr <= 'z' || cr >= 'A' && cr <= 'Z') {count1 ++;}if(cr >= '0' && cr <= '9') {count2 ++;}if(cr == ' ') {count3 ++;}}
法2: for(char cr : crs) {if(Character.isUpperCase(cr) || Character.isLowerCase(cr)) {count1 ++;}if(Character.isDigit(cr)) {count2 ++;}if(Character.isWhitespace(cr)) {count3 ++;}}System.out.println("字母:" + count1 + ",数字" + count2 + ",空格" + count3);}
7.编写:正则
String s1 ="123456";
System.out.println(s1.matches("\\d{6}"));
String s2 ="13455646663";//
System.out.println(s2.matches("1{1}[0-9]{10}"));
String s3 ="asdfg12345";//
System.out.println(s3.matches("[a-zA-Z0-9]{4}[a-zA-Z0-9]{0,6}"));
String s4 ="asdfg12345";//
System.out.println(s4.matches("[a-zA-Z]{1}[a-zA-Z0-9]{3}[a-zA-Z0-9]{0,12}"));
8.注意:
1.数组扩容是到之前数据量的两倍
2.char最多能存储integer.maxvalue的量(int上限)
3.速度快选择StringBlind
4.
String s = “65464”;
System.out.println(s.matches("[0-9]+"));
有+就是true,没有就是false
2019-7-9 [JavaSE] String ,StringBuffer,StringBuilder比较 装箱和拆箱 日期类 正则相关推荐
- java第五弹 装箱和拆箱 常用类:Object类、String类、日期类
1.Object类 Object是所有java类的父类,它所属的包是java.lang.Object. 如果在类的声明的时候,没有显示的extends去继承谁,默认继承Object. Object类的 ...
- String,StringBuffer,StringBuilder三者的异同
String,StringBuffer,StringBuilder三者的异同:? String:不可变的字符序列;底层使用char[]存储(用final修饰) StringBuffer:可变的字符序列 ...
- 重温java中的String,StringBuffer,StringBuilder类
不论什么一个系统在开发的过程中, 相信都不会缺少对字符串的处理. 在 java 语言中, 用来处理字符串的的类经常使用的有 3 个: String.StringBuffer.StringBuilder ...
- 浅谈 Java 字符串(String, StringBuffer, StringBuilder)
我们先要记住三者的特征: String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 一.定义 查看 API 会发现,String ...
- String, StringBuffer, StringBuilder之间的区别
String与StringBuffer/StringBuilder之间的主要区别 1.String对象不可变, 如果修改会重新创建一个对象, 然后把值保存进去. StringBuffer/String ...
- java中 String StringBuffer StringBuilder的区别
* String类是不可变类,只要对String进行修改,都会导致新的对象生成. * StringBuffer和StringBuilder都是可变类,任何对字符串的改变都不会产生新的对象. 在实际使用 ...
- String, StringBuffer,StringBuilder
String, StringBuffer,StringBuilder的区别 java中String.StringBuffer.StringBuilder是编程中经常使用的字符串类,都实现了CharSe ...
- `java`学习笔记(十二)`Java`--`String``StringBuffer``StringBuilder`
Java–String&&StringBuffer&&StringBuilder 文章目录 `Java`--`String`&&`StringBuffe ...
- StringBuffer类,StringBuffer类和String的区别、String,StringBuffer,StringBuilder之间的区别
1.概述 StringBuffer是一个线程安全的可变序列. 2.StringBuffer与String区别 (1)StringBuffer的长度和内容都可以发生改变,String却不行 (2)Str ...
最新文章
- 技术总监需要会些什么?
- asp.net用url重写URLReWriter实现任意二级域名 (转)
- Activity启动过程剖析
- Unity 总裁 John Riccitiello 发话:VR足以匹敌互联网
- 关于 Delphi 中流的使用(10): 压缩与解压缩进度 - 回复 ilst 的问题
- 详细的mongo工具手册,包含常见CURD+条件操作+聚合+案例
- python3将列表当做堆栈使用
- win7系统备份还原软件_收藏备用!操作系统的快速备份与还原技巧
- Android之java.lang.OutOfMemoryError: Failed to allocate a ** byte allocation with **free bytes and 2M
- SimpleDateFormat详解
- python文件和数据的格式化_Python在文本文件中格式化特定数据
- python异步框架twisted_Python学习八十七天:使用异步的twisted框架写入数据
- 软硬计算机电缆的区别,电线也有软硬之分,两者有什么区别?
- 9025.计算机专业英语,计算机专业英语测试
- php 提取二维数组的key,PHP 获取二维数组中某个key的集合
- linux c++ 函数效率,Linux C++程序进行性能分析工具gprof使用入门
- SDWebImage常用方法及原理
- CSS属性之position
- 【资源】图深度学习文献列表
- 计数器控制的while循环(C++/python版)