当前位置:   article > 正文

常用API StringBuffer,StringBuilder_stringbuffer substring下标开始位置

stringbuffer substring下标开始位置

String

java.lang.String是字符串

1它的底层就是一个子字符数组,所以它的许多特性就是数组的特性

2字符串需要使用" "表示

3 为了提高字符串访问效率,提出了一个缓存机制,字符串常量池

 

基本使用

  1. package day_7_13API;
  2. /**
  3. *
  4. * java.lang.String是字符串类
  5. *
  6. *1它的底层就是一个子字符数组,所以它的许多特性就是数组的特性
  7. *
  8. *2字符串需要使用" "表示
  9. *
  10. *3 为了提高字符串访问效率,提出了一个缓存机制,字符串常量池
  11. *
  12. * @author 啊超
  13. * @Date 2021年7月13日
  14. */
  15. public class txt {
  16. public static void main(String[] args){
  17. //尽管没有new,但是s1依然代表String的对象,因为字符串常量池
  18. String s1="abc";
  19. //s1没有使用finall修饰,所以s1的值可以更改,只不过是让s1指向了bcd这个字符串对象,而abc这个对象没有更改
  20. s1="bcd";
  21. //第二部分
  22. String s2="Hello";
  23. String s3="Hello";
  24. String s4="hello";
  25. //s2和s3都指向常量池中的这个字符串对象,所以内存地址都相同
  26. System.out.println(s2==s3);
  27. //s4指向常量池中新的字符串对象,因为h和H是不一样的。
  28. System.out.println(s4==s3);
  29. System.out.println(s2.equals(s3));
  30. //第三种
  31. String s5=new String("abc");
  32. String s6=new String("abc");
  33. String s7="abc";
  34. //s5和s6是new的方式,所以分别指向各自的堆内存,这样用==肯定是 false
  35. System.out.println(s5==s6); //false
  36. System.out.println(s5==s7); //false
  37. //但是String类中覆写了equals方法,比较的是值,而不是内存地址
  38. //所以我们比较字符串是否相等的时候,应该使用rquals ,而不是==
  39. System.out.println(s5.equals(s6)); //true
  40. }
  41. }

不要频繁拼接

  1. package day_7_13API;
  2. /**
  3. * 因为String 一旦创建,字符串对象不可更改
  4. *
  5. * 尽量不要使用String进行大量的字符串拼接操作
  6. *
  7. * @author 啊超
  8. * @Date 2021年7月13日
  9. */
  10. public class String_02 {
  11. public static void main(String[] args){
  12. String[] arr={"a","b","c"};
  13. String temp ="";
  14. for(int i=0;i<arr.length;i++){
  15. //ab
  16. //abc
  17. temp+=arr[i];
  18. }
  19. System.out.println(temp);
  20. }
  21. }

构造方法

 

  1. package day_7_13API;
  2. /**
  3. *
  4. * 构造方法
  5. *
  6. * @author 啊超
  7. * @Date 2021年7月13日
  8. */
  9. public class String_3 {
  10. public static void main(String [] args){
  11. //1字面量
  12. String s1="abc";
  13. //s2
  14. String s2=new String("xxx");
  15. //3字节数组
  16. byte [] bytes={97,98,99,100,101,102};
  17. String s3=new String(bytes);
  18. //abcdef
  19. System.out.println(s3);
  20. //4截取字节数组一部分
  21. //下标为3开始的(包括3)取两个
  22. String s4=new String (bytes,3,2);
  23. System.out.println(s4); // de
  24. //5 字符数组
  25. char [] chars={'a','b','c','d','e'};
  26. String s5=new String (chars);
  27. System.out.println(s5);
  28. //6截取字符数组的一部分
  29. //下标2开始(包含)取两个
  30. String s6=new String(chars,2,2);
  31. System.out.println(s6); //cd
  32. }
  33. }

常用方法

  1. package day_7_13API;
  2. /**
  3. *
  4. * 常用方法
  5. *
  6. * @author 啊超
  7. * @Date 2021年7月13日
  8. */
  9. public class String_4 {
  10. public static void main(String[] args){
  11. String s1="querw";
  12. //1 char charAt(int index); 获取字符串中某个位置上的字符
  13. System.out.println(s1.charAt(2)); //e
  14. //2 boolean startsWith(String prefix);是否以指定字符串开始
  15. System.out.println("Hello ,world".startsWith("He")); //true
  16. //是否以指定字符串结尾
  17. System.out.println("Hello.java".endsWith("java")); //true
  18. //要注意空格,空格也算是字符串的
  19. //3 boolean equals(Object obj);比较两个字符串是否相等
  20. System.out.println("abc".equals("Abc")); //false
  21. //可以不区分大小写比较
  22. System.out.println("abc".equalsIgnoreCase("Abc")); //true
  23. System.out.println(1111); //划分
  24. //4byte[] getBytes();把字符串转换为 字节数组
  25. byte []bytes="abc".getBytes();
  26. for(byte b:bytes){
  27. System.out.println(b); //97,98,99
  28. }
  29. //5 char[] toCharArray();把字符串转为 字符数组
  30. char [] chars="abc".toCharArray();
  31. for( char c: chars){
  32. System.out.println(c);//a,b,c
  33. }
  34. //字节数组转换字符串; new String(bytes,起始值,个数);
  35. //字符串转字节数组 getBytes();
  36. //字符数组转字符串 new String(chars,起始值,个数);
  37. //字符串转字符数组 toCharArray();
  38. // 6 int indexOf(String str);获取字符串中,指定字符串的起始索引,找不到就返回-1
  39. System. out.println("abcdefghigklmn".indexOf("bc")); //1,这个1是找到的索引
  40. // 7 int lastIndexOf(String str);获取字符串中,指定字符串最后一次出现的索引,找不到返回-1
  41. System.out.println("abcdersfafaw".lastIndexOf("fa")); //9
  42. //8 int length();返回字符串的长度
  43. System.out.println("abc".length()); //3
  44. //9 String replaceAll(String regex,String replacement); 把指定字符串,用某个字符串代替
  45. //replace; 这个方法和replaceAll 几乎是一样的,只是replaceAll支持正则表达式,而replace不支持正则表达式
  46. //例如 1111 因为,在正则表达式中,可以匹配任意字符,所以把所有字符都替换为1
  47. System.out.println("abc.d.ate".replaceAll(".","1")); // 111111111 91 这里.是所有的符号
  48. //abuub,就是不识别正则表达式
  49. System.out.println("abc.da.ad".replace(".", "1")); //abc1da1ad
  50. System.out.println(22222);
  51. //10 String [] split(String regex) 分割字符串,需要指定分割符,返回字符串数组,支持正则表达式
  52. String mytime="2021,07,13";
  53. //以逗号分割,返回字符串数组
  54. String[] time=mytime.split(",");
  55. for(String string:time){
  56. System.out.println(string);//20170713
  57. }
  58. //11 String substring(int beginIndex);获取该字符串中,以某个下标为起始的子字符串(包含)
  59. //heyhrwy
  60. System.out.println("vuihwqu".substring(3)); //hwqu
  61. //12 String substring(int beginIndex,int endIndex);获取该字符串中,以某个下标为起始(包含)到指定位置
  62. //(不包含)
  63. //注意,起始包含,结束不包含
  64. System.out.println("abcdefg".substring(3,5)); //de
  65. //13 String trim() 去除字符串两边的空格
  66. System.out.println("a b c ".trim()); //a b c 只能去两边的空格,中间不不能去
  67. //14 转大小写
  68. System.out.println("abcdEFG".toUpperCase()); //ABCDEFG 大写
  69. System.out.println("abcdEFG".toLowerCase()); //abcdefg 小写
  70. //输出一个引用类型的时候,会自动调用该对象的toString方法
  71. Object obj=null;
  72. //当obj为null时,却不会出现空指针异常
  73. System.out.println(obj); //null
  74. //15 static String valueOf; 调用指定对象的toString方法,并且使用三目运算符屏蔽了空指针异常
  75. System.out.println(String.valueOf(obj)); //null
  76. }
  77. }
  1. package day_7_13API;
  2. public class String_6 {
  3. public static void main(String[] args){
  4. String s1="ab";
  5. String a="a";
  6. String b="b";
  7. //在编译阶段,就会把+号去掉,就等于是ab
  8. //所以使用==s1 和s2是相等的
  9. String s2="a"+"b";
  10. //编译阶段 是没有办法确定a和b的,因为还没有运行,空间还没有
  11. //最终还是会转换为StringBuffer进行拼接
  12. //拼接完后再转换为String类型,转换的时候是 new String ()进行转换的
  13. //所以s1 ==s3 false
  14. String s3=a+b;
  15. System.out.println(s1==s2);
  16. System.out.println(s1==s3);
  17. }
  18. }

注意

  1. package day_7_13API;
  2. public class String_6 {
  3. public static void main(String[] args){
  4. String s1="ab";
  5. String a="a";
  6. String b="b";
  7. //在编译阶段,就会把+号去掉,就等于是ab
  8. //所以使用==s1 和s2是相等的
  9. String s2="a"+"b";
  10. //编译阶段 是没有办法确定a和b的,因为还没有运行,空间还没有
  11. //最终还是会转换为StringBuffer进行拼接
  12. //拼接完后再转换为String类型,转换的时候是 new String ()进行转换的
  13. //所以s1 ==s3 false
  14. String s3=a+b;
  15. System.out.println(s1==s2);
  16. System.out.println(s1==s3);
  17. }
  18. }

  1.  StringBuffer和StringBuilder

  1. package day_7_13API;
  2. /**
  3. * StringBuffer和StringBuilder是什么
  4. * 是一个可变的字符串缓冲区,适合做拼接操作
  5. * 底层也是char数组,只不过默认长度是16,而字符串内容多少长度就是多少
  6. *
  7. * 先定义好长度,用来容纳更多的字符
  8. * 如果预留的空间长度不够,会进行自动扩充
  9. * 默认长度是16,扩大容量为(当前容量+1)*2,16-->34-->70
  10. *
  11. *
  12. * StringBuffer和 StringBuilder区别
  13. * StringBuffer; 非线性安全,在多线程环境下使用,可能出现问题,所以常用于方法
  14. * StringBuilder 线程安全,在多线程环境下使用,不会出现问题,所以常用于类中
  15. *
  16. * @author 啊超
  17. * @Date 2021年7月13日
  18. */
  19. public class String_5 {
  20. public static void main(String[] args){
  21. //创建字符串缓冲区
  22. StringBuilder sb=new StringBuilder();
  23. //尾部添加数据
  24. sb.append("a");
  25. sb.append("b");
  26. //reutrn this 所以可以链式调用
  27. sb.append("c").append("d"); //abcd
  28. System.out.println(sb);
  29. //1 反转 .reverse()
  30. System.out.println(sb.reverse()); //dcba
  31. //2 指定位置添加数据
  32. sb.insert(1,"2" );
  33. System.out.println(sb); //d2cba
  34. // 已有元素个数
  35. System.out.println(sb.length()); //5
  36. //3 当前数组的容量 。value.length .capacity
  37. System.out.println(sb.capacity()); //16
  38. //把sb 转换为String类型
  39. String s=sb.toString();
  40. }
  41. }

包装类

包装类 : 封装了基本数据类型的一些操作,更加方便使用
 * java中有8中基本数据类型
 *         byte          java.lang.Byte
 *         short          java.lang.Short
 *         int             java.lang.Integer
 *         long         java.lang.Long
 *         float          java.lang.Float
 *         double         java.lang.Double
 *         boolean      java.lang.Boolean
 *         char             java.lang.Character
 * 

使用

  1. public class Integer_01 {
  2. public static void main(String[] args) {
  3. // 基本类型
  4. byte b1 = 10;
  5. // 引用类型
  6. Byte b2 = new Byte(b1);
  7. m1(b2);
  8. }
  9. public static void m1(Object obj){
  10. // 由于 Byte Integer这些 都覆写toString方法,所以不是内存地址,而是值
  11. System.out.println(obj);
  12. }
  13. }

Integer

基本使用

  1. public class Integer_02 {
  2. public static void main(String[] args) {
  3. // 获取最大值和最小值
  4. System.out.println(Integer.MAX_VALUE);
  5. System.out.println(Integer.MIN_VALUE);
  6. System.out.println(Long.MAX_VALUE);
  7. System.out.println(Byte.MAX_VALUE);
  8. // 创建Integer类型的对象
  9. // 把基本类型转换为引用类型 int --> Integer
  10. Integer i1 = new Integer(10);
  11. // 把纯数字的字符串转换为Integer类型,必须是纯数字,因为是整数,所以小数点也不能有
  12. Integer i2 = new Integer("12");
  13. System.out.println(i1);
  14. System.out.println(i2);
  15. // 如果不是纯数字,会报错
  16. // java.lang.NumberFormatException: For input string: "2.3"
  17. Integer i3 = new Integer("2.3");
  18. }
  19. }

常用方法

 

 类型转换

  1. public class Integer_04 {
  2. public static void main(String[] args) {
  3. // 1 int --> Integer
  4. Integer i1 = Integer.valueOf(19);
  5. // 2 Integer --> int
  6. int i2 = i1.intValue();
  7. // 3 String --> Integer
  8. Integer i3 = Integer.valueOf("22");
  9. // 4 Integer --> String
  10. String i4 = i3.toString();
  11. // 5 int --> String
  12. String i5 = i2 + "";
  13. // 6 String --> int
  14. int i6 = Integer.parseInt(i5);
  15. }
  16. }

装箱和拆箱

  1. java1.5开始,引入了自动装箱和自动拆箱
  2. *
  3. * 自动装箱 : 把 基本类型 自动转换为对应的封装类类型 就是自动装箱
  4. *
  5. * 自动拆箱 : 把 包装类类型 自动转换为对应的基本类型 就是自动拆箱
  6. *
  7. * 装箱和拆箱是在编译阶段完成的
  1. public class Integer_05 {
  2. public static void main(String[] args) {
  3. // 1.5之前 这样写
  4. Integer i1 = Integer.valueOf(22);
  5. int i2 = i1.intValue();
  6. // 1.5开始 这样写
  7. Integer i3 = 22;// 编译后 自动转换为 Integer.valueOf(22);
  8. int i4 = i3; // 编译后 自动转换为 i3.intValue();
  9. // 先进行自动装箱为Integer类型,然后向上转型发生多态 为 Object 类型
  10. // 编译后转换为 m1(Integer.valueOf(3123));
  11. m1(3123);
  12. }
  13. public static void m1(Object obj){
  14. System.out.println(obj);
  15. }
  16. }

 整形常量池

 

 

 

 

System

System类提供的public static long currentTimeMillis()用来返回当前时 间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。

此方法适于计算时间差。

lSystem类代表系统,系统级的很多属性和控制方法都放置在该类的内部。 该类位于java.lang包。

l由于该类的构造器是private的,所以无法创建该类的对象,也就是无法实 例化该类。其内部的成员变量和成员方法都是static的,所以也可以很方便 的进行调用。

l成员变量

ØSystem类内部包含in、out和err三个成员变量,分别代表标准输入流

(键盘输入),标准输出流(显示器)和标准错误输出流(显示器)。

l成员方法

Ønative long currentTimeMillis():

该方法的作用是返回当前的计算机时间,时间的表达格式为当前计算机时

间和GMT时间(格林威治时间)1970年1月1号0时0分0秒所差的毫秒数。

Øvoid exit(int status):

该方法的作用是退出程序。其中status的值为0代表正常退出,非零代表

异常退出。使用该方法可以在图形界面编程中实现程序的退出功能等。

  1. public class System_01 {
  2. public static void main(String[] args) {
  3. // 计算时间差
  4. // currentTimeMillis : 获取当前系统时间对应的毫秒数
  5. long startTime = System.currentTimeMillis();
  6. System.out.println("正在执行");
  7. long endTime = System.currentTimeMillis();
  8. System.out.println("耗时 : "+(endTime-startTime));
  9. // 退出程序,0 表示正常退出
  10. // 一般用于图形界面 关闭窗口
  11. System.exit(0);
  12. // 执行不到
  13. System.out.println(222);
  14. }
  15. }

Date

时间类, 1970.1.1 8:00:00

构造方法

  1. package _03_Date;
  2. import java.util.Date;
  3. public class Date_01 {
  4. public static void main(String[] args) {
  5. // 无参 获取当前系统时间
  6. Date d1 = new Date();
  7. // 传入的是毫秒数,时间原点到指定毫秒数的时间
  8. Date d2 = new Date(1000);
  9. // Tue Jul 13 15:40:50 CST 2021
  10. System.out.println(d1);
  11. // Thu Jan 01 08:00:01 CST 1970
  12. System.out.println(d2);
  13. }
  14. }

时间格式化

  1. ublic class Date_02 {
  2. public static void main(String[] args) throws ParseException {
  3. // 获取当前系统时间
  4. Date d1 = new Date();
  5. /**
  6. * 年 y
  7. * 月 M
  8. * 日 d
  9. * 时 H
  10. * 分 m
  11. * 秒 s
  12. * 毫秒 S
  13. */
  14. // 创建时间格式化对象
  15. SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss SSS");
  16. // 格式化当前时间
  17. String strTime = sdf.format(d1);
  18. // 2021071315:46:01 324
  19. System.out.println(strTime);
  20. strTime = "2021年07月13日 15:46:01 324";
  21. Date d2 = sdf.parse(strTime);
  22. // Tue Jul 13 15:46:01 CST 2021
  23. System.out.println(d2);
  24. }
  25. }

日历

  1. public class Date_03 {
  2. public static void main(String[] args) {
  3. // 创建日历
  4. Calendar c = Calendar.getInstance();
  5. // 获取年
  6. int year = c.get(Calendar.YEAR);
  7. // 获取月 , 0 表示1月,以此类推
  8. int month = c.get(Calendar.MONTH)+1;
  9. // 获取日
  10. int day = c.get(Calendar.DAY_OF_MONTH);
  11. // 获取时 , HOUR_OF_DAY 24小时 HOUR 12小时
  12. int hour = c.get(Calendar.HOUR_OF_DAY);
  13. // 获取分
  14. int minute = c.get(Calendar.MINUTE);
  15. // 获取秒
  16. int second = c.get(Calendar.SECOND);
  17. // 获取星期 , 第一天是周日
  18. int weekday = c.get(Calendar.DAY_OF_WEEK);
  19. System.out.println(year);
  20. System.out.println(month);
  21. System.out.println(day);
  22. System.out.println(hour);
  23. System.out.println(minute);
  24. System.out.println(second);
  25. System.out.println(weekday);
  26. }
  27. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/322756
推荐阅读
相关标签
  

闽ICP备14008679号