一:Object类
equals()和==的区别:==是逻辑运算符,既可以比较基本数据类型,也可以比较引用数据类型(比较的是地址值),equals()只能比较引用数据类型,默认比较的是两个对象的地址值
public class ObjectDemo extends Object {
public static void main(String[] args) {
Object obj = new Object();
Object obj2 = new Object();
System.out.println(obj);
System.out.println(obj2);
System.out.println(obj == obj2);
boolean b = obj.equals(obj2);
System.out.println(b);
}
}
运行结果:
java.lang.Object@1540e19d
java.lang.Object@677327b6
false
false
Process finished with exit code 0
注释:==可以比较基本数据类型,也可以比较引用数据类型(比较的是地址值
),equals()只能比较引用数据类型,重写后比较的是内容。
二,Scanner类
nextXXX() 获取各种类型的数据
hasNextxxx() 判断是否录入的是该种数据
例:nextLine()和next()的区别
public class demo3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//录入字符串 nextLine();
//next() 也能录入字符串
System.out.println("请输入一个整数");
int i = sc.nextInt();
System.out.println(i);
System.out.println("请输入一段字符串");
String line = sc.nextLine(); //这个方法会把回车换行或者空格都会录入进去
System.out.println(line);
}
}
运行结果:
请输入一个整数
123
123
请输入一段字符串
Process finished with exit code 0
注释:先使用next()录入一个整数,再用nextLine()录入一个字符串时键盘录入会把回车换行符当作字符串录入,当使用next()时就没有这种情况,使用时视情况而定。
三,String类
String类的特点是一旦创建就不能被改变,因为他存储于方法区的常量池当中
例:
public class demo3 {
public static void main(String[] args) {
String s = "hello";
s = "world" + "java";
System.out.println("-----------------");
System.out.println(s);
String s1="abc";
String s2="abc";
System.out.println(s1==s2);
System.out.println(s1.equals(s2));
}
}
运行结果:
worldjava
true
true
Process finished with exit code 0
注释:
1.既然String类的值一被创建就不能改变,那为什么s的值为worldJava而不是java呢?因为他改变的只是引用即地址值,而非内容
2.为什么S1和S2的内容相同而且地址值也相同呢?这是常量池的优化,他在存储时会先查找是否有该内容,如果有则直接将地址值赋予而不存储,如果没有才在常量池中划分区域去存储,这样的好处是大大节省了存储空间,避免了资源的浪费。
常用类有很多的功能,也有很多的方法,这需要我们一一的去练习来熟练掌握,此处就不一一列举了