一、Java常用类
学习java的常用类-学会jdk-api文档的使用,我们把java的常用类又称为java的API
jdk6-api文档翻译的比较准确-人译
jdk8-api文档-机译
1、Object(*)
Object类是所有类的父类,即所有类都继承Object类
Student stu1 = new Student("赵日天");
Student stu2 = new Student("赵日天");
Student stu3 = stu1;
1、equals
指示其他某个对象是否与此对象“相等”。
比较的内存地址
/**
* 1.equals:比较两个对象的内存地址是否相等
*/
System.out.println(stu1.equals(stu3));
System.out.println(stu1.equals(stu2));
2、hashCode
/**
* 2.hashCode:获取对象的内存地址
*/
int hashCode1 = stu1.hashCode();
int hashCode2 = stu2.hashCode();
int hashCode3 = stu3.hashCode();
System.out.println(hashCode1);
System.out.println(hashCode2);
System.out.println(hashCode3);
3、toString
如果子类没有重写父类Object类的toString方法,这个时候直接输出对象,结果是对象的内存地址
如果子类重写父类Object类中的toString方法,这个时候直接输出对象,结果是执行子类重写后的toStirng方法,输出对象的字符串表现形式
3、getClass(了解)
获取创建该对象的类路径
System.out.println(stu1.getClass());
5.finalize()
垃圾回收器
总结
/**
* ==
* 如果作用于基本数据类型,比较值是否相等
* 如果作用于引用数据类型,比较内存地址是否相等
* equals
* 引用数据类型的比较,建议使用equals
*/
int n = 1;
int m=2;
System.out.println(n == m);
System.out.println(stu1 == stu2);
2、基本数据类型的包装类(*)
java语言是一个面向对象的语言,但是java中的基本数据类型却不是面向对象的,但是我们在实际使用中经常将基本数据类型转换成对象,便于操作,这时,我们就需要用的基本数据类型的包装类!
包装类的继承关系:
1.Integer
1.赋值
//1.整数
int a1 = 10;
Integer a2 = 100;
//2.小数
double b1 = 3.14;
Double b2 = 3.11;
//3.字符
char c1 = 'a';
Character c2 = 'b';
//4.布尔
boolean d1 = true;
Boolean d2 = false;
2属性和方法
//1.int最大值
System.out.println(Integer.MAX_VALUE);
//2.int最小值
System.out.println(Integer.MIN_VALUE);
//3.把字符串转整数--字符串的内容必须看着就像数值
String s = "123";
int n = Integer.parseInt(s);
System.out.println(n);
//4.整数转字符串
int m = 234;
String s2 = m+"";
System.out.println(s2);
3Integer跟int值的区别
Intege有属性,有方法
在java中所有的引用类型都可以赋null值,null表示空的意思
Integer比int多一个值null
4自动装箱和自动拆箱
自动装箱
自动把int类型的数字转换成Integer,该过程自动调用valueOf(int i)
int a = 100;
Integer b = a; 等价于 Integer b = Integer.valueOf(100)
自动拆箱
自动把Integer类型的数字转换成int,该过程自动调用 intValue()
Integer n = 20;
int num = n;//该过程等价于int num = n.intValue();
5.案例
分析下面代码的运行结果
Integer i = 10;
Integer j = 10;
//1--==作用于引用数据类型比较的是内存地址,因为i和j的内存地址相等,结果为true
System.out.println(i == j);
Integer a = 128;
Integer b = 128;
//2--a,b代表不同的对象,a,b存储的内存地址不同等,结果为false
System.out.println(a == b);
int k = 10;
//3--变量i会自动拆箱转换为int类型,然后比较值
System.out.println(k == i);
int kk = 128;
//4--变量a会自动拆箱,转换为int类型,然后比较值
System.out.println(kk == a);
Integer m = new Integer(10);
Integer n = new Integer(10);
//5
System.out.println(m == n);
//6包装类对Object类的equals方法进行了重写,重写后equals方法用来比较值
System.out.println(a.equals(b));
总结
1.当 i >= -128 并且 i <= 127 的时候,直接从缓存中把值取出来赋值给变量。那么第一个打印结果因为 i = 10 在缓存表示的范围内,所以为 true。
2.从上面的分析我们知道,128是不在-128到127之间的,所以第一次创建新的Integer对象,第二次也创建了一个新的Integer对象。故打印结果为false
3.基本数据类型跟包装类型比较,直接比较值
4.基本数据类型跟包装类型比较,直接比较值
5.new出来的都是新对象
总结:Integer类重写了equals方法,重写后的作用是用来比较2个Integer类型变量的值
比较引用数据类型变量的值,使用equals
3、String(*)
1、获取方法
方法 | 说明 |
int length() | 获取字符串的长度(*) |
char charAt(int index) | 获取指定位置的字符(index 下标 ) |
int indexOf(String str) | 获取指定字符首次出现的位置 |
int lastIndexOf(String str) | 获取指定字符最后一次出现的位置 |
String s = "hello";
/**
* 一.获取方法
*/
//1、获取长度
int len = s.length();
System.out.println("字符串的长度为:"+len);
//2.获取指定下标位置的字符(字符串中的每个字符都有下标,下标从0开始)
char c = s.charAt(4);
System.out.println(c);
//3.获取指定字符首次出现的下标
int index = s.indexOf("l");
System.out.println(index);
2、判断方法(*)
方法 | 说明 |
boolean endswith(String str) | 测试此字符串是否以指定的后缀结束 |
boolena isEmpty() | 字符串长度是否为0 jdk1.6新特性 |
boolean contains(CharSequences s) | 是否包含指定值 应用:搜索 |
boolean equals(Object objec) | 判断两个字符串值是否相等 |
boolean equalsIgnoreCase(String str) | 忽略大小写是否相等 |
startsWith(String prefix) | 测试此字符串是否以指定的前缀开始。 |
/**
* 二.判断方法
*/
//1.equals
String s1 = "world";
boolean r1 = s1.equals(s);
System.out.println(r1);
String s2 = "www.woniuxy.com";
//2.判断字符串是否以指定的后缀结束
boolean r2 = s2.endsWith(".com");
System.out.println(r2);
//3.判断字符串是否为空--判断长度
String s3 = "";
boolean r3 = s3.isEmpty();
System.out.println(r3);
//4.判断字符串是否包含指定的值
boolean r4 = s2.contains("wo");
System.out.println(r4);
//5.比较两个字符串是否相等,并忽略大小写
String s4 = "WWW.WoniuXy.Com";
boolean r5 = s4.equalsIgnoreCase(s2);
System.out.println(r5);
//6.判断字符串是否以指定的内容开头
boolean r6 = s2.startsWith("www.");
System.out.println(r6);
3、转换方法
方法 | 说明 |
String toUpperCase() | 小写转大写 |
String toLowerCase() | 大写转小写 |
char[] toCharArray() | 将字符串转换为字符数组 |
new String(char[] array) | 将字符数组转为字符串 |
/**
* 三.转换
*/
String s5 = "Hello";
//1.小写转大写
String newS1 = s5.toUpperCase();
System.out.println(newS1);
//2.大写转小写
String newS2 = s5.toLowerCase();
System.out.println(newS2);
//3.字符串转字符数组
char[] arr = s5.toCharArray();
//字符数组可以直接打印
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
//4.字符数组转字符串
String newStr = new String(arr);
System.out.println(newStr);
4、其他方法(*)
方法 | 说明 |
String replace(char oldChar, char newChar) | 使用指定的值替换替换此字符串所有匹配的字符 |
String[] split(String regex) | 根据指定字符将字符串切割为数组 |
String substring(int beginIndex) | 从指定位置截取到最后 |
String substring(int beginIndex, int endIndex) | 截取指定长度的字符串 |
String trim() | 去除字符串首尾空格 |
/**
* 四.其它方法
*/
String str = "woniuxy";
//1.替换--被替换的内容,替换后的内容
String newStr1 = str.replace("woniu", "***");
System.out.println(newStr1);
//2.切割(注意,不能对点和*进行切割)
String str2 = "aa-bb-cc-dd";
String[] arr2 = str2.split("-");
for (int i = 0; i < arr2.length; i++) {
System.out.println(arr2[i]);
}
//3.截取
String s6 = "www.woniuxy.com";
//a.从指定下标截取到字符串末尾
String newS6 = s6.substring(3);
System.out.println(newS6);
//b.指定截取的下标区间--不包含结束下标
String newS7 = s6.substring(3, 7);
System.out.println(newS7);
//4去除字符串的首尾空格
String s7 = " aaa bbb cc ";
String newS8 = s7.trim();
System.out.println(newS8);
//5.去除字符串的所有空格
String newS9 = s7.replace(" ", "");
System.out.println(newS9);
5.字符串的遍历
/**
* 字符串的遍历
*/
String str8 = "www.woniuxy.com";
//方式一
for(int i=0;i<str8.length();i++) {
char b = str8.charAt(i);
System.out.println(b);
}
System.out.println("----------------------");
//方式二
char[] arr3 = str8.toCharArray();
for (int i = 0; i < arr3.length; i++) {
System.out.println(arr3[i]);
}
6、补充
String类是被final修饰的类,不可以被继承
在java中,所有的字符串字面值都看作是Stirng类的实例(对象),并且所有的字符串字面值都是常量。
1、比较字符串的值(*)
/**
* String类被final修饰,不能有子类
* 所有的字符串字面值,都看作String类的实例(对象)
* 字符串的值是常量,在创建后不可更改
* 字符串拼接一定会创建新对象
*/
String s1 = "hello";
String s2 = s1+"world";
System.out.println(s2);
String str1 = "Java 基础版";
String str2 = new String();
String str3 = new String("Java 高级版");
System.out.println(str3);
String st1 = "abc";
String st2 = "abc";
//==比较对象的内存地址
System.out.println(st1 == st2);//st1,st2是同一个对象
System.out.println("-------------------------");
String st3 = new String("abc");//st3是new出来的,是一个新的对象
System.out.println(st3 == st1);
比较引用数据类型的值是否相等用equals
//1.比较字符串的值是否相等--String类重写了Object类的equals方法,用来比较字符串的值是否相等
String s1 = "hello";
String s2 = new String("hello");
System.out.println(s1.equals(s2));
2、hashCode
String s1 = "abc";
String s2 = "abc";
String s3 = new String("abc");
System.out.println(s1 == s2);
System.out.println(s1 == s3);
System.out.println(s1.hashCode());
System.out.println(s2.hashCode());
System.out.println(s3.hashCode());
String s4 = "Aa";
String s5 = "BB";
System.out.println("--------------------------");
System.out.println(s4.hashCode());
System.out.println(s5.hashCode());
System.out.println(s1.equals(s3));
4、Arrays
数组工具类型,可以让我们非常方便的去操作数组
//创建数组
int[] arr = {2,6,3,7,5};
//1.数组复制(扩容)
int[] newArr = Arrays.copyOf(arr, 10);
// for (int i = 0; i < newArr.length; i++) {
// System.out.println(newArr[i]);
// }
//2.数组排序--升序排序
Arrays.sort(arr);
// for (int i = 0; i < arr.length; i++) {
// System.out.println(arr[i]);
// }
//3.数组查找--使用二分法去数组中查找元素,数组必须是升序的,结果是元素在数组中的下标,没找到结果为负数
int index = Arrays.binarySearch(arr, 10);
System.out.println(index);
//4.数组转字符串
//直接输出数组输出的是数组的内存地址
System.out.println(arr);
//返回指定数组内容的字符串表示形式。
System.out.println(Arrays.toString(arr));
5、Math 类
Math执行基本数学运算的方法。
//1.PI
System.out.println(Math.PI);
//2.取绝对值-
int n1 = Math.abs(-123);
System.out.println(n1);
//3.向上取整
double n2 = Math.ceil(3.3);
System.out.println(n2);
//4.向下取整
double n3 = Math.floor(3.6);
System.out.println(n3);
//5.四舍五入
long n4 = Math.round(3.49);
System.out.println(n4);
//6.随机数 0<=Math.random()<1
//生成1-10之间的整数
double n5 = (int)(Math.random()*10)+1;
System.out.println(n5);
//7.求m的n次方
double n6 = Math.pow(2, 3);
System.out.println(n6);
6、UUID
表示通用唯一标识符
/**
* UUID
* 生成32位随机字符串
*/
String uuid = UUID.randomUUID().toString();
System.out.println(uuid);
7、Random
//创建Random对象
Random random = new Random();
//生成0-10之间的随机整数,不包含10
int n = random.nextInt(10);
System.out.println(n);