转眼间我们已经工作完一周了,这周开始阿Q要不定时更新知识了,先让我们来学习一下java中的Object与string类吧。
API:Application Programming Interface 应用程序编程接口,Java API就是Java提供给我们使用的类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用。
Object:所有类都直接或者间接的继承自Object类,是类层次结构的根类、
public int hashCode()
代码:
public static void main(String[] args) {
Object object = new Object();
int hashCode = object.hashCode();
System.out.println(hashCode); //26171428
Student s1 = new Student("张三", 23);
Student s2 = new Student("李四", 24);
Student s3 = s1;
System.out.println(s1.hashCode()); //6330655
System.out.println(s2.hashCode()); //31782850
System.out.println(s3.hashCode()); //6330655 与s1的hashCode值相同
}
public final Class getClass():此方法被final修饰表示不能被重写。此方法返回此 Object 的运行时类对象,也就是Class类的一个对象,此对象用来描述类的class文件。
public static void main(String[] args) {
Student s = new Student("张三", 23);//创建Student对象 s
//s对象调用getClass()返回一个描述Student类的class文件的对象,也就是Class类的对象
Class clazz = s.getClass();
//clazz对象调用 Class类的getName() 返回一个String类型,类的全路径名
String name = clazz.getName();
System.out.println(name);
Student s1 = new Student();//新创建了一个s1对象
//s1对象调用getClass() 返回一个描述Student类的class文件的对象,也就是Class类的对象
Class clazz1 = s1.getClass();
//因为clazz和clazz1都是描述Student类的class文件的对象 所以他俩是同一个对象
System.out.println(clazz == clazz1);
}
Object的toString()
代码:
public class Student {
String name;
int age;
public Student(String name, int age){
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
}
public static void main(String[] args) {
Student s = new Student("张三", 23);
System.out.println(s); //这句话就相当于 System.out.println(s.toString());
}
Object的equals()
public class Student {
String name;
int age;
public Student(String name, int age){
this.name = name;
this.age = age;
}
//重写equals方法
//参数必须是Object,因为重写Object的方法,方法体必须和Object的equals方法一模一样
@Override
public boolean equals(Object obj) {
Student s = (Student)obj;//因为obj不能调用Student特有的内容,所以向下转型
return this.name.equals(s.name) &&this.age == s.age; //this.name.equals(s.name) 这儿的equals方法是String类重写Object后的equals方法
}
}
public static void main(String[] args) {
Student s1 = new Student("张三", 23);
Student s2 = new Student("张三", 23);
boolean b = s1.equals(s2); //比较2个对象属性是否相同
System.out.println(s1 == s2); //false 比较的是两个对象的地址值是否相同
System.out.println(b); //true
}
Scanner
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); //创建键盘录入对象
if(sc.hasNextInt()) { //判断键盘录入的是否是int类型的数据
int i = sc.nextInt(); //键盘录入的数据存储在i中
System.out.println(i);
}else {
System.out.println("输入的类型错误");
}
}
bug问题:先用nextInt()接收int类型,再用nextLine()接收字符串的时候,会导致nextLine() 直接把回车接收到了, nextLine 不能继续接收字符串了。
构造方法
String s = "abc"; s就是String的一个对象
public String():空构造
public String(byte[] bytes):把字节数组转成字符串
public String(byte[] bytes,int index,int length):把字节数组的一部分转成字符串
public String(char[] value):把字符数组转成字符串
public String(char[] value,int index,int count):把字符数组的一部分转成字符串
public String(String original):把字符串常量值转成字符串
代码:
public static void main(String[] args) {
String s = "abc";
System.out.println(s1); //打印出:abc
String s1 = new String();
System.out.println(s1); //s1是个空串
byte[] arr1 = {97,98,99};
String s2 = new String(arr1); //解码,将计算机读的懂的转换成我们读的懂
System.out.println(s2); //打印出:abc
byte[] arr2 = {97,98,99,100,101,102};
String s3 = new String(arr2,2,3); //将arr2字节数组从2索引开始转换3个
System.out.println(s3); //打印出:cde
char[] arr3 = {'a','b','c','d','e'}; //将字符数组转换成字符串
String s4 = new String(arr3);
System.out.println(s4); //打印出:abdcde
String s5 = new String(arr3,1,3); //将arr3字符数组,从1索引开始转换3个
System.out.println(s5); //打印出:bcd
String s6 = new String("heima");
System.out.println(s6); //打印出 :heima
}
String的判断功能
String的获取功能
String的转换功能
String的其他功能
String和字符数组的转换
String和字节数组的转换
String类的知识就先讲到这里了,想了解更多学习知识,请关注微信公众号“阿Q说”,获取更多学习资料吧!你也可以后台留言说出你的疑惑,阿Q将会在后期的文章中为你解答。每天学习一点点,每天进步一点点。