今日计划(已经完成的):
阅读了关于semantic segmentation的某一篇综述文献
《疯狂的java讲义》——169~183
-
和equals之间的区别和联系
对于一般的equals()方法,使用的结果和是一样的,只是在String中重写了这个方法。
equals()是来自Object的方法,因此我们可以自己重写这个方法,极端情况下可以使得dog对象和cat对象相等。 -
类成员
类变量的生存范围几乎等同于类的生存范围。
2、通过对象访问类变量实质上是通过类在访问类变量。
3、
-
单例类
1、如果一个类只能创建一个实例,那么他就是单例类。
-
final修饰符
1、
-
final成员变量
!!!!好好看看176面的例子,记住不能在普通方法中给final变量赋值。
而且,系统不会对final变量进行隐式赋值,只会对普通变量进行隐式初始化。
所以说,没有初始化之前不能访问,会报错。
-final局部变量
系统不会对局部变量进行初始化,必须由程序员进行初始化。
1、
- final修饰基本类型变量和引用类型变量的区别
1、
看一个小例子:
@@@@@@我想到了下面这种情况,试一试这种情况下会有什么变化:
public class Base2{
public static void main(String[] args) {
final int a=5;
int b=a;
a=b;
}
}
经过我的尝试,发现这种情况居然会报错,也就是说即使是同一个变量或者是引用也不行,使用String也不可以。
-6.4.4、可执行宏替换的final的变量
1、
2、
注意看一下179上面的那个例子
两个字符串相加,在编译的时候就会生成一个字符串,在常量池中。
179面上面的例子还说明了,需要调用类方法的也不会在编译的时候确定数值,也就不是宏变量。
如下面的例子:
3、
@@@按照我的理解需要这样进行验证,但是验证的结果表示没有问题啊~~~
public class Base2{
final String s1;
final String s2="cheng";
public Base2(final String s) {
s1=s;
}
public static void main(String[] args) {
String s="cheng";
Base2 b=new Base2(s);
System.out.println(b.s1==b.s2);
}
}
//答案是True,下面的答案依然是True
public class Base2{
final String s1;
final String s2="cheng";
public Base2() {
s1="cheng";
}
public static void main(String[] args) {
String s="cheng";
Base2 b=new Base2();
System.out.println(b.s1==b.s2);
}
}
-
final方法
1、final修饰的方法不能被重写,但是能够被重载。180面上面
private修饰的函数可以被重写,因此private final修饰的函数可以被重写。 -
6.4.6、final类
1、final修饰的类是不会有子类的。 -
6.4.7、不可变类
1、
@@@@@hashcode()是什么意思~~~~~~是干啥的,最后这一部分没有看明白啊
2、
仔细看一下183面上面的例题。
今天先到此结束~~~~
以上如有错误,欢迎批评指正,书籍《疯狂java讲义》