看java编程思想笔记(5-6)

笔记|编程

现在前面几章是前几天记录的 ,后面的章节要慢慢发布了.我争取这个月看完这本书了,笔记很多是我自己看书体会出来的,可能有些表达不对.如果是这样,请指正.
第五章
1. 在java原文件中,可以有多个类,但是只能有一个public类,而且这个类名字和文件名字相同。

2. 在java解释器运行的时候 ,它首先去找classpath环境变量中,这些变量中有路径,java解释器就将这些目录当初根目录去找class文件。但是如果使用jar包,需要将文件名字也加到环境变量中间。如果有相同的类名字,就可以起冲突,这个时候需要明确指明类的位置。CLASSPATH需要大写

3. Java中的public,private,protect三个访问控制符,应该放在类的每个成员的定义的前面。不管这个成员是数据还是方法,一个访问控制符只管它后面一个成员,不象c++那样。Java中没有写三个访问控制符的话就使用默认控制权限。

4. 默认控制权限(package权限):同一个包内的类可以访问。Public:任何人,都可以访问这个成员。Private:表示除了这个类(包含这个成员的类)的方法,其它的一律不能访问。Protect:基类的方法可以访问,但是其他类不能访问

5. 每个文件(编译单元)中只能有一个public类,但是可以同时有多个辅助功能的类,如果一个文件中有两个或两个以上的public类,编译器将报错。Public类的名称需要和文件名称相同,包括字母的大小写要相同。否则编译器也将报错。文件中可以没有public类,虽然这样少见,这时文件名字可以随便取。

6. 类不能是private的和protect,类只有两种类型,public和package类型。如果你不想别人访问这个类 ,你可以将构造函数设置为private,这样别人就没有办法创建这个类的对象了,你可以提供一个static方法来创建对象。(注解一:另外一个影响是该类构造函数是private类型的。那么它不可继承。注解二:内部类可以使private和protected的。(有点不懂,待后面章节再理解))

7. 访问控制的两大原因:一个是禁止用户去碰它们不该碰的东西。这样可以简化它们对类的理解。二是让类库的设计者可以在不惊动客户程序员的前提下修改类库的内部运行机制。

第六章
1. 在设计方面一条基本的原则。将数据设计为private类型。将方法设计为public类型。当然碰到特殊的情况可以调整。

2. 在派生类中可能修改了基类某个方法(如draw()),当仍然需要调用基类的该方法时,可以使用super.draw()

3. 在派生类的构造函数作,会自动调用基类的无参数的构造函数。如果基类没有默认构造函数(无参数的构造函数),就必须使用super和合适的参数来明确调用基类对应的构造函数,并且该语句必须放在派生类构造函数最前面,编译器将先执行基类的构造函数,在执行派生类的构造函数。

4. Final有三个用途,分别用于数据(data),方法(method),和类(class)

l Final用于数据时,当数据类型是原始类型,说明这个数据是个常量。当这个数据类型是对象的reference时,就说明这个reference是个常量,一旦将reference连接到某个对象,就不能再连接到其他的对象。但是这个对象的本身数据可以修改(static说明只有一个),对final数据,可以在声明数据的时候赋值,也可以在构造函数中赋值。我们可以在参数中使用final,这个说明reference参与运算时不能指向其他对象

l Final用于方法:将final用于方法有两个作用,一个是给方法上锁,禁止派生类进行修改,二个原因就是效率,如果方法是final的。那么编译器就调用转换为内联(inline))(这个编译器会自动判断是否内联)

l Final用于类:等于说你不再继承这个类,你也不许别人来继承这个类。由于不能再继承这个类,所以类的所有方法都隐式的变为final

5. 在继承中的类的初始化:先初始化基类的static,然后是派生类的static。然后再创建对象的时候,这时对象中所有原始类型的变量将变为初始值,所有reference变为null,然后调用基类的构造函数,在调用派生类的构造函数

时间: 2024-10-24 14:26:42

看java编程思想笔记(5-6)的相关文章

java多线程问题,java 编程思想书中的例子

问题描述 java多线程问题,java 编程思想书中的例子 在看java编程思想书中的多线程一节,书中对wait,notify,notifyall举了一个例子,模拟给汽车涂蜡和抛光的过程, 因为抛光任务在涂蜡之前是不能尽兴的,反之,涂蜡任务在涂另外一层蜡之前,必须要等抛光任务结束.代码如下: 显示一个汽车类: class Car{ private boolean wanOn=false; public synchronized void waxed(){ waxOn=true; notifyAl

Java编程思想重点笔记(Java开发必看)

Java编程思想,Java学习必读经典,不管是初学者还是大牛都值得一读,这里总结书中的重点知识,这些知识不仅经常出现在各大知名公司的笔试面试过程中,而且在大型项目开发中也是常用的知识,既有简单的概念理解题(比如is-a关系和has-a关系的区别),也有深入的涉及RTTI和JVM底层反编译知识.   1. Java中的多态性理解(注意与C++区分) Java中除了static方法和final方法(private方法本质上属于final方法,因为不能被子类访问)之外,其它所有的方法都是动态绑定,这意

Java编程——Java开发必看的编程思想

Java编程思想,Java学习必读经典,不管是初学者还是大牛都值得一读,这里总结书中的重点知识,这些知识不仅经常出现在各大知名公司的笔试面试过程中,而且在大型项目开发中也是常用的知识,既有简单的概念理解题(比如is-a关系和has-a关系的区别),也有深入的涉及RTTI和JVM底层反编译知识.   1. Java中的多态性理解(注意与C++区分) Java中除了static方法和final方法(private方法本质上属于final方法,因为不能被子类访问)之外,其它所有的方法都是动态绑定,这意

学习JAVA编程思想4的好方法

问题描述 跪求大神总结学习JAVA编程思想4的好方法. 解决方案 解决方案二:Java编程思想是很好的学习Java的材料,但对初学者来说有的地方不是能够轻易明白的.因为Java涉及的概念和技术非常广泛,建议先把基础夯实,比如类,接口,继承,多态等,这些有了基础后可以再深入学习正则表达式.线程.io等,一定要动手编写代码,并确实明白代码的执行逻辑.解决方案三:1.背把那些死知识背下来,复习巩固2.敲可以按书本例子课后题敲,对没掌握的可以重复敲3.测找其他题测试掌握情况,最好找SCJP题库的题,因为

java编程思想动态代理实现事务

问题描述 各位大侠好,最近在研读Java编程思想,在看到动态代理这块的时候遇到一点问题,是一个课后习题.大概是这样的:使用动态代理来编写一个系统以实现事务,其中,代理在被代理的调用执行成功时(不抛出任何异常)执行提交,而在其执行失败时执行回滚.你的提交和回滚都针对一个外部的文本文件,该文件不再Java异常的控制范围内.你必须注意操作的原子性.感觉这道题很有意义,但是由于是新手,自己在读题和解题的时候都比较困惑,所以希望各位达人能帮忙解答一下.最好有个完整的例子.小弟仅有的45分全部奉上! 解决方

java-求大神推荐几本关于Java编程思想的书

问题描述 求大神推荐几本关于Java编程思想的书 有时结果总是超乎自己的想象,可能是自己的思维模式跟不上计算机的算法 解决方案 建议你还是多做些联系,参与一些项目练练实际经验吧,看编程思想的书时需要一定基础的. 解决方案二: thinking in java 解决方案三: effective java

关于java问题-java编程思想的23种设计模式有哪些

问题描述 java编程思想的23种设计模式有哪些 例如,单例设计模式其它就不知道了?可以的话在给个例子描述一下 解决方案 根据caozhy的提示,再整理一下 1. Memento(备忘录) 2. Chain of Responsibility(责任链) 3. Observer(观察者 4. Command(命令模式) 5. State(状态模式) 6. Interpreter(解释器 7. Strategy(策略模式) 8. Iterator(迭代子 9. Template Method(模板方

关于继承内部类——java编程思想示例程序分析

编程|程序|继承|示例 关于继承内部类--java编程思想示例程序分析:class Egg2 { protected class Yolk { public Yolk() { System.out.println("Egg2.Yolk()"); } public void f() { System.out.println("Egg2.Yolk.f()"); } } private Yolk y = new Yolk(); public Egg2() { System

java-关于JAVA编程思想中synchronized和ReentrantLock

问题描述 关于JAVA编程思想中synchronized和ReentrantLock 在学习JAVA编程思想并发一章时,关于synchronized和ReentrantLock的例子运行 结果与书中不一致.代码如下: package thinking.in.java.chapter21; class Pair { private int x,y; public Pair(int x, int y) { this.x = x; this.y = y; } public Pair() { this(