简析Java中System,Integer,Math类

学过Java的人都会有一种感受,Java中含有丰富的类库,因此C语言需要几十行的代码来完成的程序,用Java要方便许多。在此只做其中三个的简析,感兴趣的可以查阅官方文档。
(链接:https://docs.oracle.com)

  1. System
    System类包含了几个有用的类字段和方法。它不能被实例化。
    System类提供的设施包括标准输入、标准输出和错误输出流;访问外部定义的属性和环境变量;加载文件和库的手段;以及快速复制数组一部分的实用方法。
    在这里插入图片描述
  2. Fields
    1.静态打印流(static PrintStream) err[标准”错误输出流"]
    2.静态输入流(static InputStream) in [标准”输入流"]
    3.静态打印流(static PrintStream) out[标准”输出流"]
    Field Detail(字段细节):
    1.err:"标准”错误输出流。此流已经打开并准备接受输出数据。
    通常,此流对应于显示输出或主机环境或用户指定的另一个输出目标。按照惯例,此输出流用于显示错误消息或其他应立即引起用户注意的信息,即使主输出流中的变量的值为已被重定向到文件或其他通常不被连续监视的目标。
    在这里插入图片描述

在这里插入图片描述
2.in:标准”输入流。此流已经开放并准备提供输入数据。通常,此流对应于键盘输入或主机环境或用户指定的另一个输入源。
3.out:标准”输出流。此流已经打开并准备接受输出数据。通常,此流对应于显示输出或主机环境或用户指定的另一个输出目标。
对于简单的独立java应用程序,编写一行输出数据的典型方法是:
在这里插入图片描述

  1. **Method **
    1.setIn:新分配“标准”输入流。
    首先,如果存在安全管理器,它的检查权限方法将被调用为运行权限(“setio”),以查看是否可以重新分配“标准”输入流。
    2.setOut:重新分配“标准”输出流。
    首先,如果有安全管理器,它的检查权限方法将被调用为运行权限(“setio”),以查看是否可以重新分配“标准”输出流。
    3.console:返回与当前java虚拟机关联的唯一控制台对象(如果有的话)。
    返回:系统控制台,如果有的话,否则为空。
    4.setSecurityManager:设置系统安全。如果已经安装了安全管理器,则此方法首先调用安全管理器的检查权限方法,并使用运行时权限(“setsecurity管理器”),以确保替换现有的安全管理器是可以的。这可能导致安全例外。否则,该参数将被建立为当前的安全管理器。如果参数为空,且没有建立安全管理器,则不采取任何动作,方法只需返回。
    5.getSecurityManager:获取系统安全接口。
    返回:
    如果已经为当前应用程序建立了安全管理器,则返回该安全管理器;否则将返回空。
    6.currentTimeMillis:返回以毫秒为单位的当前时间。请注意,虽然返回值的时间单位是毫秒,但值的粒度取决于底层操作系统,可能更大。例如,许多操作系统以数十毫秒为单位测量时间.
    在这里插入图片描述
    运行结果:在这里插入图片描述
    7.exit:终止当前运行的java虚拟机。参数作为状态代码;按照惯例,非零状态代码表示异常终止。
    此方法在类运行时调用退出方法。这个方法永远不会正常返回。
  2. Integer
    +构造函数

Integer(int value)
通过指定的int值构成一个Integer对象。

Integer(String s)
通过指定的String值构成一个Integer对象。。

+方法

int intValue()
将此对象转化为int。

long longValue()
将此对象转化为long。

byte byteValue()
将此对象转化为byte。

short shortValue()
将此对象转化为short。

double doubleValue()
将此对象转化为double。

float floatValue()
将此对象转化为float。

boolean equals(Object obj)
将此对象与指定的对象进行比较。

int compareTo(Integer anotherInteger)
用Integer数字比较两个对象。

int hashCode()
返回此的哈希码Integer。

String toString()
返回String表示此Integer值的对象 。

+静态方法

static Integer valueOf(int i)
将int转化为Integer。

static Integer valueOf(String s)
将String转化为Integer。

static Integer valueOf(String s, int radix)
返回一个Integer对象,该对象String包含使用第二个参数给出的基数(计算机进制)解析时从指定的值中提取的值。

static int max(int a, int b)
返回两个int值中的较大值,就像通过调用Math.max。一样

static int min(int a, int b)
返回两个int值中较小的一个,就像通过调用Math.min一样。

static int sum(int a, int b)
根据+运算符将两个整数相加。

static String toBinaryString(int i)
返回整数参数的字符串表示形式,作为基数为2中的无符号整数。

static String toHexString(int i)
返回整数参数的字符串表示形式,作为基数为16的无符号整数。

static String toOctalString(int i)
返回整数参数的字符串表示形式,作为基数为8的无符号整数。

static long toUnsignedLong(int x)
通过无符号转换将参数转换为long。

static String toUnsignedString(int i)
以无符号十进制值的形式返回参数的字符串表示形式。

static String toUnsignedString(int i, int radix)
返回第一个参数的字符串表示形式,作为第二个参数指定的基数中的无符号整数值。

static int signum(int i)
返回指定int值的signum(符号)函数。

static int bitCount(int i)
返回指定int值的二进制补码表示形式中的一位数。

static Integer getInteger(String nm)
根据指定的系统属性名称获取Integer。

static Integer getInteger(String nm, int val)
根据指定的系统属性名称获取Integer,如果没有则返回val

static Integer getInteger(String nm, Integer val)
根据指定的系统属性名称获取Integer。如果没有则返回val

static Integer decode(String nm)
将String解码为Integer。(0xf,041,99)

static int divideUnsigned(int dividend, int divisor)
返回将第一个参数除以第二个参数的无符号商,其中每个参数和结果都被解释为无符号值。

static int lowestOneBit(int i)
返回一个int最多只有一位的值,位于指定int值中最低位(“最右侧”)一位的位置 。

static int highestOneBit(int i)
返回一个int最多只有一位的值,位于指定int值中最高位(“最左侧”)一位的位置 。

static int numberOfLeadingZeros(int i)
返回指定int值的二进制补码表达式中最高位(“最左侧”)一位之前的零位数。

static int numberOfTrailingZeros(int i)
返回指定int值的二进制补码表达式中最低位(“最右侧”)一位之后的零位数 。

static int parseInt(String s)
将字符串参数解析为带符号的十进制整数。

static int parseInt(String s, int radix)
将字符串参数解析为第二个参数指定的基数(计算机进制)中的有符号整数。

static int parseUnsignedInt(String s)
将字符串参数解析为无符号十进制整数。

static int parseUnsignedInt(String s, int radix)
将字符串参数解析为第二个参数指定的基数(计算机进制)中的无符号整数。

static int remainderUnsigned(int dividend, int divisor)
返回将第一个参数除以第二个参数的无符号余数,其中每个参数和结果都被解释为无符号值。

static int reverse(int i)
返回通过反转指定int 值的二进制补码二进制表示中的位顺序而获得的值。

static int reverseBytes(int i)
返回通过反转指定int值的二进制补码表示中的字节顺序获得的值。

static int rotateLeft(int i, int distance)
返回通过旋转int指定位数左侧的指定值的二进制补码表示获得的值。

static int rotateRight(int i, int distance)
返回通过将指定int值的二进制补码表示法旋转指定的位数而获得的值。

static int hashCode(int value)
返回int值的哈希码; 兼容 Integer.hashCode()。

static int compare(int x, int y)
以int数字方式比较两个值。

static int compareUnsigned(int x, int y)
比较两个int值,以数值方式将值视为无符号。

static String toString(int i)
返回String表示指定整数的对象。

static String toString(int i, int radix)
返回第二个参数指定的基数(计算机进制)中第一个参数的字符串表示形式。

  1. Math类
    Math类提供了用于执行任意精度整数算法(大整数)和任意精度十进制算法(大小数)的类。
    算术计算

    Math.sqrt() : 计算平方根
    Math.cbrt() : 计算立方根
    Math.pow(a, b) : 计算a的b次方
    Math.max( , ) : 计算最大值
    Math.min( , ) : 计算最小值
    Math.abs() : 取绝对值
    System.out.println(Math.sqrt(16)); // 4.0
    System.out.println(Math.cbrt(8)); // 2.0
    System.out.println(Math.pow(3, 2)); // 9.0
    System.out.println(Math.max(2.3, 4.5));// 4.5
    System.out.println(Math.min(2.3, 4.5));// 2.3

    /**

    • abs求绝对值
      */
      System.out.println(Math.abs(-10.4)); // 10.4
      System.out.println(Math.abs(10.1)); // 10.1

    进位
    Math.ceil(): 天花板的意思,就是逢余进一
    Math.floor() : 地板的意思,就是逢余舍一
    Math.rint(): 四舍五入,返回double值。注意.5的时候会取偶数
    Math.round(): 四舍五入,float时返回int值,double时返回long值
    /**

    • ceil天花板的意思,就是逢余进一
      */
      System.out.println(Math.ceil(-10.1)); // -10.0
      System.out.println(Math.ceil(10.7)); // 11.0
      System.out.println(Math.ceil(-0.7)); // -0.0
      System.out.println(Math.ceil(0.0)); // 0.0
      System.out.println(Math.ceil(-0.0)); // -0.0
      System.out.println(Math.ceil(-1.7)); // -1.0

    System.out.println("-------------------");

    /**

    • floor地板的意思,就是逢余舍一
      */
      System.out.println(Math.floor(-10.1)); // -11.0
      System.out.println(Math.floor(10.7)); // 10.0
      System.out.println(Math.floor(-0.7)); // -1.0
      System.out.println(Math.floor(0.0)); // 0.0
      System.out.println(Math.floor(-0.0)); // -0.0

    System.out.println("-------------------");

    /**

    • **rint 四舍五入,返回double值 注意.5的时候会取偶数 异常的尴尬
      */
      System.out.println(Math.rint(10.1)); // 10.0
      System.out.println(Math.rint(10.7)); // 11.0
      System.out.println(Math.rint(11.5)); // 12.0
      System.out.println(Math.rint(10.5)); // 10.0
      System.out.println(Math.rint(10.51)); // 11.0
      System.out.println(Math.rint(-10.5)); // -10.0
      System.out.println(Math.rint(-11.5)); // -12.0
      System.out.println(Math.rint(-10.51)); // -11.0
      System.out.println(Math.rint(-10.6)); // -11.0
      System.out.println(Math.rint(-10.2)); // -10.0

    System.out.println("-------------------");
    /**

    • round 四舍五入,float时返回int值,double时返回long值
      */
      System.out.println(Math.round(10)); // 10
      System.out.println(Math.round(10.1)); // 10
      System.out.println(Math.round(10.7)); // 11
      System.out.println(Math.round(10.5)); // 11
      System.out.println(Math.round(10.51)); // 11
      System.out.println(Math.round(-10.5)); // -10
      System.out.println(Math.round(-10.51)); // -11
      System.out.println(Math.round(-10.6)); // -11
      System.out.println(Math.round(-10.2)); // -10

    【注意】这里有一个非常需要注意的一点是:这里所有进位的方法的入参都要保证是float或者double类型,否则进位方法将毫无意义。例如如下我们经常犯的错误:

    int a = 1300, b = 1000;
    System.out.println(Math.ceil(a / b)); // 1 表达式A(错误使用)
    System.out.println(Math.ceil(a / (float)b)); // 2 表达式B(正确使用)

    看上去表达式A和表达式B没有什么区别,可仔细分析可知:a / b = 1 ,而 a / (float)b = 1.3, 实际上表达式A的Math.ceil()根本起不了任何作用。

    随机数
    Math.random(): 取得一个[0, 1)范围内的随机数
    System.out.println(Math.random()); // [0, 1)的double类型的数
    System.out.println(Math.random() * 2);//[0, 2)的double类型的数
    System.out.println(Math.random() * 2 + 1);// [1, 3)的double类型的数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值