跟着黑马学c++:
今天是内存四区的堆区(在堆中的数据是由程序员来管理他的生死):
如上图在栈中开辟数据,当函数执行完,释放,之后再操作内存的话就是非法操作,详情结合昨日复盘就可以看的很明白。
如上图,在堆区开辟了一段内存,把内存的编号返回,用指针去接收。
对比昨天复盘,在堆中的输出,不像在栈中开辟空间一样,在堆中的数据在函数执行完依然存在,
所以利用new关键字创建堆中的数据,还是挺好的。
跟着黑马学java:
第一个是关于object类的toString方法:
object类(类层次结构的根类/祖宗,即每个类都可以去继承它):
上图可以看出,当给对象s的姓名和年龄都赋值以后输出s并没有达到预期的效果,为什么,
通过上图可以看出在调用方法printn时层层往下走,最终调用的是object的tostring方法,而object的tostring方法显示的就是com……这串内容。
所以当我们在创建子类的时候,要去重写toString方法,达到输出相应内容的目的,一般在编译器中找到对应的重写方法会自动生成相应的格式。
forexample:
但是不重写的话,可以用s.get方法来获得相应的值。
第二个是equals方法:
s1和s2是新new的两个对象,都有不同的地址值,s1==s2比较的是地址值,所以不相同。
虽然方法中是object类但是调用的时候是student类,因为是向上转型,所以是可以的,但是最后输出的仍然是false。why?because....
通过原码可以看出,在比较的时候还是比较的地址值。调用的时候还是需要重写equals方法。
重写之后达到了预期效果。
分析一下equals重写后的方法:
特别关注下面三条语句:
上面是对应的调用方法时参数,这个要注意。
这个的和上面的向上转型对应起来,这是向下转型,student=s2;方便比较对应的name和age。
这里的name是string类型,因此调用equals方法用的是string类型的equals方法,结果判断完毕。
今日复盘:
今天学的内容真的很少,因为大部分时间都出去玩了,滑雪,吃,哈哈,除了学习其他事情都是让人心情愉悦的。
1.英语没背,但是把前几天背的单词看了看,了解了自己记忆的情况。
2.然后今天就没学别的了。。。
明天争取把概率再多复习一点,然后离散现在已经有答案了,该复习该做题都要开始,加油。