许久未更新。。。因为之前一直在看法语,准备法语考试。。。
考好后才开始慢慢又复习java,看android的东西。
为了更新blog,总结一下这几天看的东西中值得记录的部分。
一、1.7之后,switch表达式类型,不仅支持等价为int 基本类型的数据:byte ,short,char,int还可以支持String类型的数据。eg:
String str = "gay";
switch(str) {
}
二、静态方法不能调用非静态变量。或许是因为静态的是属于类,非静态的是属于对象,因此不能被调用?
三、只要代码被执行,则无论代码能否被执行(哪怕编译通过,执行报错)静态代码块都会被执行。是因为它是属于类,在运行的时候就已经被装载执行了么?静态代码块的作用一般是用于为静态属性赋值。
四、八个基本数据类型:byte short int long float double char boolean;三个引用数据类型:class interface array
五、byte、short、int、long被赋值的时候,它们的字面量都为int,而float和double被赋值时,其字面量都为double型。但是又有一个很奇怪的现象是,比如:
float f = 0.2;
byte b = 2;
int i = 5;
long lo = 9;
猜测:可能byte short int是特殊的,其字面量分别是byte short int,当然它们本质上都是整型嘛。
六、Unicode为每种语言的每个字符设定了统一且唯一的二进制码,范围为:0-0x10FFFF;因为java使用的是Unicode编码,所以char a = 'A';和char b = '汉';本质上是一样的。
七、从继承、super、this等等来看,java作为一种面向对象语言,所思所想都是如何减少重复代码,用最简单的方式,最精简的代码模拟现实世界。
八、对于new一个对象,其引用在栈内存中,其实际对象是在堆内存中。自动垃圾处理回收的只是堆内存中的资源,所以一些对读写接口的打开啊等等什么的,要记得读写好要断开关闭。
九、匿名对象,一般被使用一次,比如:
class Person {
int i;
void eat() { }
}
在其他的地方调用匿名对象new Person().eat();
十、static方法、static变量可以直接用类名调用,也可以用对象名调用。
十一、overload与override
overload:
1、在同一个类中
2、除了参数列表,两个方法的其他定义都相同
3、一般用于不同参数数量的多个构造函数,以及几个不同参数数量的同名方法
override:
1、在具有父子关系的两个类当中
2、父类和子类各有一个方法,它们的定义(返回值类型、方法名和参数列表)完全相同
3、一般是子类方法对于其继承的父类方法的完善、补充
十二、继承时,子类继承的是父类的成员变量和成员方法;子类的构造方法必须用super调用父类的构造方法。
十三、当用于调用本类或父类中的构造函数时,因为super和this都必须放在一个构造函数方法体中的第一行,所以他们不能同时出现,也不可能单个多次出现。
为什么是十三点,那就再加一点。。
十四、重要的是面向对象的思想,不要用java的语法写一个标准的C语言程序。虽然很多Chinglish已经变成日常惯用语,如long time no see,但是学习最重要的是一种思维方式吧,就像dota更重要的应该是意识而非操作。额,有点形而上学了。。
多静下来想一想,总结总结。