十.Java常用类

1.Object类

  • Object类是类层次结构的根,Java中所有的类都继承自这个类
  • Object类的两个特征:
    Object类是Java中唯一没有父类的类
    其他所有的类都继承了Object类中的方法,所以其方法的重要性不言而喻
    如果在类的声明中未使用rxtends关键字指明其父类,则默认父类为Object类
    public class Person{…}
    等价于:public class Person extends Object{…}
    在这里插入图片描述
  • 调用克隆方法
    在这里插入图片描述
  • 调用tostring方法
    在这里插入图片描述
  • = =操作符
    (1)引用类型比较引用(是否指向同一个对象)
    Person p1=new Person();
    Person p2=new Person();
    if(p1= =p2){…}
    (2)基本类型比较值
    int a=5;
    if(a= =6){…}
    注:用“ = =”进行比较时,符号两边的数据类型必须一致(可自动转换的基本数据类型除外),否则编译出错
    例:
    在这里插入图片描述
    运行结果:true true
    在这里插入图片描述
    运行结果:false
    在这里插入图片描述
    运行结果:true
    将Demo3赋给Demo4 Demo4指向Demo1
  • equals方法
    (1)是Object类的方法,由于所有类都继承Object类,也就继承了equals()方法
    (2)只能比较引用类型
    (3)在Object类的定义中,其作用与“= =”相同,比较是否指向同一个对象 格式:obj1.equals(obj2)
    注:对类File,String,Date,封装类(Wrapper Class)及很多重写了equals()方法的类来说,是比较类型及内容而不考虑引用是否指向同一个对象
    例:
    在这里插入图片描述
    在这里插入图片描述
  • toString方法
    toString()方法在Object类中定义,其返回值是String类型,内容为类名以及该对象的引用地址

2.String类

  • 字符串的比较 ,= = equals方法
    new String(" "); = " ";
    String str1 = “abc”;首先会在常量区中查找abc,如果找到abc,就把abc字符串引用地址赋给str1;如果没有找到,就把abc放到常量区,然后在内存中开辟一个str1的空间,存放引用地址
    new String(“abc”);开辟一个str1的空间,然后再查找
    总结:字符串使用建议选择 String str = “ ”;
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    运行结果:a123c
    在这里插入图片描述
    运行结果:true false
    在这里插入图片描述
    运行结果:1 str2在前面
    在这里插入图片描述
    运行结果:-1
    在这里插入图片描述
    运行结果:4 8
    在这里插入图片描述
    运行结果:,共和国,合同法
    在这里插入图片描述
    运行结果:共和国,合同法
    在这里插入图片描述
    运行结果:共和国
    在这里插入图片描述
    运行结果:中华人民
    在这里插入图片描述
    运行结果:5
    在这里插入图片描述
    运行结果:18

    运行结果:4
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    运行结果:人
    在这里插入图片描述
    运行结果:华
    在这里插入图片描述
    运行结果:我爱学习

  • 例题:请统计“nba”在字符串“nbaernbatynbauinbaopnba”中出现的次数
    解题思路:
    ①要找的字串是否存在,如果存在获取其出现的位置。这个可以用indexof完成
    ②如果找到了,那么就记录出现的位置并在剩余的字符串中继续查找该子串,而剩余字符串的起始位是出现位置+子串的长度
    ③以此类推,通过循环完成查找,如果找不到就-1,并对每次找到用计数器记录
    在这里插入图片描述
    3.StringBuffer类
    StringBuffer:就是字符串缓冲区,用于存储可变字符序列的容器
    特点:可以对字符串进行修改;长度可变

  • StringBuffer VS StringBuilder
    StringBuffer:可变字符序列,线程安全,效率低
    StringBuilder:可变字符序列,线程不安全,效率高

  • 什么叫线程安全?
    如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。
    或者说:一个类或者程序所提供的接口对于线程来说是原子操作或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是说我们不用考虑同步的问题。
    线程安全问题都是由全局变量及静态变量引起的。
    若每个线程中对全局变量,静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑线程同步,否则就可能影响线程安全。

  • 线程同步:就是当一个程序对一个线程安全的方法或者语句进行访问的时候,其他的不能再对他进行操作了,必须等到这次访问结束以后才能对这个线程安全的方法进行访问。

  • StringBuffer类的常用方法
    ①构造
    StringBuffer();
    StringBuffer(int size);
    StringBuffer(String str);
    ②添加
    StringBuffer append(data);
    StringBuffer insert(index.data);
    ③删除
    StringBuffer delete(start,end);包含头,不包含尾
    StringBuffer deleteCharAt(int index);删除指定位置的元素
    ④查找
    char charAt(index);
    int indexOf(string);
    int lastIndexOf(string);
    ⑤修改
    StringBuffer replace(start,end,string);
    void setCharAt(index,char);

在这里插入图片描述
在这里插入图片描述
赋值:run as→ run configurations→java application→arguments
在这里插入图片描述
运行结果:
在这里插入图片描述

4.封装类(包装类)
1.包装类:
①面向对象编程思想
②基本数据类型变量,不能用对象使用的问题
③传输过程中对象传输,容器中皆为对象
2.装箱和拆箱的过程(手动,自动)
在这里插入图片描述
装箱:基本数据类型自动转换成对应的包装类
拆箱:包装类自动转换成对应的基本数据类型
装箱举例:
在这里插入图片描述
拆箱举例:
在这里插入图片描述

  • 包装类的常用方法:
    实现int和Integer类之间的转换
    int n = 10;
    Integer in = new Integer(100);
    //将int类型转换为Integer类型
    Integer in 1 = new Integer(n);
    //将Integer类型的对象转换为int类型
    int m = in.intValue();

3.基本数据类型和String类型的转换

  • 基本数据类型转换为String
    ① + " ";方式
    在这里插入图片描述

②String.valueof()
在这里插入图片描述

  • String类型转换成基本数据类型(包装类)
    包装类.parseXXXX(字符串)
    在这里插入图片描述
    5.Date&DateFormat类
  • Date类在java.util包中。使用Date类的无参构造方法创建的对象可以获取本地当前时间
  • SimpleDateFormat可用来实现日期的格式化
    public SimpleDateFormat(String pattern):使用参数pattern指定的格式创建一个对象
    public String format(Data date):按照构造方法中指定的pattern格式化时间对象date

在这里插入图片描述
在这里插入图片描述
字符串转换成Date类
创建方法:
在这里插入图片描述
调用:
在这里插入图片描述
6.java.util.Calendar日历类
Calendar是一个抽象基类,主用于完成日期字段之间相互操作的功能
获取Calendar实例的方法:
➢使用Calendar.getlnstance()的方法
➢调用他的子类GregorianCalendar的构造器
一个Calendar的实例是系统时间的抽象表示,通过get(int field)方法来取得想要的时间信息。比如YEAR、MONTH、DAY_OF_WEEK、HOUR_ OF_ DAY、MINUTE、SECOND
➢public void set(int field.int value)
➢public void add(int field.int amount)
➢public final Date getTime()
➢public final void setTime(Date date)
在这里插入图片描述

  • java.sql.Date 只能获取年月日
    在这里插入图片描述
  • java8新特性日期
    旧的: Date非线程安全的。 API设计的比较乱。.
    java8:
    java. time包下:
    LocalDate :年月日
    LocaLDateTime:年月日时间
    LocatTime:时间

在这里插入图片描述
运行结果:在这里插入图片描述
在这里插入图片描述

运行结果:加1 2021
减一 2019
在这里插入图片描述
运行结果:加月份:9
在这里插入图片描述
运行结果:true false


运行结果:在这里插入图片描述
在这里插入图片描述
运行结果:在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
运行结果:在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值