首页 > 编程语言 >Java SE 宋红康 days03-高级篇-常用类

Java SE 宋红康 days03-高级篇-常用类

时间:2022-10-01 20:57:46浏览次数:49  
标签:Comparable Java String 接口 char days03 字符串 宋红康 常量

1. String 字符串

  String 声明为 final 的,不可被继承

  实现了 Serializable 接口:表示字符串是支持序列化的;实现了 Comparable 接口:表示 String 可以比较大小

  String 内部定义了 final char[ ] value,用于存储字符串数据;

  String 代表不可变的字符序列,简称不可变性

    a. 当字符串重新赋值时,需要重写指定内存区域赋值,不能使用原有的 Value 进行赋值; 

    b. 当对现有的字符串进行连接操作时,也需要重新指定内存区域赋值,不能使用原有的 Value 进行赋值;

    c. 当调用 String 的 replace() 方法修改指定字符或字符串时,也需要重新指定内存区域赋值

  注:通过字面量(a = “xxx”)的方式(区别于new)给一个字符串赋值,此时的字符串值声明在字符串常量池里;

    字符串常量池中是不会存储相同内容的字符串的;

2. String 的实例化方式:

  方式一:通过字面量定义的方式(数据生命在方法区中的字符串常量池中)

  方式二:通过 new + 构造器的方式(实例保存的地址值,是数据在堆空间中开辟空间以后对应的地址值)

3.  面试题:String s = new String("abc");方式创建对象,在内存中创建了几个对象?

  两个:一个是堆空间中 new 结构,另一个是 char[ ]对应常量池中的数据“abc”;

4. 结论:

  a. 常量与常量的拼接结果在常量池,且常量池中不会存在相同内容的常量;

  b. 只要其中有一个是变量,结果就在堆中;

  c. 如果拼接的结果调用 intern() 方法,返回值就在常量池中;

5. String 与 char[ ]之间的转换

  String ---> char[ ]:调用 String 的 toCharArray()

  char[ ] ---> String:调用 String 的构造器(String str = new String(arr))

6. String 和 byte[ ]之间的转换

  编码:String ---> byte[ ]:调用 String 的 getBytes();字符串 ---> 字节(看得懂 ---> 看不懂的二进制数据)

  解码:byte[ ] ---> String:调用 String 的构造器;编码的逆过程,字节 ---> 字符串

7. java.lang.StringBuffer代表可变的字符序列(StringBuffer类)

  String、StringBuffer、StringBuilder三者异同

    String:不可变字符序列,底层使用 char[ ] 存储;

    StringBuffer:可变字符序列,线程安全,效率低;底层使用 char[ ] 存储;

    StringBuilder:可变字符序列,线程不安全,效率高(不存在多线程,建议使用);底层使用 char[ ] 存储;

  效率:StringBuilder > StringBuffer > String

8. 时间戳(System.currentTimeMillis(),返回当前时间与1970.1.1.00.00.00.000之间以毫秒为单位的时间差)

9. SimpleDataFormate的使用:对日期 Date 类的格式化和解析

 

10. Calendar日历类(抽象类)的使用

  ① 实例化

    a. 创建其子类(GregorianCalendar)的对象;

    b. 调用其静态方法 getInstance()

  ② 常用方法:set()、add()、getTime()、setTime();

11. LocalDate、LocalTime、LocalDateTime(常用)的使用

  

 

 

   

 

 

12. Instant:时间线上的一个瞬时点;

  

 

13. DateTimeFormatter类:格式化或解析日期、时间;

14. Java比较器(排序方式又两种:java.lang.Comparable 自然排序,java.lang.Comparator 定制排序)

  正常情况下,只能用 ==、!=进行比较,但是开发时会对多个对象进行排序,需要比较对象的大小;

  Comparable 接口的使用:

    a. 像 String、包装类等实现类Comparable 接口,重写了CompareTo()方法,给出了比较两个对象的大小;

    b. 重写了CompareTo(obj)规则:

      如果当前对象this大于形参对象obj,则返回正整数;

      如果当前对象this小于形参对象obj,则返回负整数;

      如果当前对象this等于形参对象obj,则返回零。

    c. 对于自定义类来说,如果需要排序,可以让自定义类实现 Comparable 接口,重写 CompareTo(obj) 方法;

     在 CompareTo(obj) 方法中指明如何排序;

  Compartor 接口的使用:

    a. 当元素的类型没有实现 java.lang.Comparable 接口而又不方便修改代码

     或实现了java.lang.Comparable 接口的排序规则不适合当前的操作,那么可以考虑使用 Comparator 的对象来排序;

    b. 重写compare(Object o1,Object o2)方法,比较o1和o2的大小:

      如果方法返示 回正整数,则表示o1大于o2;  

      如果返回0,表示相等;

      返回负整数,表示o1小于o2。

  二者比较:

    a. Comparable 接口的方式一旦一定,保证 Comparable 接口实现类的对象在任何位置都可以比较大小;

    b. Compartor 接口属于临时性的比较;

标签:Comparable,Java,String,接口,char,days03,字符串,宋红康,常量
From: https://www.cnblogs.com/LinxhzZ/p/16747734.html

相关文章

  • java基础--break和continue!!!!!
    break和continuebreak用于强行退出循环,不执行循环中剩余的语句,也可在switch语句中使用。break在任何循环语句主体,均可用break控制循环流程。packagecom.wang.struct;......
  • Java: Interpreter Pattern
     /***版权所有2022涂聚文有限公司*许可信息查看:*描述:*解释器模式InterpreterPattern*历史版本:JDK14.02*2022-09-12创建者geovindu*2022-0......
  • Javaweb学习笔记第十四弹---对于Cookie和Filter的学习
    ApacheTomcat-TomcatNativeDownloads会话追踪技术会话:打开浏览器,建立连接,直到一方断开连接,会话才会结束;在一次会议中,可以有多次请求。会话追踪:在多次请求间,共享数......
  • HelloWorld和Java程序运行机制
    HelloWorld1.新建java文件后缀名为.java2.编写代码publicclassHello{publicstaticvoidmain(String[]args){System.out.print("Hello,World!");......
  • 给我的Java随笔做个说明
    本说明会逐渐更新2022-10-1我的java笔记目前是根据狂神说Java的视频写的笔记,后面会慢慢加东西,都会在这个里面说明。另外:一部分笔记和大多数图片是我从其他人的笔记抄过......
  • Java(15)Object类
    前言Object类是Java中所有类的始祖,在Java中每个类都扩展了Object。如果没有明确地指出超类,Object就被认为是这个类的超类。由于在Java中每个类都是由Object类扩展而来的,所......
  • Java中队列和链表性能对比-ArrayList和LinkedList
    本文使用ArrayList和LinkedList,分别对比了队列链表的add,get的性能。 具体代码如下,可以直接运行importjava.util.ArrayList;importjava.util.LinkedList;importja......
  • Java 集合框架之Collection,一文解决
     JDK提供了一些特殊的类,这些类可以存储任意类型的对象,并且长度可变,在Java中这些被称为集合。按照存储结构可以分为两大类,单列集合Collection和双列集合常用集合类如下......
  • 力扣209(java)-单词规律(简单)
    题目:给定一种规律pattern 和一个字符串 s ,判断s 是否遵循相同的规律。这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 s 中的每个非空单词之间存......
  • Java泛型中<T> T 与 T的区别和用法
    有的方法返回值是<T>T,有的是T,区别在哪里?下面是一个泛型方法,<T>声明此方法有一个泛型T,也可以理解声明一个泛型方法.    下面三个T,第一个T表示是泛型,第二个......