发表于: 2019-11-03 19:58:51
2 728
今天完成的事情:基础学习:反射总结:
练习 String
public class StringTest1{
public static void main(String[] args) {
//demo1();
//demo2();
//demo3();
//demo4();
//demo5();
//demo6();
//demo7();
//demo8();
demo9();
}
public static void demo9() {
String s = "ab";
String s1 = "abc";
String s2 = s + "c";
String s3 = s;
System.out.println(System.identityHashCode(s));
System.out.println(System.identityHashCode(s1));
System.out.println(System.identityHashCode(s2));
System.out.println(System.identityHashCode(s3));
System.out.println("-------------------------------------------");
String str1 = "重地";
System.out.println(str1.hashCode());
String str2 = "通话";
System.out.println(str2.hashCode());
System.out.println("-------------------------------------------");
String str3 = "方面";
//identityHashCode是根据对象再内存中的地址计算出一个hashCode值
System.out.println(System.identityHashCode(str3));
String str4 = "树人";
System.out.println(System.identityHashCode(str4));
System.out.println("-------------------------------------------");
String str5 = "儿女";// 30 50
//这里的hashCode方法调用的是String类中重写的hashCode方法,此方法根据字符串中的字符数组的每个元素计算出来的hashCode值的和
System.out.println(str5.hashCode());
String str6 = "农丰";// 40 40
System.out.println(str6.hashCode());
}
public static void demo8() {
String str1 = "AA";
String str2 = "AA";
System.out.println(str1 == str2);
Person p1 = new Person("AA", 12);
Person p2 = new Person("AA", 21);
System.out.println(p1.name == p2.name);
}
public static void demo7() {
String a = "hello2";
final String b = "hello";
String d = "hello";
String c = b + 2;
String e = d + 2;
System.out.println((a == c));
System.out.println((a == e));
}
public static void demo6() {
// 定义一个字符串变量
String str = "Hello ";
System.out.println(System.identityHashCode(str));
// 进行字符串连接运算
str = str + "Java";
// System.identityHashCode(str)是根据地址值算出的hashCode
System.out.println(System.identityHashCode(str));
// 进行字符串连接运算
str = str + ", www.study.com";
System.out.println(System.identityHashCode(str));
}
public static void demo5() {
// 下面的定义创建了几个对象
String str = "Hello " + "Java ," + "www.study.com";
String str2 = new String("Hello Java");
}
public static void demo4() {
String str1 = "Hello Java的长度:10";
final String s1 = "Hello ";
String str2 = s1 + "Java" + "的长度:10";
System.out.println(str1 == str2);
final int len = 10;
String str3 = s1 + "Java" + "的长度:" + len;
System.out.println(str1 == str3);
}
public static void demo3() {
String str1 = "Hello Java的长度:10";
// 因为str2的值包含了方法调用,因此不能在编译时确定
String str2 = "Hello " + "Java" + "的长度:" + "Hello Java".length();
System.out.println(str1 == str2);
int len = 10;
// 因为str3的值包含了变量,因此不能在编译时确定
String str3 = "Hello " + "Java" + "的长度:" + len;
System.out.println(str1 == str3);
System.out.println(System.identityHashCode(str1));
System.out.println(System.identityHashCode(str3));
}
public static void demo2() {
String str1 = "Hello Java的长度:10";
// 虽然str2的值不是常量,但因为str2的值可以在编译时确定
// 所以str2也会直接引用字符串常量池中对应的字符串
String str2 = "Hello " + "Java" + "的长度:" + 10;
System.out.println(str1 == str2);
}
public static void demo1() {
// str1的值是字符串直接量(常量)
// 因此,str1指向字符串常量池中的"Hello Java"字符串
String str1 = "Hello Java";
// str2也指向字符串常量池中的"Hello Java"字符串
String str2 = "Hello Java";
// 下面程序将输出true
System.out.println(str1 == str2);
// System.out.println(System.identityHashCode(str1));
// System.out.println(System.identityHashCode(str2));
}
}
class Person {
String name;
int age;
public Person() {
// TODO Auto-generated constructor stub
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
}
明天计划的事情:接着任务1和学习基础
遇到的问题:进度缓慢 诱惑很大
收获:学习了基础知识 反射的总结
评论