【JAVASE基础】常用类

1. API的概念
应用程序编程接口:每一个技术官方都会定义出许多的功能开发人员可以直接拿
来使用(拿来主义). API可以理解为Sun公司已经开发好的类和方法. API文档就是我
们开发的帮手


Object类:所有类的父类-切类都I接或者是间接继承Object. Object类中的所有
功能子类都可以使用.福利:
class xx {} //自己的构造方法,继承下来11个方法
Object类定义在了java.lang包lang包是核心包,此包中的任何类在使用的时候不需
要import导入
I
2.1 Object类的本地方法
本地方法:方法的定义上使用关键字,是修饰符native ,这个方法就是本地方法.
本地方法的特点:
●方法没有方法体
●方法是C++语言编写的,Sun公司不开源
●方法运行的时候是一一个独立的内存(本地方法栈)
●作用:凡是遇到本地方法方法的作用是和本机的操作系统交互的

2.2 Object类的方法toStirng()
自己定义类Person类,默认的继承0bject,Object类定义定义了方法:
public string tostring(

输出语句中System.out.println(对象)调用对象的toString()
System.out.printIn(对象) == System.out.println(对象.toString0)
toString方法的结果,和开发没有任何的关系.我们需要的是重写父类的方法
toStirng(,建立我们对象自己的字符串表现形式

package com.sdjzu.object01;

/*
* Preson类
* 任何类都会继承Object类
* */
public class Person {

}

package com.sdjzu.object01;

public class PresonTest {
    public static void main(String[] args) {
        Person p1 = new Person();
        System.out.println(p1);
        //调用object中的toString方法
        System.out.println(p1.toString());
    }
}

在这里插入图片描述
I
2.2.1重写父类的方法toString()

package com.sdjzu.object01;

/*
* Preson类
* 任何类都会继承Object类
* */
public class Person {
    public String name;
    public String number;

    public Person(){

    }
    public Person(String name,String number){
        this.name=name;
        this.number=number;
    }
    //重写toString方法
    //重写toString的方法的原因是:返回类的属性值
    public String toString(){
        return name+"::"+number;
    }

}

package com.sdjzu.object01;
/*
* 测试类、
* */
public class PresonTest {
    public static void main(String[] args) {
        Person p1 = new Person("张三","001");
        System.out.println(p1);
        //调用object中的toString方法
        System.out.println(p1.toString());
    }
}

在这里插入图片描述
2.3 Object类的方法equals()
Java技术认为任何对象都具备比较性Object类定义了方法equals0.作用就是用来
比较对象的.方法结果是boolean值对象相等就是true
●引用数据类型==就是比较对象的地址是不是相同的
●Object类的方法 equals默认比较对象的内存地址(没有可比性)

I

package com.sdjzu.object01;

/*
* Preson类
* 任何类都会继承Object类
* */
public class Person {
    public String name;
    public int number;

    public Person() {

    }

    public Person(String name, int number) {
        this.name = name;
        this.number = number;
    }

    //重写toString方法
    //重写toString的方法的原因是:返回类的属性值
    public String toString() {
        return name + "::" + number;
    }

    //重写equals方法
    //比较对象的number的年龄,相同返回true
    public boolean equals(Object obj) {
        //判断是否为空
        if (obj==null){
            return false;
        }
        //判断是不是自己
        if (this == obj) {
            return true;
        }
        //安全性的判断 :确定传入的对象是人
        if (obj instanceof Person) {
            //将obj向下转型,然后调用子类特有的属性
            Person p = (Person) obj;

            //比较两个人的年龄
            return this.number == p.number;
        }

        return false;
    }

}


package com.sdjzu.object01;
/*
* 测试类、
* */
public class PresonTest {
    public static void main(String[] args) {
        Person p1 = new Person("张三",56);
        Person p2 = new Person("李四",56);
        //Object类中的equals方法默认比较的是对象的地址值(无意义)
        boolean equals = p1.equals(p2);
        System.out.println(equals);
        System.out.println(p1);
        //调用object中的toString方法
        System.out.println(p1.toString());
    }
}

在这里插入图片描述
3. String字符串类
字符串对象程序中定义"“都是字符串对象,这个对象的使用频率最高.
字符串类java.lang.String类继承0bject类实现了三个接口.
程序中只要你写"里面任意"都是String类的对象,
I
字符串对象是常量,一-旦创建不能修改.

3.1字符串对象创建
public static void main(String[] args) {
//字符串创建,2个方式
//直接=创建
string s = “abc”;
//使用构造方法创建
String str = new String(“aa”);
I
}
●直接=创建方式代码少,书写简单,推荐使用
java
●new String()使用了构造方法的创建形式代码大,不推荐使用

3.2字符串常量的特性

package com.sdjzu.String1;

public class StringTest {
    public static void main(String[] args) {
        String a1="abc";
        String a2=new String("abc");//new出一片新的空间
        System.out.println(a1==a2);//false 地址值不一样
        String a3="abc";
        System.out.println(a1==a3);//true
        String a4="hello";
        String a5="word";
        String a6="helloword";
        /*
        * a6==(a4+a5)a4和a5是变量,在javac编译的时候,不确定值,运行的时候jvm开辟新的内存空间
        * */
        System.out.println(a6==(a4+a5));//false
        String a7=("hello"+"word");
        /*
        * 常量在编译的时候值式确定的
        * 在运行的时候不会开辟新的空间
        * */
        System.out.println(a6==a7);//true

    }
}

4String类
4.1String类的判断方法

package com.sdjzu.String1;
/*
* String类的判断方法
* */
public class StringTest {
    public static void main(String[] args) {
        String a1="abc";
        String a2=new String("abc");//new出一片新的空间
        System.out.println(a1==a2);//false 地址值不一样
        String a3="abc";
        System.out.println(a1==a3);//true
        String a4="hello";
        String a5="word";
        String a6="helloword";
        /*
        * a6==(a4+a5)a4和a5是变量,在javac编译的时候,不确定值,运行的时候jvm开辟新的内存空间
        * */
        System.out.println(a6==(a4+a5));//false
        String a7=("hello"+"word");
        /*
        * 常量在编译的时候值式确定的
        * 在运行的时候不会开辟新的空间
        * */
        System.out.println(a6==a7);//true

    }
}

4.2String类的获取方法
String类的获取方法,返回值不一 定
●int length0返回字符串长度字符串中字符的个数
●char charAtint index)返回指定索引上的单个字符
●int indexOf(String str)返回指定的字符串,在当前字符串中第一-次出现的索引
.I
●int lastlndexOfString str)返回指定的字符串,在当前字符串中最后- -次出现的
索引
●String substring(int start,int end)截取字符串,参数表示开始索引和结束索引,包
含开头索引,不包含结束索引

package com.sdjzu.String1;
/*
* String 类的返回方法
* */
public class StringTest1 {
    public static void main(String[] args) {
        StringMethod();


    }

    public static void StringMethod() {
        //int length0返回字符串长度字符串中字符的个数
        String c = "akjshdfl";
        int k = c.length();
        System.out.println(c.length());
        //char charAt(int index)返回指定索引上的单个字符
        String c2="sjdhkajhv;a";
        char c22=c2.charAt(7);
        System.out.println(c22);
        //int indexOf(String str)返回指定的字符串,在当前字符串中第一-次出现的索引
        int c3="alkujdvfkadjf".indexOf("d");
        System.out.println(c3);//-1不是索引的值
        //int lastlndexOfString str)返回指定的字符串,在当前字符串中最后- -次出现的
        //索引
        int c4="aalksuhfla".indexOf("a");
        System.out.println(c4);
        //String substring(int start,int end)截取字符串,参数表示开始索引和结束索引,包
        //含开头索引,不包含结束索引
        String c5 = "akuhfkajdhlkajdhvlkj".substring(4,7);
        System.out.println(c5);
    }
}

结果:
在这里插入图片描述
4.3String类的比较方法
int compareTo(String str)字符串之间的比较,谁大谁小,按照字典顺序(自然顺序)
abcde顺序
4.4String类的方法 去空格,替换,切割
●String trim()去掉字符串两边空格,中间空格不去掉
●String replace(String oldString,String newString)替换字符串
●StringO splt(“规则字符串”)对字符串进行切割
4.5正则表达式
●字符类:
o| [abc] 字符串的这个位置只能是abc
。[^abc] 字符串的这个位置不能是abc
。[a-zA-Z] 字符串的这个位置必须是字母,52个
。[Aa-zA-Z] 字符串的这个位置必须不能是字母,52个
●数字类:
[0-9]字符串的这个位置只能是数字
。[^0-9] 字符串的这个位置不能是数字
。[\d]等同于[0-9]
。[\D]等同于[^0-9]
●预定义字符:
。. 匹配所有的字符
。| [\d]等同于| [0-9]
。| [\D]等同于| [^0-9]
。| [\w] 文字字符,包含数字,字母,下划线[a-ZA-Z0-9_ ]
。| [\W]文字字符,包含数字,字母,下划线[^a-ZA-Z0-9
]
●数量词:
。X{m} X这个字符只能出现m次a{3}
。X{m,} X这个字符至少出现m次
。X{m,n} X这个字符至少出现m次,不超过n次
。X? X这个字符出现-次,或者一 次也没有
。X* X这个字符出现零次或者多次
。X+ X这个字符出现至少-次

package com.sdjzu.String1;

public class StringTest3 {
    public static void main(String[] args) {
        Method();
    }
    public static void Method(){
        /**
         *正则表达式检查手机号是否合法
         *开头必须是1, 长度固定11
         *第二位3456789
         *第三位必须是都是数字
         */
        String str="13587836538";
        String regex="1[3456789][0-9]{9}";
        boolean matches = str.matches(regex);
        System.out.println(matches);
    }
}

在这里插入图片描述
4. StringBuilder
StringBuilder是字符串对象的缓冲区对象缓)冲区(出现目的,为了高效)提供String
类的效率.
String str = “a”; //字符数组
string str2 = “b”;//字符数组
String str3 = str + str2;//字符数组
4.1 StringBuilder类的实现原理
-个可变的字符序列,字符序列就是字符数组
string类中: private fina1 char[] value;
StringBuilder : char[] value;
I
字符序列是数组,Java数组的是定长的一旦创建,长度固定!
字符序列是数组,Java数组的是定长的,一旦创建,长度固定!
创建对象的时候,StringBuilder中的数组的初始化长度为16个字符
StringBuilder自动的进行数组的扩容,新数组实现,原来数组的中元素复制到新的数
组.
|结论 :无论怎么做字符串的操作, StringBuilder内部永远只有一个数组
StringBuilder类是线程不安全的类,运行速度快,推荐使用StringBuilder
StringBuffer是线程安全的类运行速度慢,多线程的程序,使用
两个类的构造方法和其他的方法,一模-样.
1. StringBuilder类的常用方法
●XX append(任意类型)参数追加成字符串,无论参数写的是什么,变成字符串.相当
于是字符串里面的+运算

package com.sdjzu.StringBuilder1;

public class StringBuilderTest {
    public static void main(String[] args) {
        appendStringBuilder();
    }
    public static void appendStringBuilder(){
        //创建lang包下面的StringBuilder类的对象
        StringBuilder str= new StringBuilder();
        //用对象调用StringBuilder类中的append字符串追加方法
        str.append(67);
        str.append("aufhjaerhf");
        str.append(56.545);
        System.out.println("str = " + str);
    }
}

在这里插入图片描述

方法调用链,链式编程(省力,少敲代码)
链式编程:保证-一个方法的返回值是一个对象,再使用这 个对象调用的调用方
法:对象.方法() .方法(0).方法()…

 //代码调用lian
        str.append("aukydsgfkua").append(78);

●StringBuilder insert(int索引任意类型)可以将任意类型的参数插入到字符串
缓冲区,指定索引

public static void insertStringBuilder(){
        /*
        * StringBuilder类中的insert方法
        * 插入方法就是在指定的索引上插入任意元素
        * */
        //创建一个StringBuilder类对象
        StringBuilder strInsert=new StringBuilder();
        //使用append追加字符串
        strInsert.append("aiuhfla");
        strInsert.insert(5,"uaygf");
        System.out.println("strInsert = " + strInsert);
    }

StringBuilder类的其它方法
。int length0)返回字符串缓冲区的长度
。StringBuilder delete(int start,int end)删除缓冲区中的字符包含开头索引不
包含结束索引
。void setCharAt(int索引.char ch)修改指定元素上的字符
。StringBuilder reverse()翻转字符串

public static void otherStringBuilder(){
        /*
        * StringBuilder类的其他方法
        * */
        //创建一个StringBuilder类的对象
        StringBuilder strOther = new StringBuilder();
        //调用追加字符串的方法
        strOther.append("ajgfjahyfbkuyf").append(7346);
        //返回字符串的长度
        int length = strOther.length();
        System.out.println("length = " + length);
        System.out.println("strOther = " + strOther);
        //删除
        strOther.delete(4,8);
        System.out.println("strOther = " + strOther+"删除后");
        //修改
        strOther.setCharAt(1,'D');
        System.out.println("strOther = " + strOther+"修改后");
        //翻转zfc
        strOther.reverse();
        System.out.println("strOther = " + strOther+"反转后");
    }

1.1 StringBuilder对象和String对象的互转
●String对象转成StringBuilder对象 String -> StringBuilder
。StringBuilder类的构造方法 StringBuilder(String str)
。append方法append(String str)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值