首页 > 编程语言 >JavaSE API

JavaSE API

时间:2023-03-02 15:23:38浏览次数:48  
标签:String int Object 对象 API JavaSE public 常量

JavaSE API

排序

java.lang.Comparable

java.lang.Comparator

java.lang.Object

它是所有类型的根父类

一个类如果没有显式声明它的父类,这个类的直接父类就是Object

理解

  (1)Object类的所有方法,在所有对象中都有,包括数组对象

  (2)Object类的变量可以接受任意类型的对象
    Object类型的形参可以接受任意类型的对象作为实参
    Object[]类型的数组可以接受任意类型的对象作为它的元素

  (3)所有对象创建时,都会调用Object的无参构造

方法

  (1)无参构造

    object()   所有对象创建时,都会调用Object的无参构造

  (2)protected Object clone() throws CloneNotSupportedException

    如果子类要支持克隆,子类需要实现Cloneable接口,否则报CloneNotSupportedException

  (3)public boolean equals(Object obj)

    指示其他某个对象obj是否与此对象this“相等”。 

    Object中的equals,等价于“==”比较,比较的是对象的地址

    如果子类需要比较的是属性的内容,那么一定要重写这个方法

  (4)public int hashCode()

    在Object中默认这个方法返回的是 和“地址”相关的值

    如果重写了equals,那么必须重写hashCode方法,而且参与equals比较的属性,一定要参与hashCode的计算

    他俩的关系 

      两个对象的equals()返回true,两个对象的hashCode值?一定相等
      两个对象的hashCode值不相等,两个对象equals方法结果?一定不相等
      两个对象的hashCode值相等,两个对象equals方法结果?不一定相等

  (5)public final Class<?> getClass()

    返回某个对象的运行时类型,而不是编译时类型

  (6)protected void finalize() throws Throwable

    当这个对象被垃圾回收机制回收之前调用,而且只会调用一次

  (7)public String toString()

    在Object中默认返回的是   这个对象的运行是类型@这个对象的hash值的十六进制表现形式

    子类完全可以重写

  (8)剩下的notify,notifyAll和wait在多线程中使用

包装类 java.lang

装箱与拆箱

  装箱

    JDK1.5之前手动装箱

      Integer i = new Integer(整数);

    JDK1.5之后自动装箱

      Ineteger i = 整数;

  拆箱

    JDK1.5之前手动拆箱 

      Integer i = new Integer(整数);
      int num = i.intValue();

    JDK1.5之后自动拆箱

      Integer i = new Integer(整数);
      int num = i;

  原则:只能是对应的包装类和基本数据类型之间进行转换

对应的关系

  byte  Byte

  short  Short

  int  Integer

  long  Long

  char  Character

  float  Float

  double  Double

  boolean  Boolean

其他方法

字符串与基本数据类型的转换

  public static int parseInt(String s)throws NumberFormatException  如果包含字母等非数字字符,会报错

  public static int parseInt(String s, int radix)throws NumberFormatException

    可以包含字母,但要在基数范围内

    例如基数radix是20,可以包含的范围是0-9,a,b,c,d,e,f,g,h,i,j

  public static Integer valueOf(String s)throws NumberFormatException

  public static Integer valueOf(String s,int radix)throws NumberFormatException

像Integer中

  public static String toBinaryString(int i)  二进制形式

  public static String toOctalString(int i)  八进制形式

  public static String toHexString(int i)  十六进制形式

像Character中

  public static char toLowerCase(char ch)  转小写

  public static char toUpperCase(char ch)  转大写

包装类对象的缓存问题(常量对象)

  Byte,Short,Integer,Long  -128~127

  Float,Double  没有缓存

  Character  0~127

  Boolean  true or false

Java.lang.String

字符串类型的特点

  1、不能被继承

    因为String是final修饰的类

  2、字符串对象是常量对象,一旦创建就不能修改,一旦修改就是新对象

  3、因为字符串对象是常量对象,那么可以共享,字符串常量对象是在常量池中

    常量池在哪里

      JDK1.6,方法区

      JDK1.7,堆

      JDK1.8,元空间

  4、任何字符串字面量都是String的对象

  5、字符串底层使用字符数组存储

  6、字符数组是private final修饰符

拼接和比较

  1、创建对象的个数

    String str1 = "hello";
    String str2 = "hello";

    一个,在常量池

    String str1 = new String("hello");
    String str2 = new String("hello");

    三个,一个在常量池,两个在堆中

  2、拼接和比较

    原则:+两边都是常量,结果也是常量,+两边有一个是变量,结果就不是常量,在堆中,如果结果使用了intern(),那么是常量

    @Test
    public void test3(){
        String str1 = "hello";
        String str2 = "java";
        String str3 = "hellojava";
        String str4 = "hello" + "java";//常量与常量拼接,还是常量
        String str5 = "hello" + str2;//常量与变量拼接,结果在堆中
        String str6 = str1 + str2;//变量与变量拼接,结果也在堆中
        
        System.out.println("str3 == str4  " + (str3 == str4));//true
        System.out.println("str3 == str5  " + (str3 == str5));//false
        System.out.println("str3 == str6  " + (str3 == str6));//false
        
        final String str7 = "hello";
        final String str8 = "java";
        String str9 = str7 + str8;//常量与常量拼接
        System.out.println("str3 == str9   " + (str3 == str9));//true
        
        String str10 = (str1 + str2).intern();//intern()的结果放常量池
        System.out.println(str3 == str10);//true
    }

常用的方法

  1、基本方法

    (1)int length()

      返回字符串的长度,即字符的个数

    (2)字符串的比较

      boolean  equals(String other)

        this和other进行内容比较

        对Object的equals进行重写

        严格区分大小写

      boolean equalsIgnoreCase(String anotherString)

        this和anotherString进行内容比较

        不区分大小写

      自然排序

        public int compareTo(String anotherString)  如果是ASCII范围内,按照ASCII值的顺序

      定制排序

//java.text.Collato

        String str3 = "中国";//Z
        String str4 = "美国";//M
        
        //如果想要按照字典顺序
        //找定制排序,实现了java.util.Comparator接口,重写int compare(String s1,String s2)
        //java.text.Collator
        Collator c = Collator.getInstance();
        int result = c.compare(str3, str4);
        System.out.println(result);//中 > 美

    (3)去掉前后空格

      String trim()

    (4)转大小写

      String toUpperCase()

      public String toLowerCase()

    (5)是否是空字符串

      方式一:"".equals(字符串)

      方式二:.isEmpty()

  2、和字节相关

    编码:把字符串转成字节数组

      byte[] getBytes()  平台默认编码方式进行编码

      byte[] getBytes(字符编码方式)  按照指定的编码方式

    解码:把字节数组转成字符串

      new String(byte[])

      new String(byte[],int offset, int length)

      new String(byte[], 字符解码方式)

    乱码

      (1)编码方式与解码方式不一致

      (2)缺字节

  3、和字符相关

    把字符串转字符数组

      char[]  toCharArray()

    把字符数组转字符串

      new String(char[])

      new String(char[],int offset, int count )

    取指定位置的字符

      char charAt(index)

  4、是否以xx开头和结尾

    boolean startsWith(xx)

    boolean endsWith(xx)

  5、字符串截取

    String subString(int start)  从[start,最后]

    String subString(int start, int end)  从[start,end]

  6、拆分

    String[]  split(支持正则)

  7、查找

    是否包含

      boolean contains(子串)

 

    查找索引位置

      int indexOf(xxx)  如果存在返回索引如果不存在返回-1

      int lastIndexOf(xx)

  8、替换

    String  replace(目标子串, 新子串)

    String  replaceAll(目标子串, 新子串)  支持正则

    String  replaceFirst(目标子串, 新子串)

java.lang.StringBuffer和java.lang.StringBuilder

StringBuffer是JDK1.0就有,是线程安全的

StringBuilder是JDK1.5引入,是线程不安全

和String的区别

  (1)String对象是常量对象,是不能修改的,StringBuffer和StringBuilder是字符串缓冲区,可变字符序列,可以修改的

    String一旦涉及修改就产生新的String对象

    StringBuilder和StringBuffer不会产生新的StringBuilder和StringBufffer对象

  (2)赋值的方式

    只有String支持,String str  = "xxx";

  (3)拼接

    String支持+  每一次拼接产生新对象,浪费空间和时间

    append  不会产生新对象

常用的方法

  (1)拼接

    append(xx)

    支持连写  sBuilder.append(xx).append(yyy).append(zzz)...

  (2)插入

    insert(index,xx)

  (3)删除

    delete(start, end)

  (4)替换

    setCharAt(index, char)

  (5)反转

    reverse()

 

标签:String,int,Object,对象,API,JavaSE,public,常量
From: https://www.cnblogs.com/woniupa/p/17169783.html

相关文章

  • Android Studio 友盟api实现apk多渠道打包
    本篇主要给大家介绍利用友盟api实现Android多渠道打包,进入友盟的官网,注册账号,添加对应的应用。1.添加友盟库的依赖2.在manifest.xml中声明appkey,以及渠道占位符3.builde......
  • mac系统上hdfs java api的简单使用
    1、背景在上一节中,我们简单学习了在命令行上如何操作hdfsshellapi,此处我们通过java程序来操作一下。2、环境准备需要在本地环境变量中配置HADOOP_HOME或在程序启动......
  • mac系统上hdfs java api的简单使用
    目录1、背景2、环境准备3、环境搭建3.1引入jar包3.2引入log4j.properties配置文件3.3初始化HadoopApi4、javaapi操作4.1创建目录4.2上传文件4.3列出目录下有哪些文......
  • API 小白入门教程
    正如汽车行业必须达到一定的规模,才能让企业只生产一个部件。软件产业现在已经足够大了,尤其当你接受所谓的“软件吞噬世界”此类的说法时更是如此。因此,和汽车工业不再生产......
  • docker+gunicorn+fastapi部署
    一、准备工作1、先确保项目可以正常运行2、使用pipfreeze导出第三方库3、在项目根目录新建pip.conf文件,写入一下内容[global]index-url=http://......
  • (一)钉钉宜搭低代码应用开发高级认证之远程API调用方法示例
    大家好,我是代号六零一,在此分享近期学习的低代码开发知识~,如有疑问欢迎在评论区下方点评,作者愿与您一道共同探讨:一、创建数据源  二、请求地址配置钉钉路径示例:/d......
  • API进阶
    API2.1Math(应用)1、Math类概述Math包含执行基本数字运算的方法2、Math中方法的调用方式Math类中无构造方法,但内部的方法都是静态的,则可以通过类名.进行调......
  • javaSE学习四
    Super/*super注意点:1.super调用父类的构造方法,必须在构造方法的第一一个2.super必须只能出现在子类的方法或者构造方法中!3.super和this不能同时调用构......
  • combie solidity:maping reqire inheritance
    1,maping是映射,在本游戏中,地址映射id,id与地址绑定格式maping(adress=>uint)mapingfavoritNumber;访问格式是 faveriteNumber[adress]=uint这个是一对多的映射还......
  • JavaSE——==与.equal()方法
    ==号的作用比较基本数据类型:比较的是具体的值比较引用数据类型:比较的是对象地址值packagecom.zhao.stringdemo;publicclassStringDemo2{publicstati......