Java编程思想
1、 面向对象(object-orented Programming,oop)便是这种以计算机作为
达媒体的大趋势中的组成部分;
2、 所有编程语言都提供抽象机制;
3、 程序可以添加新类型的对象使自身适用于某特定问
。
4、 OOP允许根据问题来描述问题,而不是根据运行解决
的计算机来描述问题。
5、 万物皆为对象(你可以抽取待求解问题的任何构件{狗、建筑物、服务器等}),将其表示为程序中的对象。
6、 程序是对象的集合,它们通过发送消息来告诉彼此所要做的。
7、 每个对象都有自己的由其他对象所构成的存储。
8、 每个对象都拥有其类型。
9、 某一特定类型的所有对象都可以接受同样信息。
10、 Java标识符的选取要“见名知意”且不能与Java关键字同名。
11、 关键字:Java中用于特定含义,用作专门用途的字符串,且都是小写字母。
12、 Java常量:用字符串表示,区分不同的数据类型。
13、 final:值不能再改变的变量
14、 Java变量:是程序中的最基本的存储单元,其要素包括变量名、变量类型和作用域。
15、 Java程序中:每一个变量都属于特殊的数据类型,在使用之前必须进行声明,声明格式:type varName[=value][{,varName[=value]}]
16、 从本质上讲变量就是内存中的一小块区域,使用变量名来访问这个区域,因此,变量在使用之前必须进行申请(声明)内存中的空间,然后必须进行赋值(填充内容),才能使用。
17、 没有对变量赋值时,变量的值是默认的值;有些也是不一定的。
18、 首先在硬盘上有一个小程序文件存在,然后是运行,将自己装载到内存中去(load内存中),然后操作系统会找到你自己的代码的main方法,从main方法开始执行,然后是执行内存的管理,分成4部分, code segment(代码区:存放代码)、date segment(静态变量和字符串常量)、stack(栈:存放局部变量)、heap(堆:申请内存用的,new出来的东西都在堆里)、
19、 堆内存是动态分配内存的,所以在运行的时候才new出来对象;也只有这个时候才知道运行期间这个对象需要多大的内存;
20、 变量的分类:局部变量(方法或语句块内部定义的变量,必须进行赋值,否则编译器会有出错信息);成员变量(方法外部、类的内部定义的变量 此时你可以不给成员变量赋值,系统会进行默认赋值 类体之中有用);数据类型:基本数据类型变量;引用数据类型变量。
21、 boolean类型适于逻辑运算,一种用于
控制;boolean只允许取值true/false;
22、 除基本变量以外的都是引用变量;基础类型就是一块内存,引用的是占两块内存;
23、 类是静态变量放在代码区;
24、 Unicode是全球语言统一编码;
25、 定义好了一个类后需要new这个类的对象才能用;
26、 Java的整型变量默认为int型;
27、 Java的浮点类型默认为double类型;要声明数字为float类型必须在数字后加f或F;在浮点数是有误差的,要看精度而定。Flaot小数点后的7位;double后的是15位;
28、 容量小的数据类型自动转换为容量大的数据类型(容量大小表示的是数的大小):byte,short,char->int->long->float->double 其中byte,short,char不会相互转换,它们的运算首先会转换成int类型;容量大的数据转换为容量小的数据时,要加上强制转换符,但可能造成精度降低或溢出
29、 当数据混合运算时,计算机会首先将数据转换为容量大的数据类型,然后进行运算
30、 Byte最多表示127的int类型的整数,不能超出。
31、 程序格式:(1)大括号对齐;(2)遇到{缩进,Tab/Shift+Tab;(3)程序块之间加空行;(4)并排语句之间加空格;(5)运算符两侧加空格;一、有特点条件;(6){前有空格;(7)成对编程;
32、 +可以是算术运算符也是字符串的连接符。
33、 “+”运算符两侧只要有一个是字符串类型,系统会自动将另一个数据类型转换为字符串类型然后进行连接。
34、 int c=12; System.out.println(“c=”+c);在打印时无论是什么类型,首先转换成字符串类型进行连接;
35、 表达式:一个符合语法规则的运算符和操作符的序列
36、 只有for里面的不需要空格
37、 break语句用于终止某个语句块的执行,用在循环语句体中,可以强行推出循环;continue语句用于终止某次循环体,执行下一次没有执行的循环体;
38、 java中的switch()括号中只能识别int的值;括号中可以是char、byte、short可以转化的类型
39、 方法必须首先定义,然后才能调用;
40、 return语句是终止方法同时指定返回一个数据类型;
41、 if、switch语句分支;for、do、、、while/while循环语句
42、 面向对象的
思想:从现实世界中客观存在的事物出发来构造软件系统,并在系统的构造中运用人类的思维方式。
43、 对象用计算机语言对问题域中事物的描述,对象通过属性和方法分别对应事物所具有的静态属性和动态属性。
44、 类:是用于描述同一类型的对象的抽象的概念,类中定义了这一对象所因具有的静态和动态属性;
45、 类:可以看成某一类对象的模版,对象可以看成类的一个具体的实例。
46、 静态属性:就是应该有什么东西;
47、 动态属性:这个对象能干什么;
48、 一个类的方法里面是另一个类的某一个对象,我的方法的参数是你这个类的对象;
49、 每一个对象都有自己的属性,属性的值是和其他的对象的是不同的,这就可以区别不同的对象了;
50、 XX是一种XX,这种叫继承关系;
51、 一个类完全可以从多个不同的类继承;
52、 谁谁是谁的一部分,这就是一种聚合的关系;分的更加细致的话呢,就是叫聚集和组合(就是我是你的必不可少的一部分);
53、 实现关系:就是不同的对象有自己的实现的方法(父类和子类之间)
54、 面向对象:(1)有哪些个类和哪些个对象;(2)每种类和每种对象应该具有哪些个属性和方法;(3)类个类之间具备了什么样的关系;
55、 对象是java程序的核心,在java中“万事万物皆为对象”,首先定义类才能有对象、首先定义方法才能调用;
56、 对象:可以看成静态属性(成员变量)和动态属性(方法)的封装体
57、 类是用来创造同一类型的对象的“模版”,在一个类中定义了该类中对象的所因具有的成员变量和方法;
58、 J2SDK提供了很多类给程序员使用,程序员也可以自己来定义类
59、 成员变量的书写:首先是修饰符,然后是变量的类型,再是变量的名字;
60、 成员变量可以初始化如果没有初始化那么Java会自动默认的给其一个初始化的值;
61、 成员变量的作用域是整个类体;
62、 Java语言中除基本类型以外的变量类型都称之为引用类型;Java中的对象是通过引用对其进行操作的;
63、 对象是new出来的,new出类的某一个对象;位于堆内存,类的每个成员变量在不同的对象中都会有不同的值(除了静态变量)而方法只有一份,执行的时候才占用内存;
64、 合适的方法出现在合适的类里;
65、 构造方法和类的名字完全一样,没有返回值,和new一起使用,new是new出来一个新对象,new调用的是构造方法;
66、 构建一个新对象时用的方法,叫构造方法;
67、 Person(int_id,int_age){}构造函数;写下横线是为了与我们的成员变量区别开;
68、 类名的首字母大写;变量名和方法名的首字母小写;运用驼峰(后面的单词的首字母都应该大写)标识;
69、 基础类型就占一块内存,引用变量占用两块内存;
70、 方法调用完毕之后为这个方法分配的所有的局部变量自动消失
71、 没有任何一个引用指向它的时候垃圾回收器就可以收集了;
72、 方法重载是指一个类中可以定义相同的名字,但参数不同(参数的个数或参数的类型)的多个方法;
73、 构造方法也能构成重载;
74、 对象的创建:(1)必须使用new关键字创建对象;(2)使用对象引用.成员变量或来引用对象的成员变量;(3)使用对象引用.方法(参数列表)来调用对象的方法;(4)同一类的每个对象有不同的成员变量存储空间;(5)同一类的每个对象共享类的方法(非静态方法是针对每个对象进行调用)
75、 方法的名字,方法的参数,方法的返回值;
76、 在类的方法定义中使用的this关键字代表使用该方法的引用;this指向这个对象自己;必须指出当前使用方法的对象是谁时要使用this关键字;有时使用this可以处理方法中成员变量和方法重名的情况(就近声明的原则);this可以看成一个变量,它的值是当前对象的引用;
77、 “引用”加“.”肯定是成员变量;
78、 用static声明的成员变量为静态成员变量,它为该类的公用变量,在第一次使用时初始化,对于该类的所有变量来说,static变量只有一份;
79、 用static变量声明的方法为静态方法,在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可以访问非static成员;
80、 静态的方法不能够去访问非静态的成员;非静态成员专属于某一个对象,想访问某一个非静态成员必须先new一个对象出来;
81、 package:为便于解决大型软件系统中数目众多的类,解决命名冲突的问题,Java引入了包(package)机制;提供类的多重类命名空间。
82、 package作为Java源程序的第一条语句,指明该文件中定义的类所在的包;
83、 Java编译器把包对应与文件系统的目录管理,Package语句中,用‘.’来指明包的层次;
84、 编译的类必须位于正确的目录(和包的层次完全一致)下面;//我可以直接把文件名命名成我要访问的类的名字吗?
85、 Import语句可以引用包里的类;否则必须在要引用的类前加上所在的文件的地址;
86、 另外的类如果想要引用的话:(1)把类的名字写全了;引用——*或具体类名;访问同一个包中的类不需要引用;
87、 必须Class文件的最上层包的父目录位于classpath下
88、 在执行的时候也要把包名写全了;执行一个类需要写全包名;
89、 J2SDK主要的包介绍介绍:Java.lang(这个里面的类里是不需要引用的,可以直接使用)—包含Java语言的核心类,如String,Math,Integer,System,Thread;还有Java.awt-包含了抽象窗口的工具集的多个类,这些类被用来构建和管理运用程序的图形用户界面(GUI);还有Java.apple—包含apple运行所需要的一些类;另外还有Java.net—包含执行与网络相关的操作的类;Java.io—包含能提供多种输入/输出功能的类;Java.util—包含一些实用工具类,如定义系统特性、使用与日期日历的函数;
90、 炸包:在命令提示符里写jar(但敲一个jar)然后是jar-cvf后面写上我们要生成的那个炸包的名字然后是指定把哪些东西打包到这个jar里面然后是*.*(把当前这个目录下面所有的子目录和里面的东西文件全部包到我们的jar里面)然后回车;
91、 类的继承:Java中使用extends关键字实现类的继承机制;通过继承,子类自动拥有了基类(父类)的所有成员(成员变量和方法)。Java只保持单继承,不允许多继承;一个子类只能有一个基类(父类),而一个基类却可以派生出多个子类;
92、 访问控制:
修饰符
类内部
同一个包
子类
任何地方
Private(个人的、私人的)在自己的方法中访问
Yes
default(同一个包下)
Yes
Yes
Protected(受保护的)
Yes
Yes
Yes
public
yes
Yes
Yes
Yes
Public、Protected、private置于类的定义前,用来限定其他对象对该类对象成员的访问权限。
93、 对于Class的访问权限修饰只用public和default;
94、 public可以任何地方被访问
95、 default类只可以被同一个包内部的类访问;
96、 可以修饰成员变量和Class类
97、 方法的重写:在子类中可以根据需要对从基类继承来的方法进行重写;重写方法必须和被重写的方法具有相同的方法名称、参数列表和返回类型;重写方法不能使用比被重写方法更严格的访问权限;
98、 Super(当前对象里边的父对象)关键字:在Java类中使用super来引用基类的成份;
99、 继承之中的构造方法:子类的构造过程中必须调用其父类(基类)的构造方法;子类可以在自己的构造方法中使用super(参数列表)调用基类的构造方法;使用this(参数列表)调用自己这个类的另外的构造方法;如果调用了super(参数列表)必须写在子类构造方法的第一行;如果子类的构造方法中没有显示地调用父类的构造方法(没写super),则系统默认调用父类无参数的构造方法;如果子类既没有显示调用基类的构造方法,而基类也没有无参的构造方法,则编译出错;
100、 Object这个类是Java类的根基类;如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类;
101、 网站的首页:Index.xxxx
102、 多态:动态绑定是指“在执行期间判断所引用对象的实际类型,根据其实际的类型调用其实际的方法”
103、 可扩充性:要有继承;要有重写;父类引用指向子类对象;
104、 用abstract关键字来修饰一个类的时候,这个类叫抽象类;
105、 用abstract关键字来修饰一个方法的时候,这个方法叫抽象方法;
106、 抽象类不能被实例化;
107、 抽象方法只需声明不需实现;
108、 含有抽象方法的类必须被声明成抽象类,抽象类必须被继承,抽象方法必须被重写;
109、 类体中可以包含两项:成员变量和方法;
110、 Static静态变量:类名+.就表示是对静态变量的访问;在类的声明的Static成员变量,为该类的公用变量;属于整个类的;任何对象都能访问这个静态成员变量;
111、 jar-cvf(c-创建新的文档;v-生成详细输出到标准输出上;f-指定文档存档名)后面写我们要生成的炸包的名字;后面要指定把那些个东西放到里面;*.*(把当前目录下边所有子目录连含里边的东西和文件全部打包到我们的jar文件里面)
112、 两个变量比较的是引用;提供一个实质就是行的,比较两个对象的实质用equals来比较;
113、 一个基类的引用类型变量可以“指向”其子类对象;一个基类的引用不可以访问其子类对象新增加的成员(属性和方法);可以使用引用变量instanceof(实际是什么)类名来判断该引用型变量所“指向”的对象是否属于该类和该类的子类;子类对象可以作为基类对象来使用称为向上转型;反之是向下转型;
114、 Public String toString() 返回值是String类型,描述当前对象的信息;在进行String与其他类型数据连接操作时,将自动调用该对象类的toString()方法;可以根据需要在用户自定义类型中重写toString()方法;
115、 hash coad独一无二的代表了一个对象,通过hash coad可以找到这个位置;
116、 对象转型对可扩展性带来的好处;
117、 动态绑定是执行期间而不是编译期间,判断所引用对象的实际类型,根据实际类型来调用其相应的方法;
118、 多态:三个条件(1)要有继承;(2)要有重写;(3)父类引用指向子类对象;
119、 多态对于系统可扩展性的重要性;
120、 abstract关键字来修饰一个类的时候就叫抽象类;用abstract关键字类修饰一个方法的时候就叫抽象方法;
121、 含有抽象方法的类必须被抽象成抽象类;抽象类必须被继承,抽象方法必须被重写;抽象类不能被实例化;抽象方法只需声明不需实现;
122、 final的变量的值不能够被改变:(final的成员变量)(final局部变量(形参));final的方法不能被重写;final的类不能被继承;
123、 接口:多个无关的类可以实现同一个接口;一个类可以实现多个无关的接口;与继承关系类似,接口与实现类之间存在多态性;
124、 接口:接口(interface)是抽象方法和常量值的定义的集合;从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现;
125、 接口可以多重实现;接口中声明的属性默认为public static final的也只能是public static final的;接口中只能定义抽象方法,而且这些方法默认为public 也只能是Public;接口可以继承其他的接口,并添加新的属性和抽象方法;
126、 得用implements代替extends,实现接口;
127、 实现多个接口的时候必须用逗号隔开;
128、 每一个接口暴露了我们对象的一部分方法;
129、 异常:Java异常是Java提供的用于处理程序中一种处理机制;所谓错误是指程序运行过程中发生的一些异常事件;设计良好的程序应该在异常发生时提供处理这些错误的方法,使得程序不会因为异常的发生被阻断或产生不可预见的结果;Java执行的过程中如出现一些异常事件,可以生成一种异常类对象,该异常对象封装了异常事件的信息并将被提交给Java运行是系统,这个过程叫抛出throw;当Java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程叫捕获(catch);
130、 能够处理的异常(Exception)异常,无法处理的异常(Error)异常,运行时出现的异常(RuntimeException)异常;
131、 try代码段后面可以跟一个或多个catch代码段,每个catch代码段声明能处理一种特定类型的异常并提供处理的方法;当异常发生时,程序会终止当前的流程,根据获取异常的类型去执行相应的catch代码段;finally段的代码无论是否发生异常都有执行;
132、 finally语句为异常处理提供了一个出口,使得在控制流程转到其他的部分以前,能够对程序的状态做统一的管理;可以进行清除工作;
133、 Java的例外处理机制使得例外事件,沿着被调用的顺序往前寻找,只要找到符合该例外种类的例外处理程序;
134、 throws Exception 抛出异常;
135、 通过继承Java.Lang.Exception类声明自己的异常类,在方法适当的位置生成自定义异常的实例,并用throws语句抛出,在方法的声明部分用throws语句声明该方法可能抛出的异常;
136、 重写方法需要抛出与原方法所抛出异常类型一致异常或不抛出异常;
137、 在Java中不抛出异常可以重写方法,抛出一样的也行;
138、 Java语言中不能写出数组的长度;Java中使用关键字New 创建数组对象,数组名 = new 数组元素的类型 [数组元素的个数]
139、 数组的初始化:静态初始化(定义数组的同时就为数组元素分配空间并赋值);动态初始化(数组定义与为数组元素分配空间和赋值的操作分开进行);数组元素默认初始化,数组是引用类型,它的元素相当于成员变量,因此数组分配空间后,每个元素也被按照成员变量的规则隐式初始化;
140、 常用类:字符串类相关类(String(不可变的) stringBuffer),基本数据类型包装类,Math类,File类,枚举类;
141、 重载:静态重载方法:public static String valueOf()可以将基本类型数据转化成字符串;方法 public String[] split(String regex)可以将一个字符串按照指定的分隔符分隔,返回分隔后的字符串数组;
142、 StringBuffer可变的字符序列;StringBuffer()创建一个空的“”StringBuffer对象;StringBuffer(String str)包含与String对象str相同的字符;
143、 Public StringBuffer append(、、、)可以为该StringBuffer对象添加字符序列,返回添加后的StringBuffer对象引用;Public StringBuffer insert(int offset,double d)把double类型的值转成字符串之后再传进去,可以为该StringBuffer对象在指定位置插入字符串序列,返回修改后的该StringBuffer引用;public StringBuffer delete(int start, in end)可以删除从start开始的到end-1为止的一段字符串序列,返回修改后的该StringBuffer引用;Public StringBuffer reverse()将字符序列逆序,返回修改后的该StringBuffer引用;
144、 基本数据类型的包装类:包装类(Integer Double)这些类封装了一个相应的基本数据类型数值,并为其提供了一系列操作;
145、 经常的打印一些东西出来对你调试程序非常有帮助;
146、 File类的创建Public File(String pathname)以pathname为路径创建File对象,如果pathname相对路径,则默认的当前路径在系统属性user.dir中存储;Public File(String Parent,String child)以parent为父路径,以child为子路径创建File对象;
147、 File的静态属性String separator存储了当前系统的路径分隔符;
148、 Enum:只能够取特定值中的一个;使用enum可以定义一个新的类型;再拿这个类型再来定义变量;可以用它预先定义好的这些个值之一;
149、 容器类对象在调用remove,contains等方法时比较对象是否相等;这会涉及到equals方法和hashCode方法;对于自定义的类型,需要重写equals和hashCode方法以实现自定义的对象相等规则;
150、 容器:你可以向里面添加别的东西;容器(Set、List、Map、数组)
151、 Set(装元素不能重复,没有顺序);List(装元素可以重复,没有顺序);Map(一对一对的往里装)
152、 所有实现了collection接口的容器类都有一个Iterator方法用以返回一个实现了Iterator接口的对象;Iterator对象叫迭代,用以方便的实现对容器内元素的遍历操作;
153、 Public int CompareTo( object obj )该方法:返回0 表示this ==obj ;返回1表示 this >obj;返回-1表示this