JavaSE JDK中的常用API 01

1. 字符串相关的类

1.1 String(效率最低)

代表字符串。java程序中的所有的字符串都是此类的实现实例。是一个final类(不可变的特性),字符串是常量,双引号,创建之后不可以修改。对象字符存储在value[]数组中

String在内部定义了final char[] value用于存储字符串数据。
不可变性:用string 定义一个字符串,如果把它重新定义那么他只能去新建一个值去声明,不可以覆盖掉原来的值,这就导致效率很低下。

String类型
直接定义的数据在常量池中,new的数据在堆空间中。
常量和常量的连接在常量池中,且常量池不会存在相同的内容。
只要其中有一个变量就在堆中。如果拼接的值调用intern()方法就在常量池中。

字符串–>基本数据类型–>包装类

String str1="123";

错误的:int num=(int) str1;只有子父类才可以强制类型转换
正确的:int num=Integer.parseInt(str1);

将基本数据类型和包装类转换为string
调用string重载的valueOf(xxx)

 String str2=String.valueOf(num);
 String str3=num+"";(str3在堆中)
 
转化为char数组[] :调用string 的tocharArray()方法. 
str.tocharArray();

转化为String类型:调用string的构造器  String str2=new 
Stringbyte[]数组之间的转换:调用StringgetByte()方法。

1.2 StringBuffer(线程安全)

线程安全,但是效率低。

增:StringBuffer append(xxx):提供了很多的append()方法,用于进行字符串的拼接。
删:StringBuffer delete(int start,int end)删除指定位置的内容。
改:StringBuffer replace(int start,int end,String Str)[start,end]位置替换为str。
查:StringBuffer CharAt(int n ),查看指定位置的参数。
插:StringBuffer insert(int offset,xxx)在指定的位置插入数据。 
长度: StringBuffer lenght()
遍历:1.for()+charAt()    2.toString()

在内存中声明了会创建一个长度为16的char[]数组。
当appeng和insert时,如果原来的数组长度不够可以进行扩容。
上面的方法支持方法链操作。

1.3 StringBuild(线程不安全)

线程不安全,效率高
(JDK5.0新增)形式上和StringBuffer是一样的,但是线程是安全的。

2. 日期时间相关

2.1 java.util.Data类

两个构造器的使用方法

Date date1 = new Date()://创建了对应当前时间的构造器。
Date date = new Date(1608031303732l)://创建时间毫秒的构造器

两个方法的使用

dateTime()       获取当前date对象的时间戳
toString()        获取1970-1-1到现在的毫秒数。

2.2 java.sql.date类

数据库中的date类

Date date = new Date(1608031303732l)://创建时间毫秒的构造器

只能打印出年月日。

sql.date--->util.data(多态)
Date date2 = new java.sql.Date(1608031303732l);
java.sql.Date date5=(java.sql.Date)date2;
util-->sql.date  相当于是父类的往子类的转

2.3 simpleDateFormat:格式化日期

格式化过程:format()
解析:格式化的逆过程:parse()

将现在的时间按照默认的时间格式输出出来。
必须是特定的格式,不要
//实例化(空参的方式)//使用默认的构造器

SimpleDateFormat sdf=new SimpleDateFormat();
Date date = new Date();
String format = sdf.format(date);
System.out.println(format);

通过调用构造器来输出相对应的格式

SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss" );
Date date1=sdf.parse(str);

线程安全的方式:
DateTimeFormat方法实现和

通过调用构造器来输出相对应的格式

2.4 Cclendar 日历类

在 Java 中,Calendar 类是用于操作日期和时间的抽象基类,提供了对日期字段(如年、月、日等)的操作和计算。Calendar
类是一个抽象类,不能直接实例化,但可以通过其子类 GregorianCalendar 等来创建实例。

日期和时间操作

Calendar 类允许你获取和设置日期和时间的各个部分,如年、月、日、时、分、秒等。
可以进行日期的加减操作,例如增加一天、减少一个月等。

本地化支持:

Calendar 提供了本地化支持,可以根据不同的语言环境和时区获取和设置日期和时间。

字段访问:
可以通过 get(int field) 方法获取特定日期字段的值,例如 Calendar.YEAR、Calendar.MONTH、Calendar.DAY_OF_MONTH 等。

日期比较:
可以使用 compareTo(Calendar anotherCalendar) 方法比较两个 Calendar 对象表示的日期。

格式化和解析:
Calendar 可以通过 DateFormat 对象进行日期和时间的格式化和解析,将日期和时间对象转换为字符串,或者从字符串解析成日期和时间对象。

import java.util.Calendar;

public class CalendarExample {
    public static void main(String[] args) {
        // 获取当前日期和时间的 Calendar 对象
        Calendar calendar = Calendar.getInstance();

        // 获取并输出当前的年、月、日、时、分、秒
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH) + 1; // 月份从0开始计数,需要加1
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        int hour = calendar.get(Calendar.HOUR_OF_DAY);
        int minute = calendar.get(Calendar.MINUTE);
        int second = calendar.get(Calendar.SECOND);

        System.out.println("当前时间:");
        System.out.println(year + "年" + month + "月" + day + "日 " + hour + "时" + minute + "分" + second + "秒");

        // 增加一天并输出
        calendar.add(Calendar.DAY_OF_MONTH, 1);
        int nextDay = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println("明天是:" + nextDay + "日");
    }
}

3. 比较器

用来比较大小 实现自然排序的方式有两种: 只要在类中涉及到了比较的时候,我们就应该使用排序。

自然排序:对于自定义的类我们需要在,自定义的内部实现comparable接口,重写comparTo方法在方法体我们写比较的过程。

两种方法的返回值类型都是int类型,如果返回值类型为正数则表示大于(>),为负数则是(<)返回值是0则是(=)返回值为0时我们还可以在方法体的内部再定义一个比较其他的属性,如果类型为String和包装类的话,就可以直接用compar()方法排序,不是的话我们又要重写。

两种方式的对比,第一种是让类去实现(comparable接口,一旦一定就可以保证comparable接口实现类的对象在任何的位置都可以来比较大小),第二种是调用sort方法的时候临时去写(comparator接口只可以临时用一次)。

3.1 Comparable

自然排序:Java.lang.Comparable
String和包装类排序的话直接可以直接调用compare()方法。如果我们需要让自定义的类实现comparable接口,我们要重写compareTo(obj)方法,方法中指明如何排序。(如果价格校内共同我们可以再写一个if语句按照别的属性排序。)

Comparable 接口位于 java.lang 包中,它允许一个类的实例对象自己和另一个对象进行比较。实现了 Comparable
接口的类必须实现 compareTo(Object obj)
方法,该方法返回一个负整数、零或正整数,分别表示当前对象小于、等于或大于传入的对象

public class Person implements Comparable<Person> {
    private String name;
    private int age;

    // Constructors, getters, and setters

    @Override
    public int compareTo(Person other) {
        // 按照年龄进行比较
        return Integer.compare(this.age, other.age);
    }
}

3.2 Comparator

定制排序:Java.util.Comparator
定制排序:当元素的类型没有实现comparable接口的时候,如果是一个数组我们用Arrys.sotr(arr,new comparator)的方式直接书写方法体。里面定义的有两种类型的数据。

import java.util.Comparator;

public class PersonAgeComparator implements Comparator<Person> {
    @Override
    public int compare(Person p1, Person p2) {
        // 按照年龄进行比较
        return Integer.compare(p1.getAge(), p2.getAge());
    }
}

4. system系统类

system 类是一个包含了一些标准输入、输出和错误输出方法,以及系统属性和环境的 final 类。它位于 java.lang 包中,因此无需导入即可直接使用。
标准输入输出:

4.1 常用API

System.out:标准输出流,通常用于向控制台打印输出信息。

System.out.println("Hello, World!");
System.err:标准错误流,用于输出错误信息。
System.err.println("Error: something went wrong");

System.in:标准输入流,通常用于从控制台读取输入。

Scanner scanner = new Scanner(System.in);
System.out.print("Enter your name: ");
String name = scanner.nextLine();

系统属性:

System.getProperties():获取当前系统的属性集合,返回一个 Properties 对象。
System.getProperty(String key):获取指定系统属性的值。
String javaVersion = System.getProperty("java.version");

环境变量:

System.getenv(String name):获取指定环境变量的值。
System.getenv():获取所有环境变量的集合。
String path = System.getenv("PATH");

内存管理:

System.gc():请求 JVM 进行垃圾回收。
System.exit(int status):终止当前运行的 Java 虚拟机,参数为退出状态码。

if (condition) {
    System.exit(0); // 正常退出
} else {
    System.exit(1); // 异常退出
}

当前时间:

System.currentTimeMillis():返回当前时间的毫秒数,通常用于性能测试和计时。
long currentTimeMillis = System.currentTimeMillis();

数组复制:

System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length):将数组从指定源数组复制到目标数组。
int[] srcArray = {1, 2, 3, 4, 5};
int[] destArray = new int[5];
System.arraycopy(srcArray, 0, destArray, 0, srcArray.length);

4.2 注意事项

  1. System 类中的大多数方法是静态的,因此可以直接通过类名调用,如System.out.println()。
  2. System.exit(int status) 方法会终止当前程序的执行,注意在使用时确保合理的退出条件和状态码。
  3. System.gc() 方法只是请求 JVM 进行垃圾回收,并不能保证立即执行,因此不应该依赖它来进行程序逻辑的管理。

5. Math函数类

在 Java 中,Math 类是一个包含了数学运算方法的工具类,位于 java.lang
包中,因此无需额外导入即可使用。它提供了常见的数学函数和常量,可以直接在程序中进行数学计算。

常数

Math.PI:表示圆周率 π 的常数值。
Math.E:表示自然对数的底数 e 的常数值。

基本数学运算

Math.abs(x):返回 x 的绝对值。
Math.max(x, y):返回 x 和 y 中的较大值。
Math.min(x, y):返回 x 和 y 中的较小值。
Math.sqrt(x):返回 x 的平方根。
Math.cbrt(x):返回 x 的立方根。
Math.pow(x, y):返回 x 的 y 次幂。
Math.exp(x):返回 e 的 x 次幂。
Math.log(x):返回 x 的自然对数(以 e 为底)。
Math.log10(x):返回 x 的以 10 为底的对数。
Math.sin(x)Math.cos(x)Math.tan(x):返回 x 的正弦、余弦和正切值(x 的单位是弧度)。
Math.asin(x)Math.acos(x)Math.atan(x):返回 x 的反正弦、反余弦和反正切值(结果的单位是弧度)。
Math.toDegrees(x):将角度 x 从弧度转换为度数。
Math.toRadians(x):将角度 x 从度数转换为弧度。

随机数

Math.random():返回一个大于等于 0.0 且小于 1.0 的随机浮点数。

其他

Math.floor(x):返回不大于 x 的最大整数(向下取整)。
Math.ceil(x):返回不小于 x 的最小整数(向上取整)。
Math.round(x):返回最接近 x 的 long 类型整数,四舍五入。
Math.toIntExact(x):将 long 类型转换为 int 类型,如果溢出则抛出 ArithmeticException 异常。

6. biginteger 和 bigdecimal

BigInteger 和 BigDecimal 是 Java 中用于处理大整数和大浮点数的类,它们位于 java.math
包中,主要用于在需要精确计算和处理超过 long 或 double 范围的数值时使用。

6.1 BigInteger 类

BigInteger 类用于表示任意精度的整数,可以处理比 long 类型更大范围的整数值,同时提供了基本的算术运算和比较操作。

主要特点和用法:

  1. 可以表示任意大的整数值,不受 int 或 long 类型的范围限制。
  2. 提供了基本的算术运算方法,如加法、减法、乘法、除法和取模运算。
  3. 不可变类,所有的运算操作都会返回一个新的 BigInteger 实例。
import java.math.BigInteger;

public class BigIntegerExample {
    public static void main(String[] args) {
        BigInteger num1 = new BigInteger("123456789012345678901234567890");
        BigInteger num2 = new BigInteger("987654321098765432109876543210");

        BigInteger sum = num1.add(num2);
        BigInteger difference = num1.subtract(num2);
        BigInteger product = num1.multiply(num2);
        BigInteger quotient = num1.divide(num2);
        BigInteger remainder = num1.remainder(num2);

        System.out.println("Sum: " + sum);
        System.out.println("Difference: " + difference);
        System.out.println("Product: " + product);
        System.out.println("Quotient: " + quotient);
        System.out.println("Remainder: " + remainder);
    }
}

6.2 BigDecimal 类

BigDecimal 类用于表示任意精度的浮点数,提供了高精度的十进制运算,适用于金融和精确计算场景。

  1. 可以处理精确的十进制运算,避免了浮点数计算中的舍入误差。
  2. 提供了基本的算术运算方法,如加法、减法、乘法、除法和取模运算。
  3. 可以设置精度和舍入模式,以控制计算的精度和舍入规则。
import java.math.BigDecimal;
import java.math.RoundingMode;

public class BigDecimalExample {
    public static void main(String[] args) {
        BigDecimal num1 = new BigDecimal("1234567890.12345678901234567890");
        BigDecimal num2 = new BigDecimal("9876543210.98765432109876543210");

        BigDecimal sum = num1.add(num2);
        BigDecimal difference = num1.subtract(num2);
        BigDecimal product = num1.multiply(num2);
        BigDecimal quotient = num1.divide(num2, 20, RoundingMode.HALF_UP); // 保留20位小数,四舍五入

        System.out.println("Sum: " + sum);
        System.out.println("Difference: " + difference);
        System.out.println("Product: " + product);
        System.out.println("Quotient: " + quotient);
    }
}
  • 19
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值