11.1 包装类
包装类 | 对应基本数据类型 | 包装类 | 对应基本数据类型 |
Byte | byte | Short | short |
Integer | int | Long | long |
Float | float | Double | double |
Character | char | Boolean | boolean |
11.1.1 Integer 类
Integer 类在对象中包装了一个基本数据类型 int 的值,该类的对象包含了一个 int 类型的字节。
例题11.1:
package elevenbao;
public class 例题1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int num = Integer.parseInt("456");
Integer iNum = Integer.valueOf("456");
System.out.println("int数据与Integer对象的比较:" + iNum.equals(num));
String str2 = Integer.toBinaryString(num);
String str3 = Integer.toHexString(num);
String str4 = Integer.toOctalString(num);
String str5 = Integer.toString(num,15);
System.out.println("456的二进制表示为:" + str2);
System.out.println("456的十六进制表示为:" + str3);
System.out.println("456的八进制表示为:" + str4);
System.out.println("456的十五进制表示为:" + str5);
}
}
MAX_VALUE: 表示 int 类型可取的最大值,即2的31次方减一。
MIN_VALUE:表示 int 类型可取的最小值,即-2的31次方。
SIZE:用来以二进制补码的形式表示 int 值的位数
TYPE:表示基本类型 int 的Cless 实例。
例题11.2:
package elevenbao;
public class 例题2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int maxint = Integer.MAX_VALUE;
int minint = Integer.MIN_VALUE;
int intsize = Integer.SIZE;
System.out.println("int类型可取的最大值是:" + maxint);
System.out.println("int类型可取的最小值是:" + minint);
System.out.println("int类型的二进制数是:" + intsize);
}
}
11.1.2 Double类
Double 类在对象中包装一个基本数据类型为 double 的值,每个 Double 类的对象都包含一个 double 类型的字段。此外,该类还提供了多个方法,可以将 double 类型转换为 String 类型,将 String 类型转化为 double 类型。
例题11.3:
package elevenbao;
public class 例题3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Double dNum = Double.valueOf("3.14");
System.out.println("3.14是否为非数字值:" + Double.isNaN(dNum.doubleValue()));
System.out.println("3.14转换为int值为:" + dNum.intValue());
System.out.println("值为3.14的Double对象与3.14的比较结果:" + dNum.equals(3.14));
}
}
11.1.3 Boolean 类
Boolean 类的常用方法
例题 11.4:
package elevenbao;
public class 例题4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Boolean b1 = Boolean.valueOf("true");
Boolean b2 = Boolean.valueOf("ok");
System.out.println("b1: " + b1.booleanValue());
System.out.println("b2: " + b2.booleanValue());
}
}
11.1.4 Character 类
该提供了多种方法,以确定字符的类别(小写字母、数字等),并可以很方便地将字符从大写转化为小写,反之亦然。Character 类的常用方法:
例题11.5:
package elevenbao;
public class 例题5 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Character mychar1 = Character.valueOf('A');
Character mychar2 = Character.valueOf('a');
if(Character.isUpperCase(mychar1)) {
System.out.println(mychar1 + "是大写字母 ");
System.out.println("转换为小写字母的结果:" + Character.toLowerCase(mychar1));
}if(Character.isLowerCase(mychar2)) {
System.out.println(mychar2 + "是小写字母 ");
System.out.println("转换为小写字母的结果:" + Character.toUpperCase(mychar2));
}
}
}
11.1.5 Number 类
前面介绍了 java 中的包装类,对于数值型的包装类,它们有一个共同的父类——Number 类,该类是一个抽象类。
数值型包装类共有方法:
11.2 数字处理
11.2.1 数字格式化
数字格式化操作主要针对的是浮点型数据,包括 double 型和 float 型数据。在 Java 中使用 java.textDecimalFormat 格式化数字。
DecimalFormat 类是 NumberFormat 的一个子类,用于格式化十进制数字。它可以将一些数字格式化为整数、浮点数、百分数等。通过使用该类可以为要输出的数字加上单位或控制数字的精度。
DecimalFormat 类中的特殊字符及其说明:
package elevenbao;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.text.DecimalFormat;
import java.util.Random;
public class MathTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
//11.2 数字处理
//11.2.1 数字格式化
DecimalFormat myFormat = new DecimalFormat();
myFormat.applyPattern("###,###,###");
String my = myFormat.format(7857478);
System.out.println(my);
DecimalFormat myFormat1 = new DecimalFormat();
myFormat1.setGroupingSize(2);
myFormat1.setGroupingUsed(true);
String my1 = myFormat1.format(7857478);
System.out.println(my1);
}
}
11.2.2 Math 类
Math 类 提供了众多数学函数方法。主要包括三角函数方法,指数函数方法,取整函数方法,取最大值、最小值,以及平均值函数方法。这些方法都被定义为 static 形式,所以在程序中应用比较简便。
1.三角函数方法
实例:
package elevenbao;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.text.DecimalFormat;
import java.util.Random;
public class MathTest {
public static void main(String[] args) {
//11.2.2 math类
//三角函数
System.out.println(Math.toRadians(45));
double temp = Math.tan(Math.toRadians(45));
System.out.println(temp);
System.out.println(Math.tan(Math.toRadians(45)));
}
}
2. 指数函数方法
实例:
package elevenbao;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.text.DecimalFormat;
import java.util.Random;
public class MathTest {
public static void main(String[] args) {
//指数函数Mat
System.out.println(Math.cbrt(64));
System.out.println(Math.pow(3, 5));
}
}
运行结果:
3. 取整函数方法
实例:
package elevenbao;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.text.DecimalFormat;
import java.util.Random;
public class MathTest {
public static void main(String[] args) {
//取整函数
System.out.println(Math.ceil(3.1));
System.out.println(Math.floor(3.9));
System.out.println(Math.rint(3.51));
System.out.println(Math.rint(3.49));
System.out.println(Math.rint(3.5));
System.out.println(Math.rint(2.5));
}
}
4. 取最大值、最小值、绝对值函数方法
实例:
package elevenbao;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.text.DecimalFormat;
import java.util.Random;
public class MathTest {
public static void main(String[] args) {
//最大最小 绝对值
System.out.println(Math.max(3.5, 4.6));
System.out.println(Math.min(7, 9));
System.out.println(Math.abs(9));
System.out.println(Math.abs(-3.25));
}
}
11.2.3 Random 类
Random 类是 JDK 中的随机数生成器类,可以通过实例化一个 Random 对象创建一个随机数生成器,语法如下:
Random r = new Random();
也可以设置随机数生成器的种子。语法如下:
Random r = new Random(seedValue);
实例:
package elevenbao;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.text.DecimalFormat;
import java.util.Random;
public class MathTest {
public static void main(String[] args) {
//11.2.3 Random类
Random r = new Random();
System.out.println(r.nextInt());
System.out.println(r.nextInt(100));
System.out.println(r.nextDouble());
}
}
11.2.4 BigInteger 类
BigInteger 类的数字范围教 Integer 类的数字范围大的多。
在 BigInteger 类中封装了多种操作,除了基本的加、减、乘、除操作,还提供了绝对值、相反数、最大公约数以及判断是否为质数等操作。
使用 BigInteger 类。可以实例化一个 BigInteger 对象,并自动调用相应的构造函数。BigInteger 类具有很多构造函数,但最直接的一种方式是参数以字符串形式代表要处理的数字。
例如,将 2 转换为BigInteger 类型,可以使用以下语句进行初始化操作:
BigInteger twolnstance = new BigInteger("2");
实例:
package elevenbao;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.text.DecimalFormat;
import java.util.Random;
public class MathTest {
public static void main(String[] args) {
//11.2.4 BigInteger
BigInteger bi1 = new BigInteger("789765799765");
BigInteger bi2 = new BigInteger("789765799765");
BigInteger mul1 = bi1.multiply(bi2);
System.out.println(mul1);
System.out.println();
}
}
11.2.5 BigDecimal 类
BigDecimal 类和 BigInteger 类都能实现大数字的运算,不同的是 BigDecimal 类加入了小数的概念。
BigDecimal 类中的常用构造方法:
BigDecimal 类实现的加、减、乘、除的方法:
BigDecimal 类中的 divi() 方法的多钟处理模式:
实例:
package elevenbao;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.text.DecimalFormat;
import java.util.Random;
public class MathTest {
public static void main(String[] args) {
//11.2.5 BigDecimal
BigDecimal bd1 = new BigDecimal("78976579.9765");
BigDecimal bd2 = new BigDecimal("789765799.765");
BigDecimal mul2 = bd1.multiply(bd2);
System.out.println(mul2);
}
}
11.3 System 类
System 类是 JDK 中提供的系统类,该类是用 final 修饰的,所以不允许被继承。
System 类提供的常用方法:
11.3.1 控制台输出字符
1. 不会自动换行的 print() 方法
System.out.print("Hello");
2.可以自动换行的 println() 方法
System.out.println("Hello");
使用这俩个输出方法时还要注意一下两点:
(1)“System.out.println("\n");” 会打印两个空行。
(2) “System.out.print();” 无参数会报错。
11.3.2 计时
System.currentTimeMillis() 方法可以获取自1970年1月1日零点至今的毫秒数。
例如:
package elevenbao;
public class 例题14 {
public static void main(String[] args) {
// TODO Auto-generated method stub
long start = System.currentTimeMillis();
String str = null;
for(int i = 0;i < 10000;i++) {
str += i;
}
long end = System.currentTimeMillis();
System.out.println("循环用时:" + (end - start) + "毫秒");
}
}
11.4 Scanner 类
使用Scanner 类首先要引入该类,其语法如下:
import.java.util.Scanner;
使用 Scanner 类扫描控制台的代码如下:
Scanner sc = new Scanner(System.in);
实例:
import javax.print.attribute.standard.QueuedJobCount;
import javax.swing.*;
import java.util.Random;
import java.util.Scanner;
public class 猜数字 {
public static void main(String[] args) {
Random r = new Random();
int number = r.nextInt(200) - 100; //-100到100
System.out.println(number);
Scanner sc = new Scanner(System.in);
int a = 0;
while(true){
System.out.println("请输入你要猜的数字");
//int a = sc. nextInt();
//占内存
a = sc.nextInt();
if(a > number){
System.out.println("大了");
}else if(a < number){
System.out.println("小了");
}else if(a == number){
System.out.println("猜中了");
break;
}else {
System.out.println("输入错误");
}
}
System.out.println("恭喜你答对了");
sc.close();
}
}
11.5 日期时间类
11.5.1 Date 类
Date 类用于表示日期时间,使用该类表示时间需要使用其构造方法创建对象。
实例:
package elevenbao;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
//11.5 日期时间类
Date d1 = new Date();
System.out.println(d1);
Date d2 = new Date(1664732264079L);
System.out.println(d2);
System.out.println(d1.after(d2));
System.out.println(d1.before(d2));
System.out.println(d1.getTime());
d1.setTime(1985432264079L);
System.out.println(d1.getTime());
System.out.println();
}
}
11.5.2 日期时间格式化