常用API
Math类
Math类:针对数字运算提供的一系列方法常用的方法:
方法名 | 说明 |
---|---|
public static int abs(int a) | 获取参数a的绝对值: |
public static double ceil(double a) | 向上取整 |
public static double floor(double a) | 向下取整 |
public static double pow(double a, double b) | 获取a的b次幂 |
public static long round(double a) | 四舍五入取整 |
工具类的编写规则:
1.不能被继承,使用final关键字修饰类
2.不能创建对象,使用private关键字修饰构造方法
3.对外提供静态方法(通过类名访问)
public class MathTest {//演示:Math的应用public static void main(String[] args) {int a = 10;int b = 20;//求最大值int max = Math.max(a, b);//求最小值int min = Math.min(a, b);//计算次幂double num = Math.pow(2, 3);//随机数int random = (int) (Math.random()*100);//Random r = new Random(); //int n = r.next(100)//范围0~99//四舍五入long round = Math.round(4.7);System.out.println(max);//20System.out.println(min);//10System.out.println(num);//8.0System.out.println(random);//94System.out.println(round);//5}
}
System工具类
常用方法:方法名 | 说明 |
---|---|
public static void exit(int status) | 终止当前运行的 Java 虚拟机,非零表示异常终止 |
public static long currentTimeMillis() | 返回当前时间(以毫秒为单位) |
public class SystemTest {//演示:System类的使用public static void main(String[] args) {//要知道方法执行多长时间(毫秒)//在方法执行前:获取毫秒值long beginTime = System.currentTimeMillis();//获取当前系统时间的毫秒值method();//在方法执行后:获取毫秒值long endTime = System.currentTimeMillis();System.out.println("方法执行时间:" + (endTime - beginTime) + "毫秒");//方法执行时间:10毫秒
// System.exit(0);}public static void method() {int count = 0;for (int i = 0; i < 10000000; i++) {if (i % 2 == 0) {count++;}}}
}
BigInteger类
BigInteger介绍:java.math.BigInteger类是一个引用数据类型,可以用来对一些大整数做运算。当超出基本数据类型数据范围的整数运算时就可以使用BigInteger了。构造方法 | 描述 |
---|---|
BigInteger(String value) | 可以将整数的字符串,转换为BigInteger对象 |
BigInteger解决什么问题?
解决程序中出现long无法储存的整数使用BigIntegerBigInteger的加,减,乘,除的方法名是什么?
add,subtract,divide,multiplyimport java.math.BigInteger;
public class BigIntegerDemo {public static void main(String[] args) {//创建大整数对象BigInteger num1 = new BigInteger("1000");BigInteger num2 = new BigInteger("100");//运算BigInteger result1 = num1.add(num2);System.out.println(result1);//1100BigInteger result2 = num1.subtract(num2);System.out.println(result2);//900BigInteger result3 = num1.divide(num2);System.out.println(result3);//10BigInteger result4 = num1.multiply(num2);System.out.println(result4);//100000}
}
BigDecimal类
BigDecimal介绍:java.math.BigDecimal可以对大浮点数进行运算,保证运算的准确性。BigDecimal的精确性高于float和double构造方法名 | 描述 |
---|---|
BigDecimal(String val) | 将 BigDecimal 的字符串表示形式转换为 BigDecimal |
//使用构造方法,创建对象
BigDecimal num1 = new BigDecimal("12312312312312311.123123123123");
BigDecimal num2 = new BigDecimal("1000000000000000.9999999999");//四则运算
BigDecimal result1 = num1.add( num2 );//加运算BigDecimal result2 = num1.subtract( num2 );//减运算
BigDecimal解决什么问题?
用来存储超出double范围的小数BigDecimal的加,减,乘,除的方法名是什么?
add,subtract,divide,multiplyimport java.math.BigDecimal;
public class BigDecimalDemo {public static void main(String[] args) {//创建对象BigDecimal num1 = new BigDecimal("100.2");BigDecimal num2 = new BigDecimal("2.2");//运算System.out.println("加运算:"+(num2.add(num1)));//加运算:102.4System.out.println("减运算:"+(num1.subtract(num2)));//减运算:98.0System.out.println("乘运算:"+(num1.multiply(num2)));//乘运算:220.44// System.out.println("除运算:"+(num1.divide(num2)));//当除不尽时,会引发异常(解决方案:设置保留有效小数位数)// 保留小数位数 小数的取舍方式BigDecimal result = num1.divide(num2,3,BigDecimal.ROUND_HALF_UP );//45.545System.out.println(result);}
}
Arrays类
Arrays类介绍:java.util.Arrays是数组的工具类,里面有很多静态的方法用来对数组进行操作(如排序和搜索)Arrays类:针对数组提供了一系列方法
Arrays的方法:
1.数组元素排序(默认升序)
2.数组转换为字符串
import java.util.Arrays;
import java.util.Random;public class ArraysDemo {//需求:随机生成10个[0,100]之间的整数,放到整数数组中,按照从小到大的顺序排序并打印元素内容public static void main(String[] args) {//解决需求1: 定义数组,存储10个随机整数int[] array = new int[10];//创建随机数字对象Random r = new Random();for (int i = 0; i < array.length; i++) {int num = r.nextInt(101);array[i] = num;}//测试看看数组中的元素值System.out.println(Arrays.toString(array));//把数组转换为字符串//解决需求2: 对数组中的元素进行排序Arrays.sort(array);System.out.println(Arrays.toString(array));//把数组转换为字符串//打印数组中元素的格式: 元素1 元素2String str = Arrays.toString(array);//str="[2, 3, 5, 7, 27, 31, 52, 54, 76, 76]";str = str.substring(1, str.length()-1 );//去除前后:中括号str = str.replaceAll(",", " ");//使用" "代替","System.out.println("排序后:" + str);/**运行结果:[35, 38, 97, 6, 46, 96, 31, 74, 97, 30][6, 30, 31, 35, 38, 46, 74, 96, 97, 97]排序后:6 30 31 35 38 46 74 96 97 97*/}
}
包装类
什么是包装类?
Java把8种基本类型,进行了封装,变为包装类基本数据类型 | 包装类型 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
包装类解决程序中的什么问题?
1、实现String类型和7种基本类型(没有char)之间的转换String str = “1234”; < => int类型
2、在后面学习mysql时会大量使用到包装类(包装类中可以存储null数据)
包装类怎么使用?
使用包装类:解决String类型和基本类型之间数据转换基本类型数据 => String类型
1.直接拼接空字符串2.使用String的valueOf静态方法
举例:
int num =100;String str = num+“”;
String str = String.valueOf( num );
String类型 => 基本类型数据
除了Character之外,都有静态方法parseXxx方法可以完成字符串转换基本数据类型。举例:
String str =“1234”;
int num = Integer.parseInt( str );
String s = “true”;
boolean flag = Boolean.parseBoolean( s )
public class Demo1 {public static void main(String[] args) {//把字符串转换为int类型数据String str="123";int num = Integer.parseInt(str);System.out.println(num);//把字符串转换为double类型数据String str2="3.14";double num2 = Double.parseDouble(str2);System.out.println(num2);}
}
包装类在使用中的细节
1. 在把String类型数据,转换为基本类型数据时,容易发生:NumberFormatException异常 (原因:String类型数据,不符合要转换的基本类型数据格式)public class Demo2 {public static void main(String[] args) {//把字符串转换为int类型数据String str="123AAA";//字符串不是纯数字//在把字符串转换为对应的基本类型数据时,务必保证字符串符合基本类型数据的格式int num = Integer.parseInt(str);//出现异常:NumberFormatExceptionSystem.out.println(num);}
}
运行结果:报错NumberFormatException
- 包装类在使用时存在:自动装箱、自动拆箱
基本数据类型自动转换为对应的包装类型叫做装箱。
包装类型转自动换为对应的基本数据类型叫做拆箱。
-
自动装箱 : Integer.valueOf( 数值 )
-
自动拆箱: Integer对象.intValue()
- 包装类中有常量池(数据值没有超出常量池范围,就直接从常量池中获取对象)
注意事项 :
3.1. 包装类对象的初始值为null(是一个对象)。
3.2. Java中除了float和double的其他基本数据类型,都有常量池。
整数类型:[-128,127]值在常量池
字符类型:[0,127]对应的字符在常量池
布尔类型:true,false在常量池
3.3. 在常量池中的数据 , 会进行共享使用,减少频繁创建,从而提高性能,不在常量池会创建新的对象
String类的常用方法举例
public class StringDemo1 {/*已知字符串,完成需求String str = "I Love Java, I Love Heima";判断是否存在 “Java”判断是否以Heima字符串结尾判断是否以Java开头判断 Java在字符串中的第一次出现位置判断 itcast 所在的位置*/public static void main(String[] args) {String str = "I Love Java, I Love Heima";boolean result = str.contains("Java");System.out.println(result);boolean result2 = str.endsWith("Heima");System.out.println(result2);boolean result3 = str.startsWith("Java");System.out.println(result3);int index = str.indexOf("Java");System.out.println(index);int itcast = str.indexOf("itcast");System.out.println(itcast);}
}
运行结果:
true
true
false
7
-1
public class StringDemo2 {/*已知字符串,完成右侧需求String str = "I Love Java, I Love Heima";需求:1.将所有 Love 替换为 Like ,打印替换后的新字符串2.截取字符串 "I Love Heima"3.截取字符串 "Java"*/public static void main(String[] args) {String str = "I Love Java, I Love Heima";String replace = str.replace("Love", "like");System.out.println(replace);String substring = str.substring(13);System.out.println(substring);System.out.println(str.substring(7,11));}
}运行结果:
I like Java, I like Heima
I Love Heima
Java
public class StringDemo3 {/*已知字符串,完成右侧需求String str = "I Love Java, I Love Heima";需求:1 计算字符 a 出现的次数(要求使用toCharArray)2 计算字符 a 出现的次数(要求使用charAt)3 将字符串中所有英文字母变成小写4 将字符串中所有英文字母变成大写*/public static void main(String[] args) {String str = "I Love Java, I Love Heima";int count=0;char[] chs = str.toCharArray();for (int i = 0; i < chs.length; i++) {if(chs[i] == 'a'){count++;}}System.out.println(count);System.out.println(str.toUpperCase());System.out.println(str.toLowerCase());}
}
运行结果:
3
I LOVE JAVA, I LOVE HEIMA
i love java, i love heima