常用API系列: Scanner类、匿名对象、Random类、ArrayList集合、String类、static类、Arrays工具类、Math类

版权声明:本文为博主原创文章原创不易,转载请注明原创地址。 https://blog.csdn.net/Summer_Lyf/article/details/89740323

                                               常用API系列

API概述

什么是API:    API(Application Programming Interface) 应用程序编程接口,JavaAPI是一本程序员字典,是JDK中提供给我们使用类的说明文档。这些类将底层的代码实现封装了起来,不需要关系这些类如何实现,只需要是学习如何使用即可,所以我们通过查询API的方式,来学习Java提供类,并得知如何使用它们。

 Scanner类:

/**
 * Scanner类的功能:可以实现键盘输入数据,到程序中
 * 1.创建Scanner类
 * 使用
 * 2.对象.成员方法名()
 * 获取键盘输入的int数字 : int num = sc.nextInt();
 * 获取键盘输入的字符串:String str = sc.next();
 */
public class Scanner {
    public static void main(String[] args) {
        //创建
        //备注 :Systm.in代表从键盘进行输入
        java.util.Scanner sc =new java.util.Scanner(System.in);
        //获取键盘输入的int数字
        int num = sc.nextInt();
        System.out.println("输入的int数字是:" + num);
        //获取键盘输入的字符串
        String str = sc.next();
        System.out.println("输入的字符串是:" + str);
    }
}

结果如下: 

 

匿名对象类:

所谓匿名对象,就是没有名字的对象,就是在创建对象时不起名字。

如创建一个Student对象:  new Student();   这样,一个匿名对象已经创建完了。

使用方式一:当对象方法只调用一次时,可以用匿名对象来完成,这样比较简单:new Student().run(); 
如果对一个对象进行多个成员调用,就必须给这个对象起个名字 
使用方式二:可以将匿名对象作为实践参数进行传递:run(new car());

总结:

   1. 匿名对象设置的属性永远无法获取?  没有引用变量指向那个对象。

   2. 任何两个匿名对象使用==比较,永远返回false。

   3.  匿名对象主要应用于实参。

Random类

Random类中实现的随机算法是伪随机,也就是有规则的随机。在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数字。

相同种子数的Random对象,相同次数生成的随机数字是完全相同的。也就是说,两个种子数相同的Random对象,第一次生成的随机数字完全相同,第二次生成的随机数字也完全相同。这点在生成多个随机数字时需要特别注意。

ArrayList集合:

ArrayList是一种线性数据结构,它的底层是用数组实现的,相当于动态数组。与Java中的数组相比,它的容量能动态增长。类似于C语言中的动态申请内存,动态增长内存。  当创建一个数组的时候,就必须确定它的大小,系统会在内存中开辟一块连续的空间,用来保存数组,因此数组容量固定且无法动态改变。ArrayList在保留数组可以快速查找的优势的基础上,弥补了数组在创建后,要往数组添加元素的弊端。实现的基本方法如下:

 1.快速查找:在物理内存上采用顺序存储结构,因此可根据索引快速的查找元素。

 2. 容量动态增长: 当数组容量不够用时(表1),创建一个比原数组容量大的新数组(表2),将数组中的元素“搬”到新数组(表3),再将新的元素也放入新数组(表4),最后将新数组赋给原数组即可。(从左到右依次为表1,表2、表3、表4) 

3.

String类:

 java.lang.String类使用了final修饰,不能被继承。Java程序中的所有字面值,即双引号括起的字符串,如"abc",都是作为String类的实例实现的。String是常量,其对象一旦构造就不能再被改变。换句话说,String对象是不可变的,每一个看起来会修改String值的方法,实际上都是创造了一个全新的String对象,以包含修改后的字符串内容。而最初的String对象则丝毫未动。String对象具有只读特性,指向它的任何引用都不可能改变它的值,因此,也不会对其他的引用有什么影响。但是字符串引用可以重新赋值。java字符串在内存中采用unicode编码方式,任何一个字符对应两个字节的定长编码,即任何一个字符(无论中文还是英文)都算一个字符长度,占用两个字节。

static类:

1.static修饰成员函数:该成员函数不能使用this对象 
  static不能修饰构造函数 
  static不能修饰函数参数 
  static不能修饰局部成员变量 

  2.static修饰成员字段 
  当类被虚拟机加载时,首先按照字段声明的先后顺序对static成员字段进行初始化 

  3.static修饰语句块 
  当类被虚拟机加载时,按照声明顺序先后初始化static成员字段和static语句块 
  static所修饰的方法和字段是只属于类,所有对象共享。 
  在static所修饰的函数和语句块中不能使用非static成员字段。 
  在Java不能直接定义全局变量,是通过static来实现的 
  在Java中没有const,不能直接定义常量,通过static final来实现 

Arrays类:

java.util.Arrays类能方便地操作数组,它提供的所有方法都是静态的。具有以下功能:

1. 给数组赋值:通过fill方法。

2.对数组排序:通过sort方法,按升序。

3. 比较数组:通过equals方法比较数组中元素值是否相等。

4.查找数组元素:通过binarySearch方法能对排序好的数组进行二分查找法操作。

Math类:

Java的Math类封装了很多与数学有关的属性和方法,大致如下:

public class Main {
 
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println(Math.E);//比任何其他值都更接近 e(即自然对数的底数)的 double 值。
		System.out.println(Math.PI);//比任何其他值都更接近 pi(即圆的周长与直径之比)的 double 值。
		/*
		 * 1.abs绝对值函数
		 * 对各种数据类型求绝对值
		 */
		System.out.println(Math.abs(-10));//输出10
		
		/*
		 * 2.三角函数与反三角函数
		 * cos求余弦
		 * sin求正弦
		 * tan求正切
		 * acos求反余弦
		 * asin求反正弦
		 * atan求反正切
		 * atan2(y,x)求向量(x,y)与x轴夹角
		 */
		System.out.println(Math.acos(-1.0));//输出圆周率3.14...
		System.out.println(Math.atan2(1.0, 1.0));//输出 π/4 的小数值
		
		/*
		 * 3.开根号
		 * cbrt(x)开立方
		 * sqrt(x)开平方
		 * hypot(x,y)求sqrt(x*x+y*y)在求两点间距离时有用sqrt((x1-x2)^2+(y1-y2)^2)
		 */
		System.out.println(Math.sqrt(4.0));//输出2.0
		System.out.println(Math.cbrt(8.0));//输出2.0
		System.out.println(Math.hypot(3.0, 4.0));//输出5.0
		
		/*
		 * 4.最值
		 * max(a,b)求最大值
		 * min(a,b)求最小值
		 */
		System.out.println(Math.max(1, 2));//输出2
		System.out.println(Math.min(1.9, -0.2));//输出-0.2
		/*
		 * 5.对数
		 * log(a) a的自然对数(底数是e)
		 * log10(a) a 的底数为10的对数
		 * log1p(a) a+1的自然对数
		 * 值得注意的是,前面其他函数都有重载,对数运算的函数只能传double型数据并返回double型数据
		 */
		System.out.println(Math.log(Math.E));//输出1.0
		System.out.println(Math.log10(10));//输出1.0
		System.out.println(Math.log1p(Math.E-1.0));//输出1.0
		/*
		 * 6.幂
		 * exp(x) 返回e^x的值
		 * expm1(x) 返回e^x - 1的值
		 * pow(x,y) 返回x^y的值
		 * 这里可用的数据类型也只有double型
		 */
		System.out.println(Math.exp(2));//输出E^2的值
		System.out.println(Math.pow(2.0, 3.0));//输出8.0
		
		/*
		 * 7.随机数
		 * random()返回[0.0,1.0)之间的double值
		 * 这个产生的随机数其实可以通过*x控制
		 * 比如(int)(random*100)后可以得到[0,100)之间的整数
		 */
		System.out.println((int)(Math.random()*100));//输出[0,100)间的随机数
		
		/*
		 * 8.转换
		 * toDegrees(a) 弧度换角度
		 * toRadians(a) 角度换弧度
		 */
		System.out.println(Math.toDegrees(Math.PI));//输出180.0
		System.out.println(Math.toRadians(180));//输出 π 的值
		/*
		 * 9.其他
		 */
		
		//copySign(x,y) 返回 用y的符号取代x的符号后新的x值
		System.out.println(Math.copySign(-1.0, 2.0));//输出1.0
		System.out.println(Math.copySign(2.0, -1.0));//输出-2.0
		
		//ceil(a) 返回大于a的第一个整数所对应的浮点数(值是整的,类型是浮点型)
		//可以通过强制转换将类型换成整型
		System.out.println(Math.ceil(1.3443));//输出2.0
		System.out.println((int)Math.ceil(1.3443));//输出2
		
		//floor(a) 返回小于a的第一个整数所对应的浮点数(值是整的,类型是浮点型)
		System.out.println(Math.floor(1.3443));//输出1.0
		
		//rint(a) 返回最接近a的整数的double值
		System.out.println(Math.rint(1.2));//输出1.0
		System.out.println(Math.rint(1.8));//输出2.0
		
		
		//nextAfter(a,b) 返回(a,b)或(b,a)间与a相邻的浮点数 b可以比a小
		System.out.println(Math.nextAfter(1.2, 2.7));//输出1.2000000000000002
		System.out.println(Math.nextAfter(1.2, -1));//输出1.1999999999999997	
		//所以这里的b是控制条件
		
		//nextUp(a) 返回比a大一点点的浮点数
		System.out.println(Math.nextUp(1.2));//输出1.2000000000000002
		
		//nextDown(a) 返回比a小一点点的浮点数
		System.out.println(Math.nextDown(1.2));//输出1.1999999999999997	
	}
}

猜你喜欢

转载自blog.csdn.net/Summer_Lyf/article/details/89740323
今日推荐