- 博客(8)
- 收藏
- 关注
原创 【Thinking in Java】多态
方法调用绑定: 将一个方法调用和方法主体关联起来叫做绑定。即:编译器遇到了一个方法调用,就会把程序陷入进与之绑定的方法主体内。 绑定分为前期绑定和后期绑定。 前期绑定: 在程序运行前绑定,即编译连接过程中。我的理解是:Java不会去找是哪个对象进行了这次方法调用(因为这时根本就没有对象),而是在引用所在的类中找到相应方法并绑定。以下代码同理,Father类型的引用f不能调用Son类
2016-10-09 23:47:33
343
原创 【Thinking in Java】复用类
复用的三种方式: 组合、继承、代理(代理是组合和继承的结合,Java中没有直接支持。通过将A类组合在B类中,并在B类中暴露A的所有接口来实现) 组合:将对象引用置于新类中即可。表示has-a关系。 继承:子类从父类继承得到父类的方法和变量,再根据自己需要对方法和变量进行增加和修改。表示is-a关系。 可以认为子类对象中包含了一个父类对象,所以在构造一个子类对象时,会
2016-10-08 23:42:42
336
原创 【Thinking in Java】初始化与清理(二)
局部变量不会自动进行初始化,而类变量会 在new出一个对象时,Java会在堆中为此对象分配一个内存块,并将内存块上的数据全部清零。这就是为什么类变量会自动初始化成0和null的原因。 初始化顺序 静态变量—>类变量—>构造方法,且静态变量只初始化一次,类变量可能会初始化多次(eg: 对同一个类new出两个对象时)。 数组的“复制” 把一个数组赋值给另一个数组,其实真正做的
2016-09-19 23:55:23
354
原创 【Thinking in Java】初始化与清理(一)
方法重载 方法名相同,方法参数列表不同(参数个数、类型、顺序),称之为重载。 参数顺序不同虽然也能区分两个方法,但是会使得代码难以理解,不建议使用。 方法的返回值是不能区分方法的。对于一个返回int的func()和一个返回void的func(),你都能在代码里直接调用func()而不赋值给另一个变量,所以不能通过返回值重载。 默认构造器 每个类都有一个默认构造器,但是当你定义了一
2016-09-19 00:55:18
417
原创 【Thinking in Java】控制执行流程
逗号操作符和逗号分隔符: 逗号分隔符用来分隔函数中的不同参数,而Java中唯一用到逗号操作符的是for循环的初始化和步进控制部分。 利用逗号操作符,for循环可以定义具有相同类型的多个变量,只能是相同类型。 foreach语法: public class ForEachInt { public static void main(String args[]){ int[]
2016-09-14 23:49:57
310
原创 【Thinking in Java】操作符
Java在方法调用过程中传递的是“对象的引用”,但对于基本数据类型,传递的是参数的拷贝。 所以下列代码输出的分别是Z和4。 public class Letter { char c; } public class PassObject { public static void main(String args[]){ Letter x=new Letter(); int a=4;
2016-09-13 21:23:09
370
原创 【Thinking in Java】一切都是对象
存储位置: 1. 寄存器(CPU) 2. 栈(内存) 3. 堆(内存) 4. 程序代码内部 5. 流对象和持久化对象 new出来的对象都放在堆里(堆的分配很灵活,但是需要消耗时间),基本类型对象放在栈里,String放在堆里。 对象不需要销毁(垃圾回收机制)。 static关键字,“当声明一个事物是static时,就意味着这个领域或方法不会与包含他的那个类的
2016-09-12 22:24:55
257
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅