zoukankan      html  css  js  c++  java
  • JAVA-基础-常用API(equals,tostring方法,String类)

                     Java的API及Object类

            java的 API -applicatio(应用),programming(程序),interface(接口)

    Java API就是JDK中提供给我们使用的类,这些类将底层的代码实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可。

      Object类概述

    Object类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。所有类在创建对象的时候,最终找的父类就是Object。

    equals方法  与  toString方法

    equals方法,用于比较两个对象是否相同,它其实就是使用两个对象的内存地址在比较。Object类中的equals方法内部使用的就是==比较运算符。

    在开发中要比较两个对象是否相同,经常会根据对象中的属性值进行比较,也就是在开发经常需要子类重写equals方法根据对象的属性值进行比较。如下代码演示:

    /*
         描述人这个类,并定义功能根据年龄判断是否是同龄人
         由于要根据指定类的属性进行比较,这时只要覆盖Object中的equals方法
         在方法体中根据类的属性值进行比较
     */
    class Person extends Object{
        int age ;
        //复写父类的equals方法,实现自己的比较方式
        public boolean equals(Object obj) {
            //判断当前调用equals方法的对象和传递进来的对象是否是同一个
            if(this == obj){
                return true;
            }
            //判断传递进来的对象是否是Person类型
            if(!(obj instanceof Person)){
                return false;
            }
            //将obj向下转型为Perosn引用,访问其属性
            Person p = (Person)obj;
            return this.age == p.age;
        }
    }
    注意:在复写Object中的equals方法时,一定要注意public boolean equals(Object obj)的参数是Object类型,
    在调用对象的属性时,一定要进行类型转换,在转换之前必须进行类型判断。

    instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,
    这个对象是否是这个特定类或者是它的子类的一个实例
     

    toString方法,返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值。

    class Person extends Object{
        int age ;
        //根据Person类的属性重写toString方法
        public String toString() {
            return "Person [age=" + age + "]";
        }
    }

                         String类  

    String:String类对象是不可变的,也就是说字符串在创建之后就不能再去更改了。它是用来存放字符串常量的。

    查阅API中的String类的描述,发现String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。

    一旦这个字符串确定了,那么就会在内存区域中就生成了这个字符串。字符串本身不能改变,但str变量中记录的地址值是可以改变的。

    字符串的本质是一个字符的数组。

    String s3 = "abc";//内存中只有一个对象,在字符串常量池中
    String s4 = new String("abc");//在内存中有两个对象,一个new的对象在堆中,一个字符字串本身对象
    System.out.println(s3==s4);//false
    System.out.println(s3.equals(s4));//true,

    因为String重写了equals方法,建立了字符串自己的判断相同的依据(通过字符串对象中的字符来判断)

    l  s3创建,在内存中只有一个对象。这个对象在字符串常量池中

    l  s4创建,在内存中有两个对象。一个new的对象在堆中,一个字符串本身对象,在字符串常量池中

     

     

    string字符串类型:string是引用类型,在设计之初,虚拟机就对他做了特殊优化,将字符串保存在虚拟机内部的字符串长量池中。一旦我们要创建一个字符串,虚拟机会先去常量池中检查是否创建过这个字符串,若有则直接引用。
    String对象因为有了上述的优化,就该保证该对象的内容自创建开始就不能改变,所以对该字符串的任何变化都会创建新的对象。在比较字符串的时候我们通常的做法是使用equals方法,字符串重写了Object的equals方法。用于比较字符串内容是否一致。当我们将一个字符串变量与一个字面量进行等值比较时,我们不要调用变量的.equals方法,二是应该调用字面量的.equals方法。原因在于我们不能保证变量不是NUll,若变量为NULL,则会抛出空指针异常。导致程序退出。
    String自己实现的比较方法,该方法可以忽略字符串大小写问题:equalsignoreCase方法
    String s3 ="hello";
    if("hello".equelsIgnoreCase(s3)){
     System.out.println("字符串内容是“hello”");
    }else{
      System.out.println("字符串内容不相等");
    }

     

       String类构造方法

      String s1 = new String(); //创建String对象,字符串中没有内容
        
        byte[] bys = new byte[]{97,98,99,100};
        String s2 = new String(bys); // 创建String对象,把数组元素作为字符串的内容
    String s3 = new String(bys, 1, 3); //创建String对象,把一部分数组元素作为字符串的内容,
                           //参数offset为数组元素的起始索引位置,参数length为要几个元素
    char[] chs = new char[]{’a’,’b’,’c’,’d’,’e’}; String s4 = new String(chs); //创建String对象,把数组元素作为字符串的内容

    String s5 = new String(chs, 0, 3);//创建String对象,把一部分数组元素作为字符串的内容,
                          //参数offset为数组元素的起始索引位置,参数count为要几个元素
    String s6 = new String(“abc”); //创建String对象,字符串内容为abc

    String类的方法查找

    字符串是一个对象,那么它的方法必然是围绕操作这个对象的数据而定义的。

    int length() 方法,             返回此字符串的长度

    String str = "abcde";
    int len = str.length();
    System.out.println("len="+len);

    substring(int  beginIndex)方法           返回一个新的字符串,它是此字符串的一个子字符串(指定位置到末尾的所有字符)

    substring(int beginindex ,int endindex)方法       返回新字符串,次字符串的子字符串(指定位置开始到指定位置结束的字符)

    String str = "abcde";
    String s1 = str.substring(1); //返回一个新字符串,内容为指定位置开始到字符串末尾的所有字符
    String s2 = str.substring(2, 4);//返回一个新字符串,内容为指定位置开始到指定位置结束所有字符
    System.out.println("str="+str);
    System.out.println("s1="+s1);
    System.out.println("s2="+s2);

    startWith(String prefix)      测试此字符串是否以指定前缀开始

    endsWith(String suffix)  测试此字符串是否以指定后缀结束

    String str = "StringDemo.java";
    boolean b1 = str.startsWith("Demo");//判断是否以给定字符串开头
    boolean b2 = str.startsWith("String");
    boolean b3 = str.endsWith("java");//判断是否以给定字符串结尾

    contains (CharSequence s)   测试是否包含指定字符串 返回true或false         boolean

    indexOf(String str)  测试是否包含指定字符串,包含则返回该字符串第一次出现的时的索引,不包含则返回-1      int

    String str = "abcde";
    int index = str.indexOf(“bcd”); //判断是否包含指定字符串,包含则返回第一次出现该字符串的索引,不包含则返回-1
    boolean b2 = str.contains("bcd");//判断是否包含指定字符串,包含返回true,不包含返回false

    getBytes()  使用平台默认字符集 将此String编码为 byte 序列 并将结果储存到新的 byte数组中         byte[]

    toCharArray()  将字符串转换为一个新的字符数组     char[]

    String str = "abcde";
    char[] chs = str.toCharArray();//转换为字符数组
    byte[] bytes = str.getBytes();//转换为字节数组

    equels(Object anObject)   将此字符串与指定的对象比较    boolean

    equelsIgnoreCore(String anotherString)   将此String与另一个String比较 不考虑大小写        boolean

    String str = "abcde";
    String str2 = "abcde";
    String str3 = "hello";
    boolean b1 = str.equals(str2);//true
    boolean b2 = str.equals(str3);//false

    toString()   返回此对象本身(它已经是一个字符串)------------------------获取该字符串对象中的内容

    String str = new String("hello");
    System.out.println( str.toString() );
    System.out.pintln( str );
    //
    直接打印引用类型变量时,默认调用该类型进行重写后的toString方法
     
  • 相关阅读:
    [NOI2005]维修数列
    [CTSC2008]网络管理Network
    Directory类
    System.Uri类
    ViewBag、ViewData和TempData使用方法、区别与联系
    Asp.net MVC 视图之公用代码
    MVC3 Razor模板引擎
    MVC之ActionResult
    Html辅助方法 之 Form表单标签
    MVC之 自定义过滤器(Filter)
  • 原文地址:https://www.cnblogs.com/zhangwei2065289/p/9220925.html
Copyright © 2011-2022 走看看