当前位置: 首页>编程语言>正文

java 代码全局格式化快捷键 java中格式化是什么意思

JavaSE基础篇【4】

2022年6月9日


第七部分 数字处理类

7.1 数字格式化

数字格式化操作主要针对的是浮点型数据,包括 double 型和 float 型数据。在 Java 中使用 java.text.DecimalFormat 格式化数字。在 Java 中没有格式化的数据遵循以下原则:



由于上述输出格式不能满足解决实际问题的要求,通常将结果格式化为指定形式后输出。在 Java 中可以使用 DecimalFormat 类进行格式化操作。
DecimalFormat 是 NumberFormat 的一个子类,用于格式化十进制数字。它可以将一些数字格式化为整数、浮点数、百分数等。通过使用该类可以为要输出的数字加上单位或控制数字的精度。一般情况下可以在实例化 DecimalFormat 对象时传递数字格式,也可以通过 DecimalFormat 类中的 applyPattern( ) 方法来实现数字格式化。
当数字格式化时,在 DecimalFormat 类中使用一些特殊字符构成一个格式化模板,使数字按照一定的特殊字符规则进行匹配。

字符

说明

0

代表阿拉伯数字,使用特殊字符 “ 0 ” 表示数字的一位阿拉伯数字,如果该位不存在数字,则显示 0

#

代表阿拉伯数字,使用特殊字符 “ # ” 表示数字的一位阿拉伯数字,如果该位存在数字,则显示字符;如果该位不存在数字,则不显示

.

小数分隔符或货币小数分隔符

-

负号

,

分组分隔符

E

分割科学记数法中的尾数和指数

%

本符号放置在数字的前缀或后缀,将数字乘以 100 显示位百分位

\u2030

本符号放置在数字的前缀或后缀,将数字乘以 1000 显示位千分位

\u00A4

本符号放置在数字的前缀或后缀,作为货币记号


本符号位单引号,当上述字符出现在数字中时,应位特殊符号添加单引号,系统会将此符号视为普通符号处理

在 DecimalFormat 类中除了可以通过格式化模板来格式化数字之外,还可以使用一些特殊方法对数字进行格式化设置。例如:

DecimalFormat myFormat=new DecimalFormat( )
 myFormat.setGroupingSize(2) //设置将数字分组的大小
 myFormat.setGroupingUsed(false) //设置是否支持分组import java.text.DecimalFormat;

public class DecimalMethod{
    public static void main(String[] args){
        DecimalFormat myFormat = new DecimalFormat();
        myFormat.setGroupingSize(2);
        String output = myFormat.format(123456.789);
        System.out.println("将数字以每两个数字分组:"+output);
        myFormat.setGroupingUsed(false);
        String output2 = myFormat.format(123456.789);
        System.out.println("不允许数字分组:"+output2);
    }
}
7.2 数学运算

在 Java 语言中提供了一个执行数学基本运算的 Math 类,该类包括常用的数学运算方法,以及一些常用的数学常量。

  • 1. Math 类

在 Math 类中提供了众多的数学方法,主要包括三角函数方法、指数函数方法、取整函数方法、取最大值、最小值以及平均值函数方法。这些方法都被定义为 static 形式,所以在程序中应用比较简便。可以用如下形式调用。

Math.数学方法

在 Math 类中除了函数方法之外还存在一些常用数学变量,如 PI、E等。这些数学变量作为 Math 类的成员变量出现,调用起来比较简单,可用如下的形式调用:

Math.PI
Math.E

  • 2. 常用数学运算方法

在 Math 类中的常用数学运算方法比较多,大致可以分为 4 大类别,分别为三角函数方法、指数函数方法、取整函数方法以及取最大值、最小值和绝对值函数方法。

  1. 三角函数方法
    在 Math 类中包含的三角函数方法如下。

以上每个方法的参数和返回值都是 double 型的(因其会用 Π 来表示)。但需要注意的是,角度与弧度的相互转换通常是不精确的。

  1. 指数函数方法
    Math 类中与指数函数相关的方法主要如下。
  • public static double exp(double a) 用于获取 e 的 a 次方,即取 ea
  • public static double pow(double a, double b) 用于取 a 的 b 次方,即 ab
public class Function{
    public static void main(String[] args){
        System.out.println("90°的正弦值为:"+Math.sin(Math.PI/2));
        System.out.println("e 的平方值为:"+Math.exp(2));
    }
}
  1. 取整函数方法
    在 Math 类中主要包括以下几种取整方法。
  2. 取最大值、最小值、绝对值函数方法
    在 Math 类中包含这些操作的方法如下。
7.3 随机数

在实际开发中,随机数的使用是很普遍的。在 Java 中主要提供了两种生成随机数的方式,分别为调用 Math 类的 random( ) 方法生成随机数和调用 Random 类生成各种数据类型的随机数。

  • 1. Math.random( ) 方法

在 Math 类中存在一个 random( ) 方法,用于产生随机数。这个方法默认生成大于等于 0.0 且小于 1.0 的 double 型随机数,即 0<=Math.random( )<1.0。虽然 Math.random( ) 方法只可以产生 0~1 之间的 double 型数字,但只要在 Math.random( ) 语句上稍加处理,就可以使用这个方法产生任意范围的随机数。

(int)(Math.Random()*n) 返回大于等于 0 且小于 n 的随机数
m+(int)(Math.Random()*n) 返回大于等于 m 且小于 m+n 的随机数

public class MathRandom{
    /**
      * 定义产生偶数的方法
      * @param num1 起始参数范围
      * @param num2 终止参数范围
      * @return 随机的范围内偶数
      */
    public static int GetEvenNum(double num1, double num2){
        //产生num1~num2之间的随机数
        int s= (int)num1+(int)(Math.random()*(num2-num1));
        if(s%2==0){             //判断随机数是否为偶数
            return s;           //若是,则返回s
            }else
                return s+1;     //若不是,则返回s+1
        }
    public static void main(String[] args){
        //调用产生随机数方法
        System.out.println("任意一个2~32之间的偶数:"+GetEvenNum(2,32));
    }
}

使用 Math 类的 random( ) 方法也可以随机生成字符,可以使用以下代码生成 a~z 之间的字符。

(char)(‘a’+Math.random()*(‘z’-‘a’+1))

通过上述表达式可以求出更多的随机字符,如 A~Z 之间的随机字符。进而推理出,若想生成任意两个字符之间的随机字符,可以使用以下语句实现:

(char)(cha1+Math.random()*(cha2-cha1+1))

  • 2. Random 类

除了 Math 类中的 random( ) 方法可以获取随机数之外,Java 中还提供了一种可以获取随机数的方式,那就是 java.util.Random 类。通过实例化一个 Random 对象可以创建一个随机数生成器。
语法如下:

Random r = new Random();

其中,r 指的是 Random 对象。
以这种方式实例化对象时,Java 编译器将以系统当前时间作为随机数生成器的种子。因为每时每刻的时间不可能相同,所以产生的随机数不同。但是如果运行速度太快,也会产生两次运行结果相同的随机数。用户也可以在实例化 Random 对象时,设置随机数生成器的种子 seedValue。
语法如下:

Random r = new Random(seedValue);

在 Random 类中提供了获取各种数据类型随机数的方法,分别如下:

import java.util.Random;

public class RandomDemo{
    public class void main(String[] args){
        Random r = new Random(); //实例化一个Random类
        System.out.prinln("随机产生一个整数:"+r.nextInt());
        System.out.println("随机产生一个大于等于0且小于10的整数:"+r.nextInt(10));
    }
}
7.4 大数字运算

在 Java 中提供了大数字的操作类,即 java.math.BigInteger 类与 java.math.BigDecimal 类。这两个类用于高精度计算,其中 BigInteger 类是针对大整数的处理类,而 BigDecimal 类是针对大小数的处理类。

  • 1. BigInteger 类

Biglnteger 类型的数宇范围较 Integer 类型的数字范围要大得多。前文介绍过 Integser 是 int 的包装类,int 的最大值为 231-1,如果要计算更大的数字,使用 Integer 数据类型就无法实现了,所以 Java 中提供了 BigInteger 类来处理更大的数字。BigInteger 支持任意精度的整数,也就是说,在运算中 Biglnteger 类型可以准确地表示任何大小的整数值而不会丟失信息。

在 Biglnteger 类中封装了多种操作,除了基本的加、滅、乘、除操作之外,还提供了绝对值、相反数、最大公约数以及判断是否为质数等操作。

使用 Biglnteger 类,可以实例化一个BigInteger 对象,并自动调用相应的构造函数。Biglnteger 类具有很多构造函数,但最直接的一种方式是参数以字符串形式代表要处理的数宇。
语法如下:

public BigInteger(String val)

其中,val 是十进制字符串。
如果将 2 转换为 BigInteger 类型,可以使用以下语句进行初始化操作:

BigInteger twoInstance = new BigInteger(“2”);

一旦创建了对象实例,就可以调用 Biglnteger 类中的一些力法进行运算操作,包括基本的数学运算和位运算以及一些取相反数、取绝对值等操作。下面列举了 Biglnteger 类中常用的几种运算方法。

import java.math.BigInteger;

public class BigIntegerDemo {
	public static void main(String[] args) {
		BigInteger bigInstance = new BigInteger("4");//实例化一个大数字
		//取该大数字加2操作
		System.out.println("加法操作:"+bigInstance.add(new BigInteger("2")));
	}
}
  • 2. BigDecimal 类

BigDecimal 和 BigInteger 都能实现大数字的运算。不同的是 BigDecimal 加入了小数的概念。一般的 float 型和 double 型数据只可以用来做科学计算或工程计算,但由于在商业计算中要求数字精度比较高,所以要用到 java.math.BigDecimal 类。BigDecimal 类支持任何精度的定点数,可以用它来精确计算货比值。
在 BigDecimal 类中有两个构造方法。

  • public BigDecimal(double val):实例化时将双精度型转换为 BigDecimal 类型
  • public BigDecimal(String val):实例化时将字符串形式转换为 BigDecimal 类型

BigDecimal 类型的数字可以用来做超大浮点数的运算,如加、减、乘、除等。在所有的运算中,除法是最复杂的,因为在除不尽的情况下末位小数点的处理是需要考虑的。
下面列举了 BigDecimal 类中的这些方法。

BigDecimal 类中的 divide( ) 方法的多种处理模式主要有:

模式

含义

BigDecimal.ROUND_UP

商的最后一位如果大于0,则向前进位,正负数都如此

BigDecimal.ROUND_DOWN

商的最后一位无论是什么数字,都省略

BigDecimal.ROUND_CEILING

商如果是整数,按照 ROUND_UP 模式处理;如果是负数,按照 ROUND_DOWN 模式处理。这两种处理模式都是使得近似值大于等于实际值

BigDecimal.ROUND_FLOOR

与 ROUND_CEILING 模式相反,此外会使得近似值小于等于实际值

BigDecimal.ROUND_HALF_DOWN

对商进行四舍五入操作,如果最后一位小于等于5,则做舍弃操作;如果最后一位大于5,则做进位操作

BigDecimal.ROUND_HALF_UP

对商进行四舍五入操作,如果商的最后一位小于5,则舍弃;如果大于等于5,则进行进位操作

BigDecimal.ROUND_HALF_EVEV

如果商的倒数第二位为奇数,则按照 ROUND_HALF_UP 处理;若为偶数,则按照 ROUND_HALF_DOWN 处理

import java.math.BigDecimal;

public class BigDecimalDemo {
		static final int location = 10;
		/**
		 * 定义加法方法,参数为加数与被加数
		 * 
		 * @param value1
		 * 相加的第一个数
		 * @param value2
		 * 相加的第二个数
		 * @return 两数之和
		 */
		public BigDecimal add(double value1,double value2) {
			//实例化Decimal对象
			BigDecimal b1 = new BigDecimal(Double.toString(value1));
			BigDecimal b2 = new BigDecimal(Double.toString(value2));
			return b1.add(b2);//调用加法方法
		}
		/**
		 * 定义减法方法,参数为减数和被减数
		 * 
		 * @param value1 被减数
		 * @param value2 减数
		 * @return 运算结果
		 */
		public BigDecimal sub(double value1,double value2) {
			BigDecimal b1 = new BigDecimal(Double.toString(value1));
			BigDecimal b2 = new BigDecimal(Double.toString(value2));
			return b1.subtract(b2);//调用减法方法
		}
		/**
		 * 定义乘法方法,参数为乘数和被乘数
		 * 
		 * @param value1 第一个乘数
		 * @param value2 第二个乘数
		 * @return 运算结果
		 */
		public BigDecimal mul(double value1,double value2) {
			BigDecimal b1 = new BigDecimal(Double.toString(value1));
			BigDecimal b2 = new BigDecimal(Double.toString(value2));
			return b1.multiply(b2);//调用乘法方法
		}
		/**
		 * 定义除法方法,参数为除数和被除数
		 * 
		 * @param value1 被除数
		 * @param value2 除数
		 * @return 运算结果
		 */
		public BigDecimal div(double value1,double value2) {
			return div(value1,value2,location);//调用自定义除法方法
		}
		//定义除法方法,参数分别为除数与被除数以及商小数点后的位数
		public BigDecimal div(double value1,double value2,int b) {
			if(b<0) {
				System.out.println("b值必须大于等于0");
			}
			BigDecimal b1 = new BigDecimal(Double.toString(value1));
			BigDecimal b2 = new BigDecimal(Double.toString(value2));
			//调用除法方法,商小数点后保留b位,并将结果进行四舍五入操作
			return b1.divide(b2,b,BigDecimal.ROUND_HALF_UP);
		}
		public static void main(String[] args) {
			BigDecimalDemo b = new BigDecimalDemo();
			System.out.println("两个数字相加的结果为:"+b.add(-7.5, 8.9));
			System.out.println("两个数字相减的结果为:"+b.sub(-7.5, 8.9));
			System.out.println("两个数字相乘的结果为:"+b.mul(-7.5, 8.9));
			System.out.println("两个数字相除,结果小数后保留10位为:"+b.div(10, 2));
			System.out.println("两个数字相除,结果保留小数后5位为:"+b.div(-7.5,8.9,5));
	}
}

在 Eclipse 中运行本实例,运行结果如图所示。

java 代码全局格式化快捷键 java中格式化是什么意思,java 代码全局格式化快捷键 java中格式化是什么意思_java 代码全局格式化快捷键,第1张



https://www.xamrdz.com/lan/5bg1960577.html

相关文章: