Java学习:System, Integer和Math类

本文以Integer, System和Math类为例,重点分析类的用途、特点和常用方法,详细请见:JDK API官方文档

- Integer类

Integer类包装一个对象中的原始类型int的值。 类型为Integer的对象包含一个单一字段,其类型为int 。此外,该类还提供了一些将int转换为String和String转换为int ,以及在处理int时有用的其他常量和方法。

而在实际应用中,就会产生疑问,Integer包装类和基本类型Int有什么区别?什么时候需要用到Integer类而不能用Int?

1. 与Int区别

  • Integer是int的包装类,Int是基本数据类型
  • Integer变量必须实例化以后才能使用,Int不用
  • Integer实际上是一个对象,Int只是数据值。
  • integer默认Null,int默认0
  • "=="的使用区别,示例如下
		Integer a = 128;
        Integer b = 128;
        Integer a1 = 127;
        Integer b1 = 127; 
        int a2 = 128;
        int b2 = 128;
        System.out.println(a==b);
        System.out.println(a1==b1);
        System.out.println(a2==b2);

运行结果为 false true true

原因在于Java对于Integer 与int 的自动装箱与拆箱的设计,是一种模式:享元模式(flyweight),为了加大对简单数字的重利用,Java定义:在自动装箱时对于值从–128到127之间的值,它们被装箱为Integer对象后,会存在内存中被重用,始终只存在一个对象。而如果超过了这之间的值,被装箱后的Integer 对象并不会被重用,即相当于每次装箱时都新建一个 Integer对象。

==是一个关系运算符,如果比较的两端都为基本类型,则判断两者的是否相等,(判断过程中还有不同基本类型的转化,这里不做讨论),如果比较的两端都为引用类型的话,则比较两者所指向对象的地址是否相同。因此会有以上运行结果中false的结果。

若要比较两个引用类型且超出-128到127范围的大小的值,应该使用equals()方法(后面在方法中会提到)

System.out.println(a.equals(b));

运行结果就为true.

2. 基本字段(field)
在这里插入图片描述
3. 常用方法(Methods)

3.1与基本类型的转换
byteValue() 以byte型返回该Integer的值。同理,intValue(), longValue(), shortValue(), floatValue(), doubleValue() 等都以相应的类型返回。

valueOf(String str) 返回str的Integer的对象。

parseInt(String str) 返回str中数字的等价数值。

3.2 比较
- compare

 public static int compare(int x, int y)

数值比较两个int值。
如果x == y 返回值为0; 如果x < y返回值小于0 ; 如果x > y返回值大于0
- compareTo

 public int compareTo(Integer, anotherInteger)

数字比较两个 Integer对象。
如果Integer == anotherInteger 返回值为0; 如果Integer < anotherInteger返回值小于0 ; 如果Integer > anotherInteger返回值大于0

  Integer.valueOf(x).compareTo(Integer.valueOf(y))// 与public static int compare(int x, int y)是同个意思

- equals

public boolean equals(Object obj)

将此对象与指定的对象进行比较。
其结果是true当且仅当该参数不是null并且是Integer对象包含相同int值作为该对象。

- Math类

Math类包含执行基本数字运算的方法,如基本指数,对数,平方根和三角函数。

该平台使用带有int和long基元类型的带符号二进制补码整数运算。 开发人员应该选择原始类型,以确保算术运算始终产生正确的结果,这在某些情况下意味着操作不会溢出计算值的范围。 最佳做法是选择原始类型和算法以避免溢出。 在情况下,大小为int或long ,需要检测溢出错误,方法addExact , subtractExact , multiplyExact和toIntExact抛出ArithmeticException结果溢出时。 对于其他算术运算,如除法,绝对值,递增,递减和否定溢出仅在特定的最小值或最大值发生时,应根据最小值或最大值进行检查。

1. 基本字段(field)

2. 方法

Math.PI 记录的圆周率
Math.E 记录e的常量 Math中还有一些类似的常量,都是一些工程数学常用量。
Math.abs 求绝对值
Math.sin 正弦函数
Math.asin 反正弦函数
Math.cos 余弦函数
Math.acos 反余弦函数
Math.tan正切函数
Math.atan 反正切函数
Math.atan2 商的反正切函数
Math.toDegrees 弧度转化为角度
Math.toRadians 角度转化为弧度
Math.ceil 得到不小于某数的最大整数
Math.floor 得到不大于某数的最大整数
Math.max 求两数中最大
Math.min 求两数中最小
Math.sqrt 求开方
Math.pow 求某数的任意次方, 抛出ArithmeticException处理溢出异常
Math.exp 求e的任意次方
Math.log10 以10为底的对数
Math.log 自然对数
Math.rint 求距离某数最近的整数(可能比某数大,也可能比它小)
Math.round 四舍五入,返回int型或者long型(上一个函数返回double型)
Math.random 返回0,1之间的一个随机数

rint()round() 方法为例:

    System.out.println(Math.rint(10.7));    //11.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(-10.6));   //-11.0

四舍五入,返回类型为double, 并且注意0.5的时候会取偶数

     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.6));  //-11    

round 四舍五入,float时返回int值,double时返回long值

- System类

从一开始从接触java起,我们就无时无刻都在接触它,经常用它来向屏幕,向控制台打印输出一些信息,System.out.println(“hello world”);这个只是在控制台输出一条信息“hello world”。out是System类中的一个字段,也就是一个成员变量,而且还是静态的,是一个对象的引用,即PrintStream,是标准的输出流,向标准的输出设备输出信息的,所以我们这里才调用了对象out的println()这个方法。所以类似与out字段的还有其他两个,如in是InputStream类的一个对象,那么in则是一个标准的输入对象,他可以读取或则也可以说从键盘或则其他输入设备接收或者读入一个信息,那么err也是PrintStream类的一个对象,则是标准的错误输出流

Java中System这个类中的属性和方法都是静态的,可以通过类名可以直接调用,一般情况下我们要使用它的方法和属性,是不需要做导入包的动作的,然后我们还发先这个类没有构造方法,所以这就说明被不能实例化,只能通过类名来直接调用它的属性和方法了,注意,它还是一个final类型的修饰的类。

  • 基本字段(field)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值