Java(五)(Object类,克隆,Objects类,包装类,StringBuilder,StringJoiner,BigDecimal)

目录

Object类

Object类的常见方法:

克隆

浅克隆

深克隆

Objects类

包装类

StringBuilder

StringJoiner

BigDecimal


Object类

Object类是java中的祖宗类,因此,Java中所有的类的对象都可以直接使用object类提供的一些方法

Object类的常见方法:

public String toString() 返回对象的字符串类型    // 返回一坨字符串,应该是地址

public boolean equals(Object o) 判断两个对象是否相等 // 这里是比较地址

具体代码案例:

但是这个toString() 一般子类会对他进行重写

这样重写以后就能,返回我们定义学生对象的内容了

我们一般也会对equals()方法进行重写,为了比较两者的内容一不一样

这样我们就可以直接比较内容了

克隆

浅克隆

拷贝处的新对象,和元对象中的数据一摸一样(拷贝的只是地址)

深克隆

对象的基本类型的数据直接拷贝

对象中的字符串数据拷贝的还是地址

对象中还包含的对象,不会拷贝地址,会创建新对象

Objects类

public static Boolean equals(object a,object b)  这个方法先进行非空判断,再比较两个对象

public class test {
    public static void main(String[] args) {
        String a = "李小谦";
        String b = "李大谦";
        System.out.println(Objects.equals(a,b));
    }
}

public static Boolean isNULL(object a)

public static Boolean nonNULL(object a)

public class test {
    public static void main(String[] args) {
        String a = "李小谦";
        String b = "李大谦";
        System.out.println(Objects.isNull(a));
        System.out.println(Objects.nonNull(a));
    }
}

包装类

把基本类型的数据包装成对象

public class test {
    public static void main(String[] args) {
        Integer a2 = Integer.valueOf(12);
        System.out.println(a2);

        // 自动装箱机制,自动把基本类型的数据转换成对象
        Integer a3 = 12;

        // 自动拆箱,自动把包装类型的对象转换成对应基本数据类型
        int a4 = a3;
        // 泛型和集合不支持基本数据类型的使用
        ArrayList<Integer> List = new ArrayList<>();
        List.add(3);
        int rs = List.get(0);
    }
}

常见操作

可以把基本类型的数据转化成字符串类型

// 将基本类型的数据转换成字符串
        Integer a = 3;
        String rs1 = Integer.toString(a);
        System.out.println(rs1+1);

        String rs2 = a.toString();
        System.out.println(rs2+1);
        // 其实也不要那么麻烦,上面对我们的开发其实帮助不大
        String rs3 = a+"";
        System.out.println(rs3 + 1);

将字符串类型的数值转换成数值本身对应的数据类型

// 2.把字符串类型的数值转换成对应的基本类型
        String ageStr = "29";
        // int ageI = Integer.parseInt(ageStr);
        int ageI = Integer.valueOf(ageStr);
        System.out.println(ageI + 1);

        String scoreStr = "99.5";
         // double score = Double.parseDouble(scoreStr);
        double score = Double.valueOf(scoreStr);
        System.out.println(score+0.1);

StringBuilder

代表可变字符串对象,相当于一个容器,既然是一个容器我们要将这个容器对象构造出来,就需要我们的类中构造器

public StringBuilder()  创建一个空白的字符串对象,不包含任何内容

public StringBuilder() 创建一个指定字符串内容的可变字符串对象

 方法名称:

public StringBuilder append(任意类型)  添加数据并返回StringBuilder对象本身

public StringBuilder reverse() 将对象的内容反转

public int length()  返回对象内容长度

public String toString()  通过toString()就可以实现把StringBuilder转换成String

public class test {
    public static void main(String[] args) {
        StringBuffer s = new StringBuffer("李小谦");
        //1.拼接内容
        s.append(12);
        s.append("hhh");
        s.append(true);
        // 2. 支持链式编程
        s.append(666).append(666).append(666);
        System.out.println(s);

        // 3.反转操作
        s.reverse();
        System.out.println(s);

        //4.返回字符串的长度
        System.out.println(s.length());

        //5.把StringBuilder对象转换成String类型
        String rs = s.toString();
        System.out.println(rs);
    }
}

我们来区分一下StringBuilder对象和String对象

StringBuilder创建的字符串对象是可变的,它可以在它自己身上执行一些操作

String创建的字符串对象是不可变的,对它进行了一些操作之后,它不会变,会将执行操作后的字符串另外创建一个String对象赋给它,就像下面一样,我们执行replace代码想要改变string对象的,但是没有创建一个对象来接收,所以这行代码没有意义,a不会改变,操作后a还是a

StringJoiner

BigDecimal

public class test {
    public static void main(String[] args) {
        // 小数失真的问题
        double a= 0.1;
        double b = 0.2;
        double c = a+b;
        System.out.println(c);
        System.out.println("---------------------");
        // 1. 把他们变成字符串
//        BigDecimal a1 = new BigDecimal(Double.toString(a));
//        BigDecimal b1 = new BigDecimal(Double.toString(b));
        // 推荐用一下方式,把小数转化成字符串对象再得到BigDecimal对象使用
        BigDecimal a1 = BigDecimal.valueOf(a);
        BigDecimal b1 = BigDecimal.valueOf(b);
        BigDecimal c1 = a1.add(b1);
        System.out.println(c1);
    }
}

重点说一下除法,在两个BigDecimal对象进行相除的时候,如果除不尽就会报错,我们就需要给它进行小数精确的设置

public class test {
    public static void main(String[] args) {
        BigDecimal i = BigDecimal.valueOf(0.1);
        BigDecimal j = BigDecimal.valueOf(0.3);
        BigDecimal k = i.divide(j,2, RoundingMode.HALF_UP);
        System.out.println(k);
        // 将BigDecimal对象转换成double类型的数据
        double rs = k.doubleValue();
        System.out.println(rs);
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/177703.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【黑马甄选离线数仓day01_项目介绍与环境准备】

1. 行业背景 1.1 电商发展历史 电商1.0: 初创阶段20世纪90年代&#xff0c;电商行业刚刚兴起&#xff0c;主要以B2C模式为主&#xff0c;如亚马逊、eBay等 ​ 电商2.0: 发展阶段21世纪初&#xff0c;电商行业进入了快速发展阶段&#xff0c;出现了淘宝、京东等大型电商平台&a…

Halcon Solution Guide I basics(3): Region Of Interest(有兴趣区域/找重点)

文章目录 文章专栏前言文章解读前言创建ROI案例1&#xff1a;直接截取ROI手动截取ROI 总结ROI套路获取窗口句柄截取ROI区域获取有效区域 Stop组合 文章专栏 Halcon开发 Halcon学习 练习项目gitee仓库 CSDN Major 博主Halcon文章推荐 前言 今天来看第三章内容&#xff0c;既然是…

忘记7-zip密码,如何解压文件?

7z压缩包设置了密码&#xff0c;解压的时候就需要输入正确对密码才能顺利解压出文件&#xff0c;正常当我们解压文件或者删除密码的时候&#xff0c;虽然方法多&#xff0c;但是都需要输入正确的密码才能完成。忘记密码就无法进行操作。 那么&#xff0c;忘记了7z压缩包的密码…

代码规范之-理解ESLint、Prettier、EditorConfig

前言 团队多人协同开发项目&#xff0c;困扰团队管理的一个很大的问题就是&#xff1a;无可避免地会出现每个开发者编码习惯不同、代码风格迥异&#xff0c;为了代码高可用、可维护性&#xff0c;需要从项目管理上尽量统一和规范代码。理想的方式需要在项目工程化方面&#xff…

力扣:175. 组合两个表(Python3)

题目&#xff1a; 表: Person ---------------------- | 列名 | 类型 | ---------------------- | PersonId | int | | FirstName | varchar | | LastName | varchar | ---------------------- personId 是该表的主键&#xff08;具有唯一值的列&#…

设计循环队列,解决假溢出问题

什么是假溢出&#xff1f; 当我们使用队列这种基本的数据结构时&#xff0c;很容易发现&#xff0c;随着入队和出队操作的不断进行&#xff0c;队列的数据区域不断地偏向队尾方向移动。当我们的队尾指针指向了队列之外的区域时&#xff0c;我们就不能再进行入队操作了&#xff…

【shell】循环语句(for、while、until)

目录 一、循环语句的特点 二、三种常用的循环 2.1 for循环 2.2 while循环 2.3 until循环 2.4 死循环 2.5 关于continue和break以及exit 三、实操案例 3.1 累加1到100&#xff08;5种办法&#xff0c;穿插多种运算习惯&#xff09; 3.2 批量修改文件名称 3.3 pi…

yapi==使用依赖包里的类作为入参/返回值导出后没有备注

比如模块A中有个MyDemoEntity类,在B中以依赖的形式引入了A,并在B的接口中以MyDemoEntity作为返回值,导出到YAPI发现MyDemoEntity的备注没了。 解决: 将A的内容安装到本地MAVEN仓库,并且需要将源码也一起安装 <build><resources><resource><director…

记录--手写一个 v-tooltip 指令

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 前言 日常开发中&#xff0c;我们经常遇到过tooltip这种需求。文字溢出、产品文案、描述说明等等&#xff0c;每次都需要写一大串代码&#xff0c;那么有没有一种简单的方式呢&#xff0c;这回我们用指…

第一百七十六回 如何创建渐变色边角

文章目录 1. 概念介绍2. 实现方法3. 代码与细节3.1 示例代码3.2 代码细节 4. 内容总结 我们在上一章回中介绍了"如何创建放射形状渐变背景"相关的内容&#xff0c;本章回中将介绍"如何创建渐变色边角".闲话休提&#xff0c;让我们一起Talk Flutter吧。 1.…

Axios使用方式

ajax是JQUERY封装的XMLHttprequest用来发送http请求 Axios简单点说它就是一个js库,支持ajax请求,发送axios请求功能更加丰富,丰富在哪不知道 1.npm使用方式 vue项目中 npm install axios 2.cdn方式 <script src"https://unpkg.com/axios/dist/axios.min.js">…

行情分析——加密货币市场大盘走势(11.22)

大饼昨日晚上打了止损&#xff0c;笔者入场了空单&#xff0c;目前来看上涨乏力&#xff0c;下跌是必然的&#xff0c;昨日的下跌跌破了蓝色上涨趋势线&#xff0c;而今日白天开始反弹&#xff0c;别着急抄底&#xff0c;下跌还没有结束。 空单策略&#xff1a;入场36500 止盈…

为UE和Unity开发者准备的Godot指南

为UE和Unity开发者准备的Godot指南 ——两位大哥打架&#xff0c;请带上我 这两天游戏行业又开始热闹了&#xff0c;昨天两条信息直接刷爆朋友圈&#xff0c;最大的两家游戏引擎公司怼起来了。 《为Unity开发者准备的虚幻引擎指南》&#xff1a; 为Unity开发者准备的虚幻引擎指…

Autocad2020切换经典界面

Autocad2020切换经典界面 1.更改1.1设置另存为 1.更改 1.1设置另存为

SQL语句执行过程

一条 SQL 的执行过程可以大致分为以下几个步骤&#xff1a; 连接器&#xff1a; ○ 客户端与数据库建立连接&#xff0c;并发送 SQL 语句给数据库服务。 ○ 连接器验证客户端的身份和权限&#xff0c;确保用户有足够的权限执行该 SQL 语句。查询缓存&#xff1a; ○ 连接器首先…

Redis面试内容,Redis过期策略,Redis持久化方式,缓存穿透、缓存击穿和缓存雪崩,以及解决办法

文章目录 一、redis什么是RedisRedis使用场景1、缓存2、数据共享[分布式](https://so.csdn.net/so/search?q分布式&spm1001.2101.3001.7020)3、分布式锁4、全局ID5、计数器6、限流7、位统计 Redis有5中数据类型&#xff1a; SSHLZRedis中一个key的值每天12点过期&#xff…

编码的发展历史

编码的发展历史 ASCII&#xff1a; ASCII编码使用7位二进制数表示一个字符&#xff0c;范围从0到127。每个字符都有一个唯一的ASCII码值与之对应。例如&#xff0c;大写字母"A"的ASCII码是65&#xff0c;小写字母"a"的ASCII码是97。 ASCII字符集包括英文…

【python基础】python可变序列与不可变序列

文章目录 前言一、序列类型定义二、对序列类型的切片操作三、使用 与 * 对序进行操作四、增量赋值 和 * 前言 本文主要讲可变序列与不可变序列一些简单的应用。 一、序列类型定义 按序列能否被修改分为&#xff1a;可变序列与不可变序列。 可变序列&#xff1a;可以进行增、…

短期风速预测|LSTM|ELM|批处理(matlab代码)

1主要内容 该程序是预测类的基础性代码&#xff0c;程序对河北某地区的气象数据进行详细统计&#xff0c;程序最终得到pm2.5的预测结果&#xff0c;通过更改数据很容易得到风速预测结果。程序主要分为三部分&#xff0c;分别是基于LSTM算法、基于ELM算法和基于LSTM和批处理组合…

vivado产生报告阅读分析15-时序报告11

Report Clock Domain Crossings “ Clock Domain Crossings (CDC) ” &#xff08; 时钟域交汇 &#xff09; 报告可对设计中的时钟域交汇执行结构分析。此信息可用于识别潜在不安全的 CDC &#xff0c; 此类 CDC 可能导致亚稳态或数据一致性问题。虽然 CDC 报告与“ Clock …