Jav基础学习
CH3 认识变量(primitive主数据类型和引用)
1.变量有两种:primitive主数据类型和对象引用。primitive主数据类型用来保存基本类型的值,包括整数、布尔和浮点数等,其变量值就是所代表的值;对象则引用保存的是对象的引用,其变量值是取得特定对象的位表示法。
2.必须声明变量的类型及名称。

3.变量命名的方法:

4.对象该如何处理:(对象引用 也只是个变量值)
5.对象的声明、创建与赋值有3个步骤:
6.若要讨论内存分配问题时,引用变量最需要关心的是需要建立多少个对象和引用以及对象的实际大小。
对任意同一个Java虚拟机来说,所有的对象引用都具有相同的大小,而不管它实际上所引用的对象大小。
7.数组永远是对象!无论被声明来承载的是primitive主数据类型的或对象引用,数组对象可以有primitive主数据类型的元素,但数组本身绝不是primitive主数据类型。
8.创建Dog数组:
9.要点总结:
CH4 对象的行为(方法操作实例变量)
1.对象有状态和行为两种属性,分别由实例变量与方法来表示。状态影响行为,行为影响状态;行为会依据状态来决定,换句话说方法会使用到实例变量的值。
2.

类所描述的是对象知道什么与执行什么。
任一类的每个实例都带有相同的方法,但是方法可以根据实例变量的值来表现不同的行为。
3.可以传值给方法。方法会运用形参,调用的一方会传入实参。
目前我们都是把方法设成返回void类型(无返回),但是方法可以有返回值。若将一方法声明有返回值,就必须返回所声明类型的值。
可以向方法中传入一个以上的参数。方法可以有多个参数。在声明的时候要用逗号分开,传入的时候也是用逗号分开。若方法有参数,一定要以正确数量、类型和顺序来传递参数。
4.Java是通过值传递的,也就是说通过拷贝传递;此值是变量所携带的值,引用对象的变量所携带的是远程控制而不是对象本身,若对方法传入参数,实际上传入的是远程控制的拷贝;方法无法改变调用方所传入的参数。
5.方法只能声明单一返回值,若需要返回3个int值,就把返回类型说明为int的数组,将值装进数组中来返回。
6.要点总结:
7.封装:将你的实例变量标记为私有的并且提供共有的setter与getter来控制存取动作,将实例变量标记为private, 将getter和setter标记为public。
8.声明与初始化实例变量:
无需初始实例变量,因为它们会有默认值。数字的primitive(包括char)的预设为0,boolean的预设为false,而对象引用则为null。(注意:null代表没有操作对象的远程控制,它是个引用而不是对象)
9.实际变量与局部变量区别:
实际变量是声明在类内而不是在方法中;局部变量是声明在方法中的;局部变量在使用前必须初始化。
局部变量没有默认值。若在变量被初始前就使用,编译器会显示错误。
10.变量的比较:
11.
CH5 超强力方法(编写程序)
1.方法论:
2.要点总结:

3.加强版的for循环:(能够很容易地逐个运行数组或其他集合的元素)
4.转换primitive主数据类型
将String转换成int:
CH6 使用Java函数库(认识Java的API)
Java内置有数百个类。
1.Java函数库中的一个类:ArrayList
2.ArrayList与数组的比较:

3.超强布尔表达式
“与”和“或”运算符(&&,||)
“不等于”运算符(!=和!)
短运算符(&&,||)
长运算符(&,|):通常用来作位的运算
4.在Java的API中,类是被包装在包中。要使用API中的类,你必须知道它被放在哪个包中。
注意:在程序的某个地方你必须要指明函数库的完整名称,也就是包的名称加上类的名称。
5.要点总结:
6.如何查询API?库中有哪些类?找到类之后,你怎么知道它是做什么的?
法一:查阅参考书。法二:查阅HTLM API文档。
CH7 对象村的优质生活(继承与多态)
1.用继承来防止子类中出现重复的程序代码,Java虚拟机会从继承关系的树形图最下方开始搜索方法,Java虚拟机就是有办法找到正确的最接近该类型的版本。
2.要点总结:
3.将整个类标识成final表示没有任何的方法可以被覆盖。
4设计继承的意义:A.避免了重复的程序代码;B.定义出共同的协议,继承让你可以确保某个父型之下的所有类型都会有父型所持有的全部方法。
5.多态下,引用与对象可以是不同的类型。运用多态时,引用类型可以是实际对象类型的父类。
参数和返回类型也可以是多态。
多态的好处:所有子型都会有那些抽象的方法。
6.当要覆盖父类的方法时,就得同意要履约,方法就是合约的标志。A.参数必须要一样,且返回类型必须要兼容;子类对象得保证能够执行父类得一切;B.不能降低方法的存取权限;存取权限必须相同,或者更为开放。
7.方法的重载:重载版的方法只是刚好有相同的名字的不同方法,它与继承或多态无关。重载可以有同一方法的多个不同参数版本以方便调用,它不是用来满足定义在父类的多态合约,所以重载的方法比较有扩展性。
重载的方法与覆盖方法不一样。A.返回类型可以不同;B.不能只改变返回类型;C.可以更改存取权限。
重载的合法范例:
CH8 深入多态(接口与抽象类)
1.继承只是开始,要使用多态,还需要接口,接口是多态和Java的重点。
2.当设计好继承结构时,必须要决定哪些类是抽象的哪些类是具体的;具体的类是可以被初始化为对象的;抽象的类不能创建任何类型的实例不被初始化,设计抽象的类—在类的声明前面加上抽象类关键词abstract。
3.抽象类除了被继承过之外,是没有用途、没有值、没有目的。不是抽象的类就被称为具体类。
4.抽象的方法:除了类之外,也可将方法标记为abstract,抽象的方法没有实体。抽象的类代表此类必须要被extend过,抽象的方法代表此方法一定要被覆盖过。
如果声明出一个抽象的方法,就必须将类也标记为抽象的。不能在非抽象类中有抽象方法。
抽象方法的意义:就算无法实现出方法的内容,但还是可以定义出一组子型共同的协议。
5.Object的这个类是所有类的源头,它是所有类的父类,它不是抽象类。没有直接继承过其他类的类会是隐含的继承对象。
Object类主要目的:A.作为多态让方法可以应付多种类型的机制;B.提供Java在执行期对任何对象都有需要的方法的实现程序代码(让所有的类都会继承到 )。
6.使用Object类型的多态引用时是会付出代价的,任何从ArrayList<Object>取出的东西都会被当作Object类型的引用而不管它原来是什么。把所有东西都以多态来当作是Object会让对象看起来失去了真正的本质。
当一个对象被声明为Object类型的对象所引用时,它无法在赋值给原来类型的变量。
7.编译器是根据引用类型来判断有哪些method可以调用,而不是根据Object确定的类型。
8.对象会带有从父类继承下来的所有东西。
9.
10.Java注重引用变量的类型。只能在引用变量的类确实有该方法才能调用它。把类的公有方法当作是合约的内容,合约是你对其他程序的承诺协议。
11.接口可以用来解决多重继承问题却又不会产生致命方块这种问题。
接口解决致命方块的办法:把全部的方法设为抽象的,所以任何类都必须实现这些方法。
12.接口的定义及实现:
注意:A.接口的方法一定是抽象的,所以必须以分号结束,同时他们没有内容。B.implements后面跟着接口的名称。
13.为什么要用接口:接口有无比适应性,以接口取代具体的子类或抽象的父类作为参数或返回类型,就可以传入任何有实现该接口的东西。使用接口可以继承超过一个以上的来源,可以为不同需求组合出不同的继承层次。
14.不同继承树的类也可以实现相同的接口,用接口来作为多态类型时,对象就可以来自任何地方了。类可以实现多个接口。
15.要点总结:

浙公网安备 33010602011771号