1.java的程序结构:类存于源文件(.java)里面,方法存于类中,语句存于方法中。
2.每个java程序最少都会有一个类以及一个main(),每个应用程序只有一个main()函数。
3.在main中可做:做某件事(声明,设定,调用方法等普通语句)、反复做某件事(for与while的循环)、在适当条件下做某件事(if、else的条件分支测试)
4.无论你的程序有多大(也可以说不管有多少个类),一定都会有一个main()来作为程序的起点(只有一个main方法)。
5.类跟对象的关系: 类不是对象,却是用来创建对象的模型,也可以说类是对象的蓝图。
6. 对象是已知的事物,对象会执行的动作(工作)。
7. 对象本身已知的事物被称为实例变量(instance variable)俗称属性(对象的状态)。 对象可以执行的动作称为方法(methods)(对象的行为)。
8. 创建对象:①编写类(实例变量、方法)②编写测试用的类 ③在测试用的类中建立对象并存取对象的变量和方法(建立对象、存取该对象的变量)
9. java的程序在执行期是一组会互相交谈的对象。(真正的java程序只会让对象与对象交互[交互:相互调用方法])
10.main方法的用途:测试真正的类、启动java应用程序。
11.面向对象设计扩展功能不需改动之前已经测试好的程序代码。
12.所有的java程序都定义在类中。
13.类如同蓝图描述该类型的对象要如何创建。
14.对象自治。
15.类可以继承自较为抽象的父类。
16.创建类时,可能同时会需要创建独立,测试用的类。
17.变量根据作用域分为:全局变量,局部变量。变量有两种:primitive主数据类型和引用。primitive主数据类型用来保存基本类型的值(boolean char byte short int long float double)对象引用保存的是对象的引用。
18.编译器不允许将大杯的内容放到小杯中,但是反过来可以。
19.对象处理:事实上没有对象变量的东西存在,只有引用(reference)到对象的变量、对象引用变量保存的是存取对象的方法,它并不是对象的容器,而是类似指向对象的指针(地址)——在java中,我们不会也不该知道引用变量中实际装载的是什么,用来代表单一的对象,只有虚拟机才会知道如何使用引来取得该对象。
20.对象(object)的声明,创建与赋值有3个步骤:声明一个引用变量、创建对象、连接对象和引用。
21.引用变量只会保存引用,而不是对象本身。
22.没有引用到任何对象的引用变量的值为null值。
23.一旦数组被声明出来,你就只能装入所声明类型的元素。
24.变量的声明必须有类型和名称。
25.primitive主数据类型变量值是该值的字节所表示的。
26.引用变量的值代表位于堆之对象的存取方法。
27.当父类被final修饰的时候,它无法当爹,它是无法被继承的(为什么要用这个来修饰类,为了保持类的严谨性,避免被篡改,使用的场景:String类就是最好的例子)。当父类的方法被final修饰的时候,它是可以被子类继承使用,但是请注意你是无法重写(Override) 该方法。
28.所有的对象都具有相同的大小,而不管它实际上所引用的对象的大小。
29.状态影响行为,行为影响状态。
30.同一类型的每个对象能够有不同的方法行为。
31.任一类的每个实例都带有相同的方法,但是方法可以根据实例变量的值来表现不同的行为。
32.方法会运用形参,调用的一方会传入实参。
33.实参是传给方法的值,当它传入方法后就成了形参。参数跟局部变量是一样的,它有类型与名称可以在方法内运用。
34.如果某个方法需要参数,你就的传东西给它,那个东西的是适当的值。
35.方法必须声明返回类型,使用void类型代表方法不返回任何东西。(方法可以有返回值。每个方法都声明返回的类型,把方法设成返回void类型,这代表并没有返回任何东西。)
36.如果一个方法有返回值,必须返回所声明类型的值。
37.方法可有多个参数,声明时用逗号隔开,传入的时候也用逗号隔开。(如果方法有参数,一定要以正确数量类型和顺序来传递参数)
38.java通过值传递的(通过拷贝传递)
39.对象所知者是实例变量,所为者是方法。
40.传入和传出方法的值类型可以隐含地放大或是明确地缩小。
41.如果方法声明了非void的返回类型,那就一定要返回与声明类型相同的值。
42.Getter:返回实例变量的值;Setter:取用一个参数来设定实例变量的值。
43.封装:将实例变量标记为私有的,并提供公有的getter与setter来控制存取动作。
44.任何有值可以被运用到的地方,都可用来调用方法的方式来取得该类型的值。
45.实例变量永远都会有默认值,如果你没有明确地赋值给实例变量,或没有调用setter,实例变量还是会有值。数字的primitive(char)为0,boolean为false,对象引用为null(null没有操作对象的远程控制,它是引用不是对象)
46.实例变量(成员变量)和局部变量的区别:实例变量是声明在类中不是方法中。局部变量是声明在方法中。局部变量在使用前必须初始化。(局部变量没有默认值,如果在变量被初始化前就要使用的话,编译器会显示错误)
47.“==”是用来比对primitive主数据类型或判断两个引用是否引用同一个变量,equals()判断两个对象是否在意义上相同。
48.伪码:专注于逻辑而不需要顾虑的程序语法(实例变量的声明,方法的声明,方法的逻辑)。测试码:测试用的程序代码。真实码:java代码。
49.java程序从高层的设计开始:
①知道要执行多少次,应该用for循环而不是while。
②Interger.ParseInt()来取得string的整数值。
③Interger.ParseInt()只会在所给的string为数字时有作用。
④使用break跳出循环。
50.for和while的差别:for知道要执行多少次;while只有Boolean测试,没有内建初始化或重复表达式,适合用在不知道要循环几次的循环上,需要计数器
51.ArrayList:①创建②加入元素③再加入元素④查询大小⑤查询特定元素⑥查询特定元素位置⑦判断集合是否为空⑧删除元素
52.ArrayList和数组的比较:

ArrayList

一般数组

ArrayList myList=new ArrayList();

String[] myList=new String[2];

String a=new String(“whoohoo”);

String a=new String(“whoohoo”)

myList.add(a);

MyList[0]=a

String b=new String(“Frog”);

String b=new String(“Frog”);

myList.add(b) ;

myList[1] =b;

int theSize=myList.size();

int thSize=myList.length;

Object o=myList.get(1);

String 0=myList[1];

myList.remove(1);

myList[1]=null;

boolean isIn=myList.contains(b);

boolean isIn=false; for(String item:myList){ if(b.equals(item)){ isIn=true; break;}}

53.&&(与)、||(或):左右两边都为true,则表达式才为true。若左边为false,则右边不需计算右边,表达式要返回false。(短运算符)
&、|:左右两边都需要计算表达式为false。(长运算符)
54.可以用参数类型来声明数组内容的类型。例ArrayList会声明带有Button类型的ArrayList。
55.ArrayList只能携带对象而不是primitive主数据类型包装成object以存放在ArrayList中。
56.类会用包来组织。
57.类有完整的名称,由包的名称与类的名称组成的。ArrayList—java.util.ArrayList。
58.除了java.lang之外,使用到其他包的类都需要指定全名。
59.可在原始程序代码的最开始部分下,import指令来说明所使用到的包。

60.被继承的类称为父类或者超类。有继承而得到的类为子类。子类自动获得父类的功能(属性和行为)。
61.覆盖是由子类重新定义继承下来的方法以改变或延伸此方法的行为。
62.类的成员就是实例变量和方法。
63.父类:比较抽象;子类:比较具体。
64.构造方法是不能被继承的,但子类可以调用父类的构造方法。
65.不显式调用父类有构造方法,必然调用父类的无参的构造方法。
66.如果父类中没有无参构造方法,而子类又没有用super()调用父类的构造方法,则会报错。
67.覆盖和重载都是多态的体现。
68.《覆盖》父类变量访问子类的成员;格式:父类 对象=new 子类() 对象.子类方法
69.调用对象引用的方法时,会调用到与该对象类型最接近(层次树的最下方)的方法。
70.继承中,public类型的成员会被继承,则private类型的成员不会被继承。private<default<protect<public 左边最受限,越往右边限制程度越小。
71.如果类Y是继承类X,且类Y是类Z的父类,则类Z继承类A。
72.继承下来的方法,可以被覆盖掉,但实例变量不能被覆盖掉。
73.当某个方法在子类中被覆盖过,调用这个方法时会调用到覆盖过的版本(新的方法).
74.多态下,引用与对象可以是不同的类型。
75.多态时,引用类型可以是实际对象类型的父类。
76.子类的对象是父类的对象,父类的对象不一定是子类的对象。
77.

全局变量

局部变量

描述对象有什么(在类中定义)类中所有的方法都可用 .

临时保存数据(在类的方法中定义)只能在当前方法中使用

整个类中可用

该方法内可用

有初始值

无初始值

在一个类中不允许声明同名变量

在一个方法中不允许声明同名变量


就近原则

覆盖:

protect void show(){
 System.out.println() 1 父类
 }
 protect void show(){
 System.out.println() 2 子类
 }


重载:

public static void getSum(int a, int b){}
 public double getSum(double a,double b){}

覆盖(重写)

重载

①用于继承 ②在子类中 ③定义名称,参数个数,类型与父类完全相同

①同一个类 ②多个方法的方法名字相同 ③参数列表不同,个数不同 ④比较有扩展性

79.构造方法:public 类名称(参数类型 参数名称){
方法体
}
1.用new 来创建对象(调用)。
2.不写返回值类型,连void都不写。
3.不能return一个具体的返回值。
80.方法的重载:
1).返回类型可以不同.
2).不能只改变返回类型。
3).可以改变存取权限。
例:

public int addNums(int a,int b){
 return a+b;
 }
 public double addNums(double a,double b){
 return a+b;
 }