详讲Java开发中的六个常用API(Math,System,Object,Integer,Date)(一)

简介: 详讲Java开发中的六个常用API(Math,System,Object,Integer,Date)(一)

常用API


Math


1.1 Math概述



public final class Math

extends Object

Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。

没有构造方法,

使用: 看类的成员是否都是静态,即static修饰,如果是,直接类名调方法


1.2Math的常用方法



public class MathDemo {
    public static void main(String[] args) {
        //    public static int abs(int a) 返回参数的绝对值
        System.out.println(Math.abs(-52));
        System.out.println(Math.abs(22));
//    public static double ceil(double a) 返回大于或等于参数的最小double值,等于一个整数
        System.out.println(Math.ceil(12.24));
        System.out.println(Math.ceil(-12.33));
//    public static double floor(double a 返回小于或等于参数的最大double值,等于一个整数
        System.out.println(Math.floor(11.25));
        System.out.println(Math.floor(11.99));
//            public static int round(float a) 按照四舍五入返回最接近参数的int
        System.out.println(Math.round(30.65F));
        System.out.println(Math.round(29.49F));
//    public static int max(int a,int b) 返回两个int值中的较大值
        System.out.println(Math.max(111,999));
//    public static int min(int a,int b) 返回两个int值中的较小值
        System.out.println(Math.min(111,999));
//    public static double pow(double a,double b)返回a的b次幂的值
        System.out.println(Math.pow(2,2));
//    public static double random() 返回值为double的正值,[0.0,1.0)
        System.out.println(Math.random());
    }
}


2.1 System类



public final class

Systemextends Object

System 类包含一些有用的类字段和方法。它不能被实例化。被static稀释,直接类名调对象


在 System 类提供的设施中,有标准输入、标准输出和错误输出流;对外部定义的属性和环境变量的访问;加载文件和库的方法;还有快速复制数组的一部分的实用方法。


2.2 System常用方法


/*
system 常用方法
 */
public class SystemDemo {
    public static void main(String[] args) {
        //System.out.println("开始");
        //public static void exit(int status),终止当前运行的java虚拟机,非零表示异常终止
        //System.exit(0);
        //System.out.println("结束");
        //public static void currenTimeMillis(),返回当前时间,以毫秒为单位
        System.out.println(System.currentTimeMillis() / 1000 / 60 / 60 / 24 / 365);
        //计算
        long start = System.currentTimeMillis();
        for (int i = 0; i<1000000; i++){
            System.out.println(i);
        }
        long end = System.currentTimeMillis();
        System.out.println((double)(end - start)/1000);
    }
}



3.1 Object类的概述


public class Object类

Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。





equals方法

public boolean equals(Object obj)指示其他某个对象是否与此对象“相等”。

equals 方法在非空对象引用上实现相等关系:


自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true。

对称性:对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true。

传递性:对于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 应返回 true。

一致性:对于任何非空引用值 x 和 y,多次调用 x.equals(y) 始终返回 true 或始终返回 false,前提是对象上 equals 比较中所用的信息没有被修改。

对于任何非空引用值 x,x.equals(null) 都应返回 false。

Object 类的 equals 方法实现对象上差别可能性最大的相等关系;即,对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true(x == y 具有值 true)。

学生类:


public class Student {
    private String name;
    private int age;
    public Student(){
    }
    public Student(String name, 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;
    }
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        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("hmm");
        s1.setAge(19);
        Student s2 = new Student();
        s2.setName("hmm");
        s2.setAge(19);
        System.out.println(s1.equals(s2));//未重写equals方法,比较的是地址
    }
}


注意:当此方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。


参数:

obj - 要与之比较的引用对象。

返回:

如果此对象与 obj 参数相同,则返回 true;否则返回 false。

另请参见:

hashCode(), Hashtable


toString方法

public String toString()返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。

Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:


getClass().getName() + ‘@’ + Integer.toHexString(hashCode())


返回:

该对象的字符串表示形式。


学生类:


public 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 String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}


测试类:


public class ObjectDemo {
    public static void main(String[] args) {
        Student s  =new Student();
        s.setName("hmm");
        s.setAge(10);
        System.out.println(s);
        System.out.println(s.toString());
    }
}



Arrays


4.1 冒泡排序


排序:将一组数据按照固定规则进行排列


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

1. 算法步骤

比较相邻的元素。如果第一个比第二个大,就交换他们两个。


对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。


针对所有的元素重复以上的步骤,除了最后一个。


持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

图示:



public class BubbleSort implements IArraySort {
    @Override
    public int[] sort(int[] sourceArray) throws Exception {
        // 对 arr 进行拷贝,不改变参数内容
        int[] arr = Arrays.copyOf(sourceArray, sourceArray.length);
        for (int i = 1; i < arr.length; i++) {
            // 设定一个标记,若为true,则表示此次循环没有进行交换,也就是待排序列已经有序,排序已经完成。
            boolean flag = true;
            for (int j = 0; j < arr.length - i; j++) {
                if (arr[j] > arr[j + 1]) {
                    int tmp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = tmp;
                    flag = false;
                }
            }
            if (flag) {
                break;
            }
        }
        return arr;
    }
}


注:


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

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


4.2 Arrays类的概述和常用方法



public class Arrays

extends Object


此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。


除非特别注明,否则如果指定数组引用为 null,则此类中的方法都会抛出 NullPointerException。


此类中所含方法的文档都包括对实现 的简短描述。应该将这些描述视为实现注意事项,而不应将它们视为规范 的一部分。实现者应该可以随意替代其他算法,只要遵循规范本身即可。(例如,sort(Object[]) 使用的算法不必是一个合并排序算法,但它必须是稳定的。)


此类是 Java Collections Framework 的成员。



toString 方法


sort方法


import java.util.Arrays;
public class ArraysDemo {
    public static void main(String[] args) {
        int arr[] = {10,52,555,74,2,6,5};
        System.out.println("排序前"+Arrays.toString(arr));
        Arrays.sort(arr);
        System.out.println("排序后"+Arrays.toString(arr));
    }
}



注:工具类的设计思想


构造方法用private修饰

成员用public static 修饰


5.基本类型包装类


5.1基本数据类型包装类概述


将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据

常用的操作之一:用于基本数据类型与字符串之间的转换



基本数据类型和包装类的区别


区别:


包装类是对象,拥有方法和字段,对象的调用都是通过引用对象的地址,基本数据类型不是

包装类型是引用的传递,基本类型是值的传递

声明方式不同、基本数据类型不需要new关键字,而包装类型需要new在堆内存中进行new来分配内存空间

存储位置不同,基本数据类型直接将值保存在值栈中,而包装类型是把对象放在堆中,然后通过对象的引用来调用它们

初始值不同,eg:int的初始值为0、boolean的初始值为fales ,而包装类型的初始值为null

使用方法不同,基本数据类型直接赋值使用就好,而包装类型是在集合如collction Map时会使用


5.2 Integer 类的概述和使用




构造方法


Integer :类在对象中包装了一个基本类型 int 的值。Integer 类型的对象包含一个 int 类型的字段。


此外,该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,还提供了处理 int 类型时非常有用的其他一些常量和方法。


public class IntegerDemo {
    public static void main(String[] args) {
        //构造方法摘要
//Integer(int value)
//          构造一个新分配的 Integer 对象,它表示指定的 int 值。
//Integer(String s)
//          构造一个新分配的 Integer 对象,它表示 String 参数所指示的 int 值。
//
        Integer i = new Integer(100);
        System.out.println(i);
        Integer i1 = new Integer("1000");//由数字组成的字符串
        System.out.println(i1);
        //static Integer valueOf(int i)
        //          返回一个表示指定的 int 值的 Integer 实例。
        //static Integer valueOf(String s)
        //          返回保存指定的 String 的值的 Integer 对象。
        Integer i2 = Integer.valueOf(10);
        System.out.println(i2);
        Integer i3 = Integer.valueOf("10000");
        System.out.println(i3);
    }
}


5.3 int和 String 的相互转化


基本类型包装类的最常见的操作就是: 用于基本类型和字符串之间的相互转换


public class ZhuanHuan {
    public static void main(String[] args) {
        //int--->String
        // 方法一
        int number = 100;
        String i = "" + number;
        System.out.println(i);
        //方法二
        //static String valueOf(int i)
        //          返回 int 参数的字符串表示形式。
        String i1 = String.valueOf(number);
        System.out.println(i1);
        System.out.println("-----------------");
        //String --> Integer -- > int
        String s1 = "100";
        //String --->Integer
        Integer i2 = Integer.valueOf(s1);
        // int intValue()
        //          以 int 类型返回该 Integer 的值。
        int x = i2.intValue();
        System.out.println(x);
        //f方法二
        //static int parseInt(String s) 
        //          将字符串参数作为有符号的十进制整数进行解析。 
        int y = Integer.parseInt(s1);
        System.out.println(y);
    }
}


5.4自动装箱和拆箱


装箱:把基本数据类型转换为对应包装类类型

拆箱:把包装类型转换为对应的基本数据类型


// - 装箱:把基本数据类型转换为对应包装类类型
// - 拆箱:把包装类型转换为对应的基本数据类型
public class BaoChai {
    public static void main(String[] args) {
        // - 装箱:把基本数据类型转换为对应包装类类型
        Integer i = Integer.valueOf(100);
        Integer ii =100;//自动装箱Integer.valueOf(100);
        //- 拆箱:把包装类型转换为对应的基本数据类型
       /* ii = ii.intValue()+200;
        System.out.println(ii);*/
        ii+=200;//内部隐含ii.intValue()
        System.out.println(ii);
        Integer iii = null;
        if(iii!=null){
            iii+=300;//NullPointerException//内部隐含ii.intValue(),所以null掉对象,会触发空指针异常
        }
    }
}


注意: 在使用包装类类型的时候,若果做操作,最好先判断是否为null

我们推荐的是:只要是对象,在使用之前就必须进行不为null判断

目录
相关文章
|
5天前
|
JSON 安全 API
如何使用Python开发API接口?
在现代软件开发中,API(应用程序编程接口)用于不同软件组件之间的通信和数据交换,实现系统互操作性。Python因其简单易用和强大功能,成为开发API的热门选择。本文详细介绍了Python开发API的基础知识、优势、实现方式(如Flask和Django框架)、实战示例及注意事项,帮助读者掌握高效、安全的API开发技巧。
25 3
如何使用Python开发API接口?
|
1天前
|
存储 SQL API
探索后端开发:构建高效API与数据库交互
【10月更文挑战第36天】在数字化时代,后端开发是连接用户界面和数据存储的桥梁。本文深入探讨如何设计高效的API以及如何实现API与数据库之间的无缝交互,确保数据的一致性和高性能。我们将从基础概念出发,逐步深入到实战技巧,为读者提供一个清晰的后端开发路线图。
|
1天前
|
监控 搜索推荐 安全
探究亚马逊详情API接口:开发与应用
在数字化时代,亚马逊作为全球领先的电商平台,为商家和消费者提供了丰富的商品信息和便捷的购物体验。本文深入探讨了亚马逊详情API接口的获取与运用,帮助开发者和商家实时监控商品数据、分析市场趋势、优化价格策略、分析竞争对手、构建推荐系统及自动化营销工具,从而在竞争中占据优势。文章还提供了Python调用示例和注意事项,确保API使用的安全与高效。
12 3
|
3天前
|
SQL 安全 Java
安全问题已经成为软件开发中不可忽视的重要议题。对于使用Java语言开发的应用程序来说,安全性更是至关重要
在当今网络环境下,Java应用的安全性至关重要。本文深入探讨了Java安全编程的最佳实践,包括代码审查、输入验证、输出编码、访问控制和加密技术等,帮助开发者构建安全可靠的应用。通过掌握相关技术和工具,开发者可以有效防范安全威胁,确保应用的安全性。
13 4
|
4天前
|
缓存 监控 Java
如何运用JAVA开发API接口?
本文详细介绍了如何使用Java开发API接口,涵盖创建、实现、测试和部署接口的关键步骤。同时,讨论了接口的安全性设计和设计原则,帮助开发者构建高效、安全、易于维护的API接口。
21 4
|
5天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
33 4
|
4天前
|
XML JSON API
【PHP开发专栏】PHP RESTful API设计与开发
随着互联网技术的发展,前后端分离成为Web开发的主流模式。本文介绍RESTful API的基本概念、设计原则及在PHP中的实现方法。RESTful API是一种轻量级、无状态的接口设计风格,通过HTTP方法(GET、POST、PUT、DELETE)操作资源,使用JSON或XML格式传输数据。在PHP中,通过定义路由、创建控制器、处理HTTP请求和响应等步骤实现RESTful API,并强调了安全性的重要性。
11 2
|
10天前
|
SQL Java 程序员
倍增 Java 程序员的开发效率
应用计算困境:Java 作为主流开发语言,在数据处理方面存在复杂度高的问题,而 SQL 虽然简洁但受限于数据库架构。SPL(Structured Process Language)是一种纯 Java 开发的数据处理语言,结合了 Java 的架构灵活性和 SQL 的简洁性。SPL 提供简洁的语法、完善的计算能力、高效的 IDE、大数据支持、与 Java 应用无缝集成以及开放性和热切换特性,能够大幅提升开发效率和性能。
|
4天前
|
安全 Java 测试技术
Java开发必读,谈谈对Spring IOC与AOP的理解
Spring的IOC和AOP机制通过依赖注入和横切关注点的分离,大大提高了代码的模块化和可维护性。IOC使得对象的创建和管理变得灵活可控,降低了对象之间的耦合度;AOP则通过动态代理机制实现了横切关注点的集中管理,减少了重复代码。理解和掌握这两个核心概念,是高效使用Spring框架的关键。希望本文对你深入理解Spring的IOC和AOP有所帮助。
9 0
|
4天前
|
Java API Android开发
kotlin和java开发优缺点
kotlin和java开发优缺点
15 0
下一篇
无影云桌面