-------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)); } }