Java中Math类、System类、toString方法、equals方法及冒泡排序实现

简介: Math类、System类、toString方法、equals方法及冒泡排序实现的简单示例

 一、Math类的应用

1、Math类的概述

Math包含执行基本数字运算的方法

2、Math中方法的调用方式

Math类中无法构造方法,但内部的方法都是静态的,则可以通过  类名.进行调用

3、Math类的常用方法

方法名 说明
public static int abs(int a) 返回参数的绝对值
public static double ceil(double a) 返回大于或等于参数的最小double值,等于一个整数
public static double floor(double a) 返回小于或等于参数的最大double值,等于一个整数
public static int round(float a) 按照四舍五入返回最接近参数的int
public static int max(int a,int b) 返回两个int值中的较大值
public static int min(int a,int b) 返回两个int值中的较小值
public static double pow(doublie a,double b) 返回a的b次幂的值
public static double random() 返回值为double的正值,[0.0,1.0)

二、System类的应用

System类的常用方法

方法名 说明
public static void exit(int status) 终止当前运行的Java虚拟机,非零表示异常终止
public static long currentTimeMillis() 返回当前时间(以毫秒为单位)

示例代码:

需求:在控制台输出1-10000,计算这段代码执行了多少毫秒

public class SystemDemo {
    public static void main(String[] args) {
        // 获取开始的时间节点
        long start = System.currentTimeMillis();
        for (int i = 1; i <= 10000; i++) {
            System.out.println(i);
        }
        // 获取代码运行结束后的时间节点
        long end = System.currentTimeMillis();
        System.out.println("共耗时:" + (end ­ start) + "毫秒");
    }
}

image.gif

三、Object类的toString方法

Object类概述:

Object是类层次结构的根,每个类都可以将Object作为超类。所有类都直接或者间接继承自该类,换句话说,该类所具备的方法,所有类都会有一份。

IDEA查看源码的方式:

选中方法,按下Ctrl+B

重写toString方法的方式:

1、Alt+Insert选择toString

2、在类的空白区域,右键 -> Generate ->选择toString

toString方法的作用:

以良好的格式,更方便的展示对象中的属性值

示例代码:

class Student extends Object {
    private String name;
    private int age;
    public Student() {
    }
    public Student(String name, int age) {
        this.name = name;
        this.age = 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;
    }
    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
public class ObjectDemo {
    public static void main(String[] args) {
        Student s = new Student();
        s.setName("小明");
        s.setAge(18);
        System.out.println(s); 
        System.out.println(s.toString()); 
    }
}

image.gif

四、Object类的equals方法

equals方法的作用:

用于对象之间的比较,返回true和false的结果

举例:s1.equals(s2); s1和s2是两个对象

重写equals方法的场景:

不希望比较对象的地址值,想要结合对象属性进行比较的时候

重写equals方法的方式:

1、alt+insert选择equals() and hashCode(),Intellij Default,一路next,finish即可

2、在类的空白区域,右键 -> Generate -> 选择equals() and hashCode(),后面的同上

示例代码:

class Student {
    private String name;
    private int age;
    public Student() {
    }
    public Student(String name, int age) {
        this.name = name;
        this.age = 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;
    }
    @Override
    public boolean equals(Object o) {
        //this ­­ s1
        //o ­­ s2
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o; //student ­­ s2
        if (age != student.age) return false;
        return name != null ? name.equals(student.name) : student.name == null;
    }
}
public class ObjectDemo {
    public static void main(String[] args) {
        Student s1 = new Student();
        s1.setName("c小明");
        s1.setAge(18);
        Student s2 = new Student();
        s2.setName("小明");
        s2.setAge(18);
        //需求:比较两个对象的内容是否相同
        System.out.println(s1.equals(s2));
    }
}

image.gif

五、冒泡排序原理

● 冒泡排序概述:

       一种排序的方式,对要进行排序的数据中相邻的数据进行两两比较,将较大的数据放在 后面,依次对所有的数据进行操作,直至所有数据按要求完成排序

● 如果有n个数据进行排序,总共需要比较n-1次

● 每一个比较完毕,下一次的比较就会少一个数据参与

代码实现:

/*
    冒泡排序:
        一种排序的方式,对要进行排序的数据中相邻的数据进行两两比较,将较大的数据放在后面,
        依次对所有的数据进行操作,直至所有数据按要求完成排序
 */
public class ArrayDemo {
    public static void main(String[] args) {
        //定义一个数组
        int[] arr = {24, 69, 80, 57, 13};
        System.out.println("排序前:" + arrayToString(arr));
        // 这里减1,是控制每轮比较的次数
        for (int x = 0; x < arr.length ­ 1; x++) {
            // ­1是为了避免索引越界,­x是为了调高比较效率
            for (int i = 0; i < arr.length ­ 1 ­ x; i++) {
                if (arr[i] > arr[i + 1]) {
                    int temp = arr[i];
                    arr[i] = arr[i + 1];
                    arr[i + 1] = temp;
                }
            }
        }
        System.out.println("排序后:" + arrayToString(arr));
    }
    //把数组中的元素按照指定的规则组成一个字符串:[元素1, 元素2, ...]
    public static String arrayToString(int[] arr) {
        StringBuilder sb = new StringBuilder();
        sb.append("[");
        for (int i = 0; i < arr.length; i++) {
            if (i == arr.length ­ 1) {
                sb.append(arr[i]);
            } else {
                sb.append(arr[i]).append(", ");
            }
        }
        sb.append("]");
        String s = sb.toString();
        return s;
    }
}

image.gif


目录
打赏
0
0
0
0
32
分享
相关文章
Java中的异常处理方法
本文深入剖析Java异常处理机制,介绍可检查异常、运行时异常和错误的区别与处理方式。通过最佳实践方法,如使用合适的异常类型、声明精确异常、try-with-resources语句块、记录异常信息等,帮助开发者提高代码的可靠性、可读性和可维护性。良好的异常处理能保证程序稳定运行,避免资源泄漏和潜在问题。
|
9天前
|
Java代码结构解析:类、方法、主函数(1分钟解剖室)
### Java代码结构简介 掌握Java代码结构如同拥有程序世界的建筑蓝图,类、方法和主函数构成“黄金三角”。类是独立的容器,承载成员变量和方法;方法实现特定功能,参数控制输入环境;主函数是程序入口。常见错误包括类名与文件名不匹配、忘记static修饰符和花括号未闭合。通过实战案例学习电商系统、游戏角色控制和物联网设备监控,理解类的作用、方法类型和主函数任务,避免典型错误,逐步提升编程能力。 **脑图速记法**:类如太空站,方法即舱段;main是发射台,static不能换;文件名对仗,括号要成双;参数是坐标,void不返航。
29 5
Java容器及其常用方法汇总
Java Collections框架提供了丰富的接口和实现类,用于管理和操作集合数据。
Java容器及其常用方法汇总
|
27天前
|
java.time常用方法汇总
`java.time` API 是从 Java 8 开始引入的时间日期处理库,旨在替代老旧的 `java.util.Date` 和 `Calendar`。它提供了更简洁、强大和灵活的方式处理日期、时间、时区及时间间隔,支持全球化和时间计算需求。API 包含获取当前时间、创建指定时间、解析和格式化字符串、进行加减运算、比较时间、获取年月日时分秒、计算时间间隔、时区转换以及判断闰年等功能。示例代码展示了如何使用这些功能,极大简化了开发中的时间处理任务。
冒泡排序-选择排序-插入排序-快速排序(java版实现)(下)
排序就是将输入的数字按照从小到大的顺序进行排列。由于排序是一个比较基础的问题,所以排序算法的种类也比较多。最近学习了几种常见的排序算法,下面介绍如何使用java代码实现对数组进行从下到大排序。
137 0
冒泡排序-选择排序-插入排序-快速排序(java版实现)(下)
冒泡排序(Java实现)
冒泡排序(Java实现)
136 0
冒泡排序之Java实现
      一、冒泡排序算法       1、 比较相邻的元素。如果第一个比第二个大,就交换他们两个。      2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
991 0
|
15天前
|
【Java并发】【线程池】带你从0-1入门线程池
欢迎来到我的技术博客!我是一名热爱编程的开发者,梦想是编写高端CRUD应用。2025年我正在沉淀中,博客更新速度加快,期待与你一起成长。 线程池是一种复用线程资源的机制,通过预先创建一定数量的线程并管理其生命周期,避免频繁创建/销毁线程带来的性能开销。它解决了线程创建成本高、资源耗尽风险、响应速度慢和任务执行缺乏管理等问题。
138 60
【Java并发】【线程池】带你从0-1入门线程池
Java网络编程,多线程,IO流综合小项目一一ChatBoxes
**项目介绍**:本项目实现了一个基于TCP协议的C/S架构控制台聊天室,支持局域网内多客户端同时聊天。用户需注册并登录,用户名唯一,密码格式为字母开头加纯数字。登录后可实时聊天,服务端负责验证用户信息并转发消息。 **项目亮点**: - **C/S架构**:客户端与服务端通过TCP连接通信。 - **多线程**:采用多线程处理多个客户端的并发请求,确保实时交互。 - **IO流**:使用BufferedReader和BufferedWriter进行数据传输,确保高效稳定的通信。 - **线程安全**:通过同步代码块和锁机制保证共享数据的安全性。
53 23
|
11天前
|
【源码】【Java并发】【线程池】邀请您从0-1阅读ThreadPoolExecutor源码
当我们创建一个`ThreadPoolExecutor`的时候,你是否会好奇🤔,它到底发生了什么?比如:我传的拒绝策略、线程工厂是啥时候被使用的? 核心线程数是个啥?最大线程数和它又有什么关系?线程池,它是怎么调度,我们传入的线程?...不要着急,小手手点上关注、点赞、收藏。主播马上从源码的角度带你们探索神秘线程池的世界...
77 0
【源码】【Java并发】【线程池】邀请您从0-1阅读ThreadPoolExecutor源码

热门文章

最新文章