黑马程序员-常用API学习笔记(1)

-------android培训java培训、期待与您交流! ----------

----------------------------------------java.lang.Object:类----------------------------------------

Object :是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。 

1.在编写代码时,只有在使用java.lang下的类时,无需导包。其它包的类都需要导包;

2.java.lang包下包含了大量的常用类。我们可以直接使用,无需导包;

3.关于Object类:

      1).它是所有引用数据类型(包括数据)的父类;

      2).所有的类(包括Java类库中的类、我们的自定义类、数组)都隐式的继承自Object;

      3).Object的构造方法:Object()

      4).Object的常用方法:

            public int hashCode():返回哈希码值。是一个int值。同一个对象,多次调用此方法会返回相同的hashCode;不同的对象,会返回不同的hashCode;内部是根据对象的地址产生的哈希值;

            public final Class getClass():返回此 Object 的运行时类。

            public String toString():返回该对象的字符串表示。一般子类重写:将内部的所有属性的值封装为一个String并返回;

            protected void finalize():当垃圾回收器回收此对象的内存空间前,会自动调用此方法;

            protected Object clone():复制当前对象的副本;

            public boolean equals(Object obj):比较当前对象与参数对象是否"相等";

==和equals的区别:

            判断运算符:==

                        1.如果两边是基本数据类型,比较的值是否相等;

                        2.如果两边是"引用数据类型",比较的是"引用(地址)"是否相等;

            equals方法:

                        1.只能判断引用数据类型; 

                        2.在Object类中定义,任何类都会继承此方法;

                        3.在Object类中默认实现:判断两个对象的地址是否相同;

                        4.我们一般都会重写此方法,判断对象内部的属性值是否全部完全相同.

public class Demo {
	public static void main(String[] args) {
		Student stu = new Student();
		// 1.hashCode();
		System.out.println(stu.hashCode());
		/*
		 * System.out.println(stu.hashCode());
		 * System.out.println(stu.hashCode());
		 * System.out.println(stu.hashCode());
		 */

		Student stu1 = new Student();
		Student stu2 = new Student();

		System.out.println(stu1.hashCode());
		System.out.println(stu2.hashCode());

		// 2.getClass():
		Class c = stu.getClass();
		System.out.println(c.getName());
		System.out.println(c.getModifiers());
		System.out.println(c.getPackage().getName());

		// 3.toString();
		stu.setName("张三");
		stu.setAge(20);
		stu.setSex('男');
		System.out.println("stu.toString() : " + stu.toString());

		// 4.equals():
		Student stu11 = new Student("张三", 20, '男');
		Student stu22 = new Student("张三", 20, '男');
		// ==:判断地址是否相等
		System.out.println("stu11 == stu22 : " + (stu11 == stu22));
		// 判断内部的成员的值,是否完全相同;
		System.out.println("成员的值是否完全相同:"
                      + (stu11.getName().equals(stu22.getName())
	&& stu11.getAge() == stu22.getAge() && stu11.getSex() == stu22.getSex()));
		System.out.println("stu11.equals(stu22) : " + stu11.equals(stu22));

		Scanner sc = new Scanner(System.in);
		Student[] stuArray = new Student[3];
		for (int i = 0; i < stuArray.length; i++) {
			System.out.println("请输入第 :" + (i + 1) + " 名学生的信息:");
			System.out.println("姓名:");
			String name = sc.next();

			System.out.println("性别:");
			String sex = sc.next();

			System.out.println("年龄:");
			int age = sc.nextInt();

			Student s = new Student(name, age, sex.charAt(0));
			stuArray[i] = s;
		}

		System.out.println("请输入一个字符串:");
		String str = sc.next();
		System.out.println("你输入的是: " + str);
		if (str == "abcd") {
			System.out.println("判断为true");
		} else {
			System.out.println("判断为false");
		}

		Student stu33 = new Student();
		stu33 = null;
		// 运行垃圾回收器
		System.gc();

		// 复制对象
		Student stu44 = new Student();
		stu44.setName("刘德华");
		stu44.setAge(20);
		stu44.setSex('男');

		// Student stu55 = stu44;//这不是复制对象,

		Student stu55 = new Student();
		stu55.setName(stu44.getName());
		stu55.setAge(stu44.getAge());
		stu55.setSex(stu44.getSex());
		System.out.println("stu44 == stu55 : " + (stu44 == stu55));// false

		Student stu66 = (Student) stu44.clone();
		System.out.println("stu44 == stu66 : " + (stu44 == stu66));// false
		System.out.println(stu66.getName() + "," + stu66.getAge() + ","	+ stu66.getSex());

	}
}

----------------------------------------java.util.Scanner:类----------------------------------------

常用方法:

            public static void gc():运行垃圾回收器:

            public static void exit(int status):结束JVM。参数是状态码。0表示正常退出

            public static long currentTimeMillis():获取当前的系统时间的毫秒值;从1970年1月1日开始                             public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)             

                     参数:                      

                        src - 源数组。

                        srcPos - 源数组中的起始位置。

                        dest - 目标数组。

                        destPos - 目标数据中的起始位置。

                        length - 要复制的数组元素的数量。

public class Demo {

	public static void main(String[] args) throws FileNotFoundException {

		// fun1();
		// fun2();
		fun3();
	}

	/***
	 * 一、扫描控制台输入
	 * 
	 * 当通过new Scanner(System.in)创建一个Scanner,控制台会一直等待输入,直到敲回车键结束.
	 * 把所输入的内容传给Scanner,作为扫描对象。如果要获取输入的内容,则只需要调用Scanner的nextLine()方法即可
	 * next.Byte(),nextDouble(),nextFloat,nextInt(),nextLine(),nextLong(),nextShot()
	 */
	public static void fun1() {
		// 创建Scanner对象 接受从控制台输入
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入字符串:");
		while (true) {
			String str = sc.nextLine();
			if (str.equals("exit"))
				break;
			System.out.println("你输入的是:" + str);
		}
	}

	/***
	 * 二、Scanner默认使用空格作为分割符来分隔文本,但允许你指定新的分隔符
	 * 
	 */
	public static void fun2() throws FileNotFoundException {
		Scanner sc = new Scanner("asdfasdf 42,134 42.13|412 54dssd ");
		// 返回此 Scanner 当前正在用于匹配分隔符的 Pattern。
		sc.useDelimiter(" |,|\\.");// 相当于split
		while (sc.hasNext()) {
			System.out.println(sc.next());
		}
	}

	/**
	 * 三、逐行扫描文件,并逐行输出
	 * 
	 */
	public static void fun3() throws FileNotFoundException {
		InputStream in = new FileInputStream(new File("D:\\workspace\\MyProject\\file\\test.txt"));
		Scanner sc = new Scanner(in);
		// 判断还有没有下一个行
		while (sc.hasNextLine()) {
			System.out.println(sc.nextLine());
		}
	}
}
public class Student {
	@Override
	public void finalize() throws Throwable {
		System.out.println("我要被回收了,这是我最后的一句话:拜拜!");
	}
}
public class Demo {
	public static void main(String[] args) {
		Student stu = new Student();
		stu = null;
		System.gc();

		for (int i = 0; i < 20; i++) {
			System.out.println("i = " + i);
			if (i == 10) {
				System.out.println("程序退出!");
				System.exit(0);
			}
		}

		long start = System.currentTimeMillis();
		double sum = 0;
		for (int i = 1; i <= 100000000; i++) {
			sum += (Math.PI + Math.E) / i;
		}
		long end = System.currentTimeMillis();
		System.out.println("计算时间:" + (end - start) + " 毫秒!");
		System.out.println("sum = " + sum);

		int[] array1 = { 42, 324, 32, 54, 231, 43, 546 };
		int[] array2 = new int[array1.length];
		System.arraycopy(array1, 0, array2, 0, array1.length);
		System.out.println("array2中的内容:" + Arrays.toString(array2));

		System.out.println("主程序的最后一行代码!");
	}
}

----------------------------------------java.lang.Character(类):char的包装类----------------------------------------

构造方法:

            public Character(char value)

成员方法:

            public static boolean isUpperCase(char ch):判断一个字符是否是大写字符

            public static boolean isLowerCase(char ch):判断是否是小写字符

            public static boolean isDigit(char ch):是否是数字字符

            public static char toUpperCase(char ch):转换为大写字符

            public static char toLowerCase(char ch):转为小写字符;

注意:不会改变原值:

public class Demo {
	public static void main(String[] args) {
		char c = 'a';
		Character chObj1 = new Character(c);
		
		System.out.println("是否是大写:" + (c >= 'A' && c <= 'Z'));
		System.out.println("是否是大写:" + Character.isUpperCase(chObj1));
		System.out.println("是否是小写:" + Character.isLowerCase(chObj1));
		System.out.println("是否是数字:" + Character.isDigit(chObj1));
		System.out.println("转换为大写:" + Character.toUpperCase(chObj1));
	//	System.out.println("转换为小写:" + Character.toLowerCase(c));
		System.out.println("原值c:" + c);
		System.out.println("原值chObj1 : " + chObj1);
	}
}

----------------------------------------java.lang.Integet(类)--int的包装类----------------------------------------

1.Integer 类在对象中包装了一个基本类型 int 的值。Integer 类型的对象包含一个 int 类型的字段。 此外,该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,还提供了处理 int 类型时非常有用的其他一些常量和方法。

2.成员属性:

            static int MAX_VALUE :值为 231-1 的常量,它表示 int 类型能够表示的最大值。 

            static int MIN_VALUE :值为 -231 的常量,它表示 int 类型能够表示的最小值。 

            static int SIZE :用来以二进制补码形式表示 int 值的比特位数。 

            static Class TYPE :表示基本类型 int 的 Class 实例。 

3.构造方法:

            public Integer(int value):将一个int转换为一个Integer

            public Integer(String s):将一个String转换为一个Integer

4.成员方法:

            public int intValue():获取Integer内部的int值

            public static int parseInt(String s):将一个String转换为一个int

            public static String toString(int i):将一个int转换为String

            public static Integer valueOf(int i):将一个int转换为Integer

            public static Integer valueOf(String s):将一个String转换为Integer;

5.int类型和String类型的相互转换

       int –-> String:

            1).int --> Integer-->toString() --> String

            2).int --> String --> valueOf() --> String

            3).字符串拼接:int n = 10; String s1 = "" + n;

       String – int

            1).String --> Integer的构造方法 --> Integer --> intValue() --> int

            2).String --> Integer-->parseInt() --> int

public class Demo {
	public static void main(String[] args) {
		System.out.println("MAX_VALUE : " + Integer.MAX_VALUE);
		System.out.println("MIN_VALUE : " + Integer.MIN_VALUE);
		System.out.println("SIZE : " + Integer.SIZE);
		System.out.println("TYPE : " + Integer.TYPE);
		
		Integer intObj1 = new Integer(10);
		System.out.println("intObj1 = " + intObj1.toString());
		Integer intObj2 = new Integer("20");
		System.out.println("intObj2 = " + intObj2);
		
		//int--String的转换
		int n = 10;
		String s1 = Integer.toString(n);
		System.out.println("s1 = " + s1);
		s1 = String.valueOf(n);
		System.out.println("s1 = " + s1);
		
		String s2 = "13234";
		int m = Integer.parseInt(s2);//如果字符串中包含非数字,此方法将抛出异常;
		System.out.println("m = " + m);
	}
}

----------------------------------------java.util.Arrays类----------------------------------------

java.util.Arrays类:对数组操作的工具类。此类包含用来操作数组(比如排序和搜索)的各种方法

成员方法:

            public static String toString(int[] a):把一个int[]数组转换为一个String;

            public static void sort(int[] a):把数组a进行排序;对指定的 int 型数组按数字升序进行排序。该排序算法是一个经过调优的快速排序法,

            public static int binarySearch(int[] a,int key):使用二分查找法,在数组a中查找值:key。如果没找到,返回"负值";

public class Demo {
	public static void main(String[] args) {
		
		int[] array = {124,32,54,352,4,36,5,7,69,87,68,53264,1351};
		String str = Arrays.toString(array);
		System.out.println(str);
		
		Arrays.sort(array);//更改原数组的顺序
		
		System.out.println("排序后数组:" + Arrays.toString(array));
		
		int index = Arrays.binarySearch(array, 3000);
		System.out.println("索引:" + index);
		
		//关于零长度数组
		int[] arr = new int[0];
		System.out.println(arr);//地址(既然有地址,就不是空指针)
		arr[0] = 100;//运行时异常:java.lang.ArrayIndexOutOfBoundsException:数组下标越界(因为是0长度,所以没有任何元素)
		
	}
}

 ----------------------------------------java.lang.Math类----------------------------------------

java.lang.Math类:包含了一些数学运算的一些方法:

成员方法:

            public static int abs(int a):返回参数的绝对值

            public static double ceil(double a):向上取整;

            public static double floor(double a):向下取整

            public static int max(int a,int b) :求两个数的最大值;(min自学)

            public static double pow(double a,double b):返回a的b次幂;

            public static double random():返回带正号的 double 的随机值,该值大于等于 0.0 且小于 1.0。

            public static int round(float a) :返回最接近参数的 int。结果将舍入为整数: 

            public static double sqrt(double a):返回正确舍入的 double 值的正平方根;

public class Demo {
	public static void main(String[] args) {
		System.out.println("-5的绝对值:" + Math.abs(-5));
		System.out.println("3.2向上取整:" + Math.ceil(3.2));
		System.out.println("3.8向上取整:" + Math.ceil(3.8));
		System.out.println("3.2向下取整:" + Math.floor(3.2));
		System.out.println("3.8向下取整:" + Math.floor(3.8));
		System.out.println("10,和20的最大值:" + Math.max(10,20));
		System.out.println("2的3次幂:" + Math.pow(2, 3));
		System.out.println("2的3.2次幂:" + Math.pow(2, 3.2));
		System.out.println("获取一个随机数:" + Math.random());
		System.out.println("3.2取整:" + Math.round(3.2));
		System.out.println("3.8取整:" + Math.round(3.8));
		System.out.println("16的平方根:" + Math.sqrt(16));
	}
}

猜你喜欢

转载自shuangxi-zhu.iteye.com/blog/2247092