zoukankan      html  css  js  c++  java
  • day16

    java.lang.String类型:字符串类型
       1、String类型是final修饰,不能被继承的
       2、Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。
             简单的说,就是程序中的所有""构成的都是String的对象,只不过他们是字符串常量对象。
             比较特殊的空字符串常量对象:"",它的长度为0
       3、所有的 字符串都是常量;它们的值在创建之后不能更改。
             简单理解就是String对象是不可变的,一旦修改(拼接、截取、替换...)一定会产生新的字符串对象。
       4、因为 String 对象是不可变的,所以可以共享。
             字符串常量对象是共享的,存在字符串的常量池中。
             字符串常量池在JVM内存的哪个部分:
             JDK1.6:方法区
             JDK1.7:堆中单独开辟一块空间用于存储字符串的常量
             JDK1.8:从堆中又挪出来,挪到了“元空间”
       5、字符串对象中如何存储字符串的内容
             内部使用一个char[]数组来存储的
             "hello" -> {'h','e','l','l','o'}
          字符串对象不可变有很多原因:

         (1)value数组是final修饰的,无法创建新的value数组
         (2)String类型中没有提供修改value数组的元素的方法

    字符串的比较:
       (1)==比较地址
       (2)equals比较字符串内容

    字符串对象的创建:
       1、String str = "hello";
       2、String s2  = new String("hello");

    字符串的常用方法系列1:
       (1)int length():返回字符串对象的长度,其实就内部value数组的长度
       (2)String toUpperCase():把当前字符串中的字符转成大写,返回一个新的字符串对象
       (3)String toLowerCase():把当前字符串中的字符转成小写,返回一个新的字符串对象
       (4)字符串比较:boolean equals()  严格区分大小写
          boolean equalsIgnoreCase():不区分大小写
       (5)String trim():去掉前后空格 
       (6)String concat():完全等价于 +
       (7)判断字符串是否为空
          !"".equals(字符串)  非空
           "".equals(字符串)  空字符串

    字符串的常用方法系列之二:
     字符串与字符数组之间的转换:
       1、把字符数组 -> 字符串
            String(char[] arr):用整个数组构建字符串
            String(char[] arr, int start, int count):取arr[start]开始的count个字符构造字符串
        2、把字符串转成字符数组:
            char[] toCharArray()
     思想:
        String中用char[] value存
        toCharArray()复制了一个新数组,原因是保证字符串的不可变性
       3、取第几个字符
            charAt(index)

    String的常用方法系列三:
       编码与解码
          字符:给人看的
          字节:给机器识别
           所以在开发中,输出到“文件”,在网络中传输,都要把“字符”->"字节"
           如果对方接收到数据,从"文件”中读取,显示给用户看,又得“字节”-“字符”
       编码:把字符-->字节
       解码:把字节-->字符
       编码方式:GB2312,GBK,UTF-8,ISO8859-1
       编码的方法:
       byte[] getBytes():按照平台默认的字符编码
       byte[] getBytes(String charsetName) :按照指定的字符编码方式进行编码
       解码的方法:
       String(byte[] data):按照平台默认的字符编码
       String(byte[] data,String charsetName):按照指定的字符编码方式进行解码
       GBK:一个汉字对应2个字节
       UTF-8:一般一个汉字对应3个字节
       ASCII码表中的字符是在任意字符集中都兼容的,这些个只占1个字节

    String的常用方法系列之四:
        判断字符串是否以xx开头,结尾
        boolean startsWith(xx)
        boolean endsWith(xx)

    String的常用方法系列之五:
       在字符串中查找:
        (1)boolean contains(str):是否包含
        (2)int indexOf(str):如果存在就返回从左到右第一次出现的下标,否则返回-1
        (3)int lastIndexOf(str):如果存在就返回最后一次出现的下标,否则返回-1

    字符串的常用方法系列六:
        字符串的截取
        substring(起始下标)   [起始下标,最后]
        substring(起始下标,结束下标) [起始下标,结束下标)

    几个和正则相关的String方法:
       正则:不是Java的概念,在js等其他语言都有正则。
       正则表达式的目的是为了按照某个格式要求去匹配字符串
       1、boolean  matches(正则):判断当前字符串是否满足某种正则(规则)
       2、String replaceAll(正则,新值):把当前字符串中的复合这个“正则”部分替换为“新值”
       3、String replaceFirst(正则,新值):把当前字符串中的找到的第一个复合这个“正则”部分替换为“新值”
       4、String[] split(正则):按照要求进行拆分
     和正则无关的替换方法:
       (1)String replace(char oldChar, char newChar) :注意形参是char
       (2)String replace(CharSequence target, CharSequence replacement) :形参是字符虚列,就是字符串

    java.lang.String:对象不可变,一旦变就会有新对象
       字符串的兄弟类:可变字符序列
       java.lang.StringBuffer:线程安全的可变字符序列。旧的。效率相对低。
       java.lang.StringBuilder:线程不安全的可变字符序列。新的JDK1.5。效率更高
       StringBuffer和StringBuilder的API是完全兼容,即方法签名一样,不一定的是一个适用于单线程,一个在适用于多线程。
       StringBuffer和StringBuilder对象的创建必须通过new,和String的可以直接等于"xxx"不同
       StringBuffer和StringBuilder的方法:
       (1)append(xx):直接在value中修改,如果value长度不够了,会重写扩容为原来的2倍+2。默认的value长度为16
       (2)insert(int offset, xx):即在字符串缓冲区的[offset]开始插入xx。如果value长度不够,也会扩容。
       (3)delete(int start, int end):删除[start,end)
                deleteCharAt(int index):删除指定位置的字符
       (4)reverse() 
       (5)String toString()

    系统类java.lang.System:
       常量对象有三个
       (1)System.out:打印普通信息  PrintStream
       (2)System.err:打印错误信息  PrintStream
       (3)System.in:默认情况下,代表键盘输入 InputStream
        其他的方法:
       (1)System.currentTimeMillis():当前时间与协调世界时 1970 年 1 月 1 日午夜之间的时间差(以毫秒为单位测量)。
       (2)System.arraycopy(src, srcPos, dest, destPos, length):
                如果src和dest是不同的数组,表示复制,从srt的[srcPos]开始,一共复制length个到dest的[destPos]开始存。
                如果src和dest是同一个数组,表示移动元素:
                如果srcPos > destPos:左移              一般用于删除
                如果srcPos < destPos:右移  一般用于插入
         (3)System.gc():表示通知垃圾回收器来回收垃圾,但不是立马响应,但是只要调用了,一定会来。
             开发是不建议手动调用gc()方法,因为垃圾回收算法已经很好了。
       (4)System.exit(0):0表示正常退出
                System.exit(1):1表示异常退出
       (5)Properties getProperties() :获取系统属性 
                 ....
                String中内部用final char[] value;
                StringBuffer和StringBuilder的内部用:char[] toStringCache;

    ava.util.Calendar:日历类型
        它的子类:GregorianCalendar
        方法:
       (1) Calendar getInstance()
       (2)get(常量名)

    DK1.8之前:
     java.util.Date:
         类 Date 表示特定的瞬间,精确到毫秒。
         (1)new Date():获取系统时间
         (2)new Date(毫秒值):把毫秒转时间
         (3)long getTime():把时间转毫秒

    日期时间的格式化:
        1、把指定格式字符串转成日期时间对象
        2、把日期时间对象转成指定格式字符串
              java.text.DateFormat
              java.text.SimpleDateFormat 
         (1)Date parse(字符串)
         (2)String  format(Date的日期对象)

  • 相关阅读:
    基于JSP+SERVLET的新闻发布系统(三)
    linux date
    试论知识工作者的任务分析
    SRM 577 Div II Level Two: EllysRoomAssignmentsDiv2
    UNIX环境高级编程——TCP/IP网络编程
    是时候抛弃web.xml了?
    使用Spring Boot Actuator、Jolokia和Grafana实现准实时监控--转
    spring-security-oauth2注解详解
    一张图了解javaJwt
    nginx假死导致的问题回顾
  • 原文地址:https://www.cnblogs.com/zzz222zzz/p/11621441.html
Copyright © 2011-2022 走看看