文章目录

  • 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比较 装箱和拆箱 日期类 正则相关推荐

  1. java第五弹 装箱和拆箱 常用类:Object类、String类、日期类

    1.Object类 Object是所有java类的父类,它所属的包是java.lang.Object. 如果在类的声明的时候,没有显示的extends去继承谁,默认继承Object. Object类的 ...

  2. String,StringBuffer,StringBuilder三者的异同

    String,StringBuffer,StringBuilder三者的异同:? String:不可变的字符序列;底层使用char[]存储(用final修饰) StringBuffer:可变的字符序列 ...

  3. 重温java中的String,StringBuffer,StringBuilder类

    不论什么一个系统在开发的过程中, 相信都不会缺少对字符串的处理. 在 java 语言中, 用来处理字符串的的类经常使用的有 3 个: String.StringBuffer.StringBuilder ...

  4. 浅谈 Java 字符串(String, StringBuffer, StringBuilder)

    我们先要记住三者的特征: String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 一.定义 查看 API 会发现,String ...

  5. String, StringBuffer, StringBuilder之间的区别

    String与StringBuffer/StringBuilder之间的主要区别 1.String对象不可变, 如果修改会重新创建一个对象, 然后把值保存进去. StringBuffer/String ...

  6. java中 String StringBuffer StringBuilder的区别

    * String类是不可变类,只要对String进行修改,都会导致新的对象生成. * StringBuffer和StringBuilder都是可变类,任何对字符串的改变都不会产生新的对象. 在实际使用 ...

  7. String, StringBuffer,StringBuilder

    String, StringBuffer,StringBuilder的区别 java中String.StringBuffer.StringBuilder是编程中经常使用的字符串类,都实现了CharSe ...

  8. `java`学习笔记(十二)`Java`--`String``StringBuffer``StringBuilder`

    Java–String&&StringBuffer&&StringBuilder 文章目录 `Java`--`String`&&`StringBuffe ...

  9. StringBuffer类,StringBuffer类和String的区别、String,StringBuffer,StringBuilder之间的区别

    1.概述 StringBuffer是一个线程安全的可变序列. 2.StringBuffer与String区别 (1)StringBuffer的长度和内容都可以发生改变,String却不行 (2)Str ...

最新文章

  1. 技术总监需要会些什么?
  2. asp.net用url重写URLReWriter实现任意二级域名 (转)
  3. Activity启动过程剖析
  4. Unity 总裁 John Riccitiello 发话:VR足以匹敌互联网
  5. 关于 Delphi 中流的使用(10): 压缩与解压缩进度 - 回复 ilst 的问题
  6. 详细的mongo工具手册,包含常见CURD+条件操作+聚合+案例
  7. python3将列表当做堆栈使用
  8. win7系统备份还原软件_收藏备用!操作系统的快速备份与还原技巧
  9. Android之java.lang.OutOfMemoryError: Failed to allocate a ** byte allocation with **free bytes and 2M
  10. SimpleDateFormat详解
  11. python文件和数据的格式化_Python在文本文件中格式化特定数据
  12. python异步框架twisted_Python学习八十七天:使用异步的twisted框架写入数据
  13. 软硬计算机电缆的区别,电线也有软硬之分,两者有什么区别?
  14. 9025.计算机专业英语,计算机专业英语测试
  15. php 提取二维数组的key,PHP 获取二维数组中某个key的集合
  16. linux c++ 函数效率,Linux C++程序进行性能分析工具gprof使用入门
  17. SDWebImage常用方法及原理
  18. CSS属性之position
  19. 【资源】图深度学习文献列表
  20. 计数器控制的while循环(C++/python版)

热门文章

  1. 初始化css样式代码、颜色、字体、浮动与清除浮动、显示、定位、盒子模型、按钮禁用、CSS画圆半圆扇形三角梯形
  2. Steam客户端更新:Linux增加2倍缩放模式,支持Windows 10的HiDPI
  3. java 无参构造函数的作用
  4. 白帽子的自我修养之Web安全入门级笔记02——安全漏洞分类
  5. JavaSE部分(集合上)
  6. First Step (ファーストステップ)
  7. 【java】反射机制
  8. TortoiseSVN设置忽略文件和目录文件夹
  9. sqlserver中dateadd函数用法
  10. zabbix监控服务器性能,使用zabbix监控apache性能