Java学习(API及Object类、String类、StringBuffer字符串缓冲区)

一、JAVA的API及Object类

1.API

概念:

Java 的API(API: Application(应用) Programming(程序) Interface(接口))

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

在JDK安装目录下有个src.zip文件,这个文件解压缩后里面的内容是所有Java类的源文件。可以在其中查看相对应的类的源码。

我们在每次查看类中的方法时,都打开源代码进行查看,这种方式过于麻烦。其实,我们可以通过查帮助文档的方式,来了解Java提供的API如何使用。

通过帮助文档中类与方法的介绍,我们就能够使用这个类了。

2.  Opject类

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

2.1  equals方法

概念:

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

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

子类:

package com.oracle.demo01;

public class Person {
    private String name;
    private int age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    //重写equals代码,equals代码是从默认父类object继承的
    public boolean equals(Object obj) {
        //判断调用者和传进来的是否一致,一致的话就是自己跟自己比,直接输出true
        if(obj==this){
            return true;
        }
        if(obj instanceof Person){
            Person p=(Person)obj;
            return p.age==this.age;
        }
        return false;
    }
}

测试类:

package com.oracle.demo01;
//equals方法:比较方法,返回true或者false
public class Test {

    public static void main(String[] args) {
        Person p1=new Person();
        p1.setAge(28);
        Person p2=new Person();
        p2.setAge(28);
        //比较的是两个引用类型的地址
        //如果你的preson没重写object的equals方法,那么你的p1.equals(p2)调用的是object的equals方法,比较
        //的是两个对象的内存地址,地址每次 都是不同的,没有实用意义
        //而我们的person如果比较的话,应该比较具体的属性值,如比较成员变量等,就要重写父类的equals方法
        boolean b=p1.equals(p2);
        System.out.println(b);
    }

}

注意:在复写Person中的equals方法时,一定要注意public boolean equals(Object obj)的参数是Object类型,

     在调用对象的属性时,一定要进行类型转换,在转换之前必须进行类型判断。

 2.2   toString方法 

概念:

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

由于toString方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因此也需要重写它。+

子类:

package com.oracle.demo01;

public class Person {
    private String name;
    private int age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }

    //重写 toString方法,用来返回属性值字符串。
    public String toString() {
        String str=this.name+"..."+this.age;
        return str;
    }
}

测试类:

package com.oracle.demo01;
//equals方法:比较方法,返回true或者false
public class Test {

    public static void main(String[] args) {
        Person p1=new Person();
        p1.setAge(28);
        Person p2=new Person();
        p2.setAge(28);    //调用重写后的方法,输出字符串而不是地址
        Person p3=new Person();
        String s1=p3.toString();
        System.out.println(s1);
    }

}

 二、String类

 1.概述

String 类代表字符串;字符串是常量;

字符串本身不能改变,但str变量中记录的地址值是可以改变的。

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

package com.oracle.demo02;

public class StringDemo {

    public static void main(String[] args) {
        //Scanner sc=new Scanner(System.in);
        //String  是免new的
        //字符串是常量,不能被修改
        String str="houyi";
        //更换的不是字符串,而是str指向的地址
        //str="cbengyaojin";
        //            对象                    对象
        String str1=new String("houyi");
        //equals   是比较的内容,不是地址   内容都是“houyi”,所以结果为true
        System.out.println(str.equals(str1));
        //比较的是地址  所以结果为false
        System.out.println(str==str1);
    }   //因为String重写了equals方法,建立了字符串自己的判断相同的依据(通过字符串对象中的字符来判断)

}

str与str1创建方式有什么不同呢?

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

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

2.String 类构造方法

构造方法是用来完成String对象的创建,下图中给出了一部分构造方法需要在API中找到,并能够使用下列构造方法创建对象。

Byte:字节

一个字母是一个字节

实例:

package com.oracle.demo02;

public class Demo01 {
    public static void main(String[] args){
        //电脑默认GBK编码,正数就是走ASCII表,65开始转成A,97开始转成a,以此类推.
        //如果是负数,就是汉字
        //byte   把字节(数字)转成了字符,然后数组就结合成了字符串
        //byte[]   盛放数字
        //char[]   盛放字符
        //String构造方法是把数组,字符组等转换成字符串
        byte[] bytes={-65,-66,-67,-68};
        String str1=new String(bytes);
        System.out.println(str1);
        String str2=new String(bytes,1,2);
        System.out.println(str2);
        char[] chars={‘d‘,‘o‘,‘g‘};
        String str3=new String(chars);
        System.out.println(str3);
        String str4=new String(chars,1,2);
        System.out.println(str4);
        String str5="chengyaojin";
        String str6=new String(str5);
    }

}

 3.String 类的方法查找

String类中有很多的常用的方法,我们在学习一个类的时候,不要盲目的把所有的方法尝试去使用一遍,这时我们应该根据这个对象的特点分析这个对象应该具备那些功能,这样大家应用起来更方便。

 字符串的功能:

3.1  字符串中有多少个字符?(判断字符串的长度:用length()方法)

3.2  获取部分字符串

3.3 字符串是否以指定字符串开头。结尾同理

3.4 字符串中是否包含另一个字符串。

3.5 将字符串转成一个字符数组。或者字节数组。

3.6  判断两个字符串中的内容是否相同

3.7  获取该字符串对象中的内容

注意:直接打印引用类型变量时,默认调用该类型进行重写后的toString方法

实例:

package com.oracle.demo02;
//字符串功能
public class demo02 {
    public static void main(String[] args){
        //空格也算字符串长度,一个空格占一个字符串长度
        String str="i love java,java love me";
        int l=str.length();
        System.out.println(l);
        //substring   截取字符串
        //传一个值代表从第六位数开始截取到最后
        System.out.println(str.substring(6));
        //传两个值时,从第三位开始截取到第六位,不包含第七位
        System.out.println(str.substring(3,7));
        //stratsWith("n")  判断字符串是否以n开头,输出true或false
        System.out.println(str.startsWith("i"));
        //endsWith("n")  判断字符串是否以n结尾,输出true或false
        System.out.println(str.endsWith("java"));
        //判断str字符串中是否包含love
        System.out.println(str.contains("love"));
        //获取“java”在字符串中第一次出现的索引,如果字符串中没有。则打印-1.
        System.out.println(str.indexOf("java"));
        //将字符串转成字节数组
        byte[] bytes=str.getBytes();
        for(int i=0;i<bytes.length;i++){
            System.out.println(bytes[i]);
        }
        //将字符串转成字符数组
        char[] chars=str.toCharArray();
        for(int i=0;i<chars.length;i++){
            System.out.println(chars[i]);
        }
        String str1="love";
        String str2="LOVE";
        //判断两个字符串内容是否相等
        System.out.println(str1.equals(str2));
        //判断两个字符串内容是否相等(忽略大小写)   可应用在判断验证码
        System.out.println(str1.equalsIgnoreCase(str2));

    }
}

 三、字符串缓冲区

1.StringBuffer类

字符串缓冲区支持可变的字符串,StringBuffer就是个字符串的缓冲区,即就是它是一个容器,容器中可以装很多字符串。并且能够对其中的字符串进行各种操作。

2.StringBuffer的方法使用

注意:append、delete、insert、replace、reverse方法调用后,返回值都是当前对象自己,所以说,StringBuffer它可以改变字符序列的长度和内容。

 3.方法的链式调用

开发中,会遇到调用一个方法后,返回一个对象的情况。然后使用返回的对象继续调用方法。这种时候,我们就可以把代码链在一起,如append方法一样。

 4.  StringBuilder类

StringBuilder类,它也是字符串缓冲区,此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。(但是StringBuffer更安全)

实例:

package com.oracle.demo02;

public class demo03 {

    public static void main(String[] args) {
        //StringBuffer  字符串缓冲区
        StringBuffer sbu=new StringBuffer("wangzherongyao");
        System.out.println(sbu);
        //append 添加新的字符串
        sbu.append("houyi");
        System.out.println(sbu);
        //可以快速添加,链式添加

        sbu.append("wangzherongyao").append(123).append(2.3);
        System.out.println(sbu);
        //delete:字符串删除,从第三位开始删,删到第五位,不包括第六位
        sbu.delete(3, 6);
        System.out.println(sbu);
        //insert(n,"sss"):从第三位开始,添加字符串sss
        sbu.insert(3, "lanlingwang");
        System.out.println(sbu);
        //replace(0,2,"22222"):替换指定为的字符串   从0位开始,到1位的字符串将被替换,不包含2
        sbu.replace(0, 2, "22299999");
        System.out.println(sbu);
        //reverse()   字符串反转
        System.out.println(sbu.reverse());
    }

}

原文地址:https://www.cnblogs.com/0328dongbin/p/9077659.html

时间: 2024-10-16 01:06:27

Java学习(API及Object类、String类、StringBuffer字符串缓冲区)的相关文章

Java学习笔记(二)-------String,StringBuffer,StringBuilder区别以及映射到的同步,异步相关知识

1. String是不可变类,改变String变量中的值,相当于开辟了新的空间存放新的string变量 2. StringBuffer 可变的类,可以通过append方法改变变量的值,且StringBuffer是线程安全的,它的很多方法都是同步方法,支持并发操作,适用于多线程 3. StringBuilder 可变的类,但是线程不安全的,用于单线程中性能高于StringBuffer 4. HashTable 线程安全的,HashMap线程不安全的 5. 那么,什么是同步,什么是异步 同步:A发过

Java基础—API及Object类和String类

Java 的API(API: Application(应用) Programming(程序) Interface(接口)) Java API就是JDK中提供给我们使用的类,这些类将底层的代码实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可. 1.Object类  Object类是Java语言中的根类,即所有类的父类.它中描述的所有方法子类都可以使用.所有类在创建对象的时候,最终找的父类就是Object.   equals方法    equals方法,用于比较两个对象

代码块和Java的API及Object类

代码块 局部代码块 特点: 以”{}”划定的代码区域,此时只需要关注作用域的不同即可 方法和类都是以代码块的方式划定边界的 构造代码块 优先于构造方法执行,构造代码块用于执行所有对象均需要的初始化动作 每创建一个对象均会执行一次构造代码块 静态代码块 l 它优先于主方法执行.优先于构造代码块执行,当以任意形式第一次使用到该类时执行. l 该类不管创建多少对象,静态代码块只执行一次. l 可用于给静态变量赋值,用来给类进行初始化. Java的API及Object类 Java 的API  Java

java基础(15):常用API(Object、String、StringBuffer)

1. Java的API及Object类 在以前的学习过程中,我们都在学习对象基本特征.对象的使用以及对象的关系.接下来我们开始使用对象做事情,那么在使用对象做事情之前,我们要学习一些API中提供的常用对象.首先在学习API中的Object类之前,先来学习如何使用API. 1.1 Java 的API Java 的API(API: Application(应用) Programming(程序) Interface(接口)) Java API就是JDK中提供给我们使用的类,这些类将底层的代码实现封装了

java学习中,object 对象的使用(toString、equals、hashCode)(java 学习中的小记录)

java学习中,object 对象的使用(java 学习中的小记录)作者:王可利(Star·星星) object 对象(参考API学习) 重点掌握三个方法: 1.toString 返回该对象的字符串表示. 2.equals(object obj)指示其他某个对象是否与这个对象相等. 3.hashCode() 返回对象的哈希码. 详见代码的注释分析(一个是Person类重写方法,一个是Star类使用方法) Star类代码: 1 package study; 2 3 public class sta

Java的API及Object

API: Java API就是JDK中提供给我们使用的类,这些类将底层的代码实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可. 源文件使用方法: Object类概述: Object类是类层次的根类,即所有类的父类.它中描述的所有方法子类都可以使用.所有类在创建对象的时候,最终找的父类就是Object. Object类:构造方法中的super()调用Object()空参构造 equals方法: equals方法,用于比较两个对象是否相同,它其实就是使用两个对象的内存地

C++ 常用类 string类

===6.3.2使用string对象=== string word="I love China" *链接字符串* string description=adjective  + " " + word; _Note_: 不能连接两个字符串字面量,下面的语句是错误的 string test= "I have" + "a dream"; ===6.3.3访问字符串中的字符=== *读取字符串* getline(cin, text);

6、Object、String、StringBuffer

Java的Api以及Object类 API概念 * A:API(Application Programming Interface) * 应用程序编程接口 * B:Java API * 就是Java提供给我们使用的类,这些类将底层的实现封装了起来, * 我们不需要关心这些类是如何实现的,只需要学习这些类如何使用. * C: 演示查看Object类中的相关方法 Object类概述 * A:Object类概述 * 类层次结构的根类 * 所有类都直接或者间接的继承自该类 * Object中描述的所有方

JAVA基础知识总结14(String、StringBuffer、StringBuilder)

1.String字符串: java中用String类进行描述.对字符串进行了对象的封装.这样的好处是可以对字符串这种常见数据进行方便的操作.对象封装后,可以定义N多属性和行为. 如何定义字符串对象呢?String s = "abc";只要是双引号引起的数据都是字符串对象. 特点:字符串一旦被初始化,就不可以被改变,存放在方法区中的常量池中. String s1 = "abc"; // s1指向的内存中只有一个对象abc. String s2 = new String