基础 -- Java笔记2--故事汇
Java笔记2–故事汇
2016年1月20日
14:49
java储存数据的空间:
寄存器(registers):读取速度最快的地方,位于处理器内部。
栈(stack):位于RAM(random-access memory 随机访问内存)
堆(heap):位于RAM,对象存储的位置。
静态存储空间:静态属性的数据
常量存储空间:常量数据
this的故事:
this相当于是一个对自己的引用,当该类的第一个对象在被创建后,this便会指向这个对象,于是当该类还没有创建对象之前我们不能去调用this,所以在静态的方法中不能出现this。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
package com.firefly.javatest.pojo; public class Student { public int id; public String name; public Student(String name) { super(); this.name = name; } public Student(int id) { super(); this.id = id; } public Student(int id,String name){ this(name);//必须写在第一行,不然会报错 //this(id);不能调用两次构造函数 this.id=id; } void print(String name){ //this(name);也不能在非构造函数的地方调用 } } |
以上展示this调用构造函数的实例:
1.必须在构造函数的第一行用this调用别的构造函数
2.同一个构造函数里不能用this掉用别的构造函数两次,基于第一点衍生出来的
3.不能在非构造函数中用this调用构造函数
equals的故事:
equals在用于比较包装类的类型时,是去比较其内部存储的值,但是当它用于比较,普通的类的时候只是比较对象引用指向的地址是否相同,没有什么意义,与“==”是一样的。
java只会为成员变量赋初值,但是如果是局部变量,java是不会管它的,所以在方法里面定义的变量必须要为它赋值。
package的命名规则:所有字母小写,包括首字母和中间单词的首字母。
finall的故事:
1.final类:final类不能被继承,因此会产生很多美丽的故事,诸如它的方法不可能被覆盖,即它的方法都默认为fianl类型,它不会有子类,会相对独立。什么时候我们会想要去用到final修饰方法呢,当你确定你写的这个类不需要扩展,写完就完了,更是不想被人修改。
2.final方法:
使用原因:第一、把方法锁定,防止任何继承类修改它的意义和实现。
第二、高效。编译器在遇到调用final方法时候会转入内嵌机制,大大提高执行效率。
3.final变量( 常量):
final修饰的变量一经赋值便不会改变,也就是常量了,java允许我们先定义一个final常量并且不立即赋值,这叫做final空白,但你得记住,你必须要在构造函数中为你所有的final空白赋初值。因为编译器必须确保它在使用前被初始化。这种机制允许你有多个构造函数,也就是说你能为不同的对象给予常量以不同的值。
4.fianl参数:当参数为final修饰时,你无法再去改变这个参数的值。
static 的故事:
将数据或者方法独立于对象之外,使其变成一个所有人都可以使用的公共属性的东西。与面向对象的想法是相违背的。
方法的重写(overriding)和重载(overloading)
重写是重写了父类的方法,参数和返回值都要相同,会覆盖父类的方法。
重载是一个类中出现方法名相同的方法。
接口的故事:
接口是一个存粹的抽象类。实现多继承。
继承实现多个类向上转型为一个父类型,而接口实现一个类向上转型为多个接口。
接口和抽象类的选用:当你没有要求该类一定要对堆中数据进行操作是就可以用接口,有一个准则为优先使用接口。
接口中不用对数据进行操作,所以不用对堆进行操作。
接口中的成员变量会自动成为public static final类型。
常量在java中用大写字母表示,中间用下划线隔开。
???内隐类(inner class)将一个类的定义置于另一个类中。
将一个字符串的首字母转 换为大写的代码: str.replaceFirst(str.substring(0, 1),str.substring(0, 1).toUpperCase()) ;//str是我们要的字符串
instanceof 是java中的一个保留字,用于检测一个对象是不是由某个类来创建的
