Core Java笔记MS Word版.docx
- 文档编号:16424053
- 上传时间:2023-07-13
- 格式:DOCX
- 页数:39
- 大小:86.42KB
Core Java笔记MS Word版.docx
《Core Java笔记MS Word版.docx》由会员分享,可在线阅读,更多相关《Core Java笔记MS Word版.docx(39页珍藏版)》请在冰点文库上搜索。
CoreJava笔记MSWord版
Chapter01
GettingStarted
一、核心概念
1.什么叫类?
类就是某一种事物的一般性的集合体,是相同或相似的各个事物共同特性的一种抽象。
2.什么叫对象?
在面向对象概念中,对象(Object)是类的实例(instance)。
对象与类的关系就像变量与数据类型的关系一样。
3.类的核心特性有哪些?
类具有封装性、继承性和多态性。
封装性:
类的封装性为类的成员提供公有、缺省、保护和私有等多级访问权限,目的是隐藏类中的私有变量和类中方法的实现细节。
继承性:
类的继承性提供从已存在的类创建新类的机制,继承(inheritance)使一个新类自动拥有被继承类(父类)的全部成员。
多态性:
类的多态性提供类中方法执行的多样性,多态性有两种表现形式:
重载和覆盖。
4.方法
对象中的方法表达了对象所具有的行为。
方法实际上就是函数。
5.属性
一个对象的属性是能够被外界或对象所处的环境所感知或操纵的数据或状态。
6.Java是什么?
Java是一门易于变成的跨平台编程语言,同时又是一个开发、应用、执行和部署平台。
Java包括Java编程语言,开发工具和环境、Java类库等。
Java语言是由美国Sun公司开发的一种完全面向对象的程序设计语言。
Java语言由C++语言发展起来,但比C++语言简单。
Java语言具有简单、与平台无关、高效、健壮、安全、多线程等特点,它是当前网络编程的首选语言。
Java既是一门编程语言又是一个平台。
7.为什么要用Java?
最主要的原因是Java与平台无关,一次编译,处处运行,以及它的易于编程的特性。
8.用Java开发程序的步骤是怎么样的?
编写源代码(*.java)→编译(javac*.java)→执行(java*.class)
9.Java的环境变量
由于Java是平台无关的,安装JDK时Java不会自动设置路径,也不会修改注册表,需要用户自行设置环境变量,但不需要修改注册表。
JAVA_HOME:
JDK的安装路径;
CLASSPATH:
JVM装载、class字节码文件时的搜索路径;
PATH:
系统的环境变量,命令的搜索路径。
path变量指出Java提供的可执行文件的路径;
classpath变量指出Java包的路径(forWindows)
setpath=%path%;
C:
\ProgramFiles\jdk1.5.0\bin;
setclasspath=.;
C:
\ProgamFiles\jdk1.5.0\lib
10.JVM是什么?
JVM,JavaVirtualMachine,Java虚拟机,是一个逻辑的操作系统,它屏蔽了硬件和平台信息,JVM能将字节码文件(*.class)解释并执行。
正是这种独立执行的方式,使得Java具有与平台无关的特性。
11.类的加载过程
类加载器(classloader)加载字节码到内存,JVM内存数据区将对象状态放置在堆区,各线程使用的变量放在栈区,类的特征放在方法区。
然后进行字节码验证(Bytecodeverifer),再执行。
二、常用Java命令
1.$javac
编译源代码
2.$java
执行类文件(Bytecode文件)
3.$jdb
调试命令
4.$javadoc[options][packagenames][sourcefiles][@files]
生成Javadoc文档
5.$jar{ctxu}{jar-flie}[manifest-flie][-cdirectory]fiels…
解压缩jar文件命令
c:
创建新的压缩文件(create)
t:
列出清单(tail)
u:
更新压缩文件(update)
v:
显示压缩过程(view)
f:
压缩文件的名称(filename)
m;按照清单指定信息进行压缩
三、语法与规范
1.一个源文件只有一个public类;
2.public源文件可以有多个类定义;
3.源文件名字必须与public类名一致
4.包名必须在第一行(exceptannotation)
注释通常放在第一行,定义了包,则包定义放在第一行(包用来区分同名的类以及组织类);
5.包名可以有零个或一个,但不可以有多个;
6.源文件如果带包的话,最好存放在包结构对应的目录下。
Chapter02
Identifiers,KeywordsandTypes
1.标识符:
定义:
程序语言中用于标识变量名、方法名、类名的字符串。
beginwithcharacter"_"or"$"。
Casesensitive
编码规范:
类名:
首字母大写,每一个单词的首字母也大写(驼峰格式),并且取有意义的单词或单词的联合。
方法名:
首字母小写,每一个单词的首字母也大写,方法名最好取动名词,并且取有意义的单词或单词的联合。
变量名:
首字母小写,每一个单词的首字母也大写。
常量名:
每一个字母都要大写。
如果常量名是由两个或几个字母的联合,用下划线联接。
2.关键字:
程序语言当中,程序已经使用,用户不得再使用的单词。
一般keywords都是小写。
3.数据类型:
基本类型:
booleanbytechardoublefloatintlongshort
基本类型不是对象,所以基本类型没有方法,需要使用包装类才能使基本类型有自己的方法。
Example:
publicclassTest(){
privateinti=10;
publicvoidf(){
for(intk=0;k
i--;
System.out.println(i);
}
}
publicstaticvoidmain(String[]args){
f();
}
}
API:
println
publicvoidprintln()
Terminatethecurrentlinebywritingthelineseparatorstring.Thelineseparatorstringisdefinedbythesystempropertyline.separator,andisnotnecessarilyasinglenewlinecharacter('\n').
请问:
print语句一共运行几次?
答案:
编译报错
整型:
byteshortintlong
浮点型:
floatdouble(浮点型由基数、指数、尾数组成,默认情况下是double型)
布尔型:
boolean
另一分类方法:
布尔型(boolean)和数值型
cast:
隐式转换:
由大到小;
强制转换:
由小到大(强制转换的前提是两种类型必须有继承关系)
char:
字符编码:
将字符按照某种规则转换成数字。
ASCII码:
美国国家信息标准编码,一个字节来表示英文中所用的字符。
ISO8859-1:
国际标准化组织把一个字节来表示英文中所用的字符。
GB2312:
大陆编码标准,6000多个。
GBK:
大陆编码标准,20000多个。
Unicode:
二个字节,表示所有字符,60000多个,Unicode组织提出,
Java采用Unicode编码,几乎包含所有字符。
String:
字符串,是一个类,不是一个基本类型。
String,要用""进行赋值表示。
defaultdatatype:
int
引用类型:
类,接口,数组
类:
定义:
从对象中抽象出来的一个模板,在模板中有方法特征和属性特征,可以
通过类来创建相应的实例。
结构:
package[packagenames];
import
修饰符class类名{
修饰符属性类型属性名
修饰符构造器名
修饰符返回类型方法名(参数类型参数名)
main方法执行过程:
1.先到方法区搜索Student。
class对象(此对象它描述了Student类的方法特征及静态成员等),如果搜索不到则去加载Student的字节码文件;
2.通过classpath查找对应的Student字节码文件,找不到就返回错误:
类找不到;
3.将字节码文件的二进制数据转换为class对象放置于方法区,加载完成;
4.验证字节码文件;
5.在堆区划分空间,放置Student对象;
6.在栈(stack)区放置引用类型变量stu,stu值的Student对象的地址;
7.Student对象存放class对象的地址;
8.通过stu引用类型变量的值找到Student对象,通过Student对象存放class对象的地址找到对应的study方法,然后执行;
9.释放资源,JVM运行结束。
基本类型于引用类型的区别:
(1)引用类型存放的是对象的地址;基本类型存放的是变量的实际值。
(2)引用类型变量可用指向复杂的数据结构。
(3)引用类型变量可用使用"."操作,来访问它所指向的对象的方法或者属性。
Chapter03
ExpressionsandFlowControl
1.表达式:
Definition:
运算符和操作数按照一定的规则组成的语句。
运算符:
(1)赋值运算符
(2)比较运算符
(3)相等运算符
(4)移位运算符
对一个数的二进制位进行移位操作。
左移(<<)Description:
×2的n次方
Example:
3(10)=00000011
(2)
右移(>>)Description:
/2的n次方
Example:
3>>2=?
移动的时候,对于最高位,复制符号位。
无条件右移(>>>)
在移动的时候,对于最高位(符号位),不复制最高位(符号位)。
负数右移的位数越小,值越大。
Example:
-12>>>1=?
(5)位运算符
对一个数值的二进制位进行操作。
~:
取反
^:
异或
|:
或
&:
与
(6)逻辑运算符
&&:
短路与操作
(7)条件运算符
Syntax:
?
:
2.变量的作用域:
Definition:
变量生存的时间。
(1)变量的分类:
类的成员变量
①类的静态成员变量
Example:
Student类的带static修饰的属性
类的静态成员变量的生命周期:
从类加载开始,到类被卸载结束。
静态成员初始化以后放在方法区。
②类的实例成员变量
Student类的不带static修饰的属性。
变量初始化以后放在堆区。
实例变量的生命周期:
A.从对象生成开始,到对象被回收时结束。
B.类的实例成员变量在对象初始化的时候,会赋默认值。
基本类型numbertype:
0,Boolean:
false,charactertype:
'\u0000'
引用类型:
null,如String
C.先按照B的规则赋给一个初始值,然后构造器的赋值过程会覆盖掉初始值。
局部变量
定义:
指方法或代码块中定义的变量。
JVM中的某个线程调用方法的时候,将局部变量压入栈区开始,方法调用结束,
(2)局部变量
Definition:
局部变量是方法或代码块中定义的变量。
局部变量从栈区(stack)弹出结束。
局部变量在使用前必须要赋值。
(3)方法的参数
例如:
for(inti=0;i<10;i++),add(inti1,inti2)
(4)异常的参数
例如:
try...catch(Exceptione)
3.流程控制:
if语句:
A.三种典型的格式;
B.布尔表达式只能赋值trueorfalse
switch语句:
A.switch条件值只能是byte,short,char,int;
B.case语句后,要加break;
C.default语句可选,最多只能有一个,可以放在任何位置
for语句:
while语句;
dowhile语句
break语句:
跳出当前循环;如果有标号(label),会执行循环之后的语句
continue语句:
跳出当前语句,如果有label,会执行标号处的语句。
label(标号):
类似于goto语句,跳到另一个地方(尽量不要使用)。
Chapter04
Array
一、数组是什么?
1.基本概念:
Definition:
数组就是相同类型元素的线性集合。
Arrayisacollectionofthesamedata.
Anarrayisobject.
对数组的理解:
数组是一个对象,是一个指向数组的引用对象。
2.Syntax
ArrayCopy
二、为什么要使用数组?
三、数组主要用在哪些地方?
数组不能用在哪些地方?
四、怎么样使用数组?
如何更好地使用数组?
应该选择怎样的数组(Array,ArrayList,LinkedList,Vector)
1.数组的使用:
A.declare
int[]a=newint[3](声明一个数组类型的成员变量,并创建一个数组)
int[]a={};
inta[]={};
inta[][]={}
B.create
Sample:
a=newint[3];
int[]a={1,2,3};
AdvancedFeature:
a.在堆中分配连续内存空间;
b.对数组元素赋缺省值;
c.在栈中存放a引用类型变量,并指向堆中的数组
Tips:
数组创建的过程
创建长度为2的数组,堆中分配空间,给数组元素赋默认值。
C.initialize(初始化)
Example:
a[0]=1;
2.多维数组:
规则的二维数组
不规则的二维数组
(1)declare
Example:
int[][]a1;
int[]a2[];
inta3[][];
(2)create
Example:
a1=newint[2][];
a1[0]=newint[3];
a1[1]=newint[2];
a1[2]=newint[1];
(3)initialize:
for(inti=0;i for(intj=0;j a1[i][j]=defaultvalue; } } AdvancedFeatures (1)数组下标不要越界(否则JVMthrowsRuntimeException,在C++当中甚至会导致内存数据破坏,系统崩溃); (2)Mistake: int[3]a; Explanation: 声明数组却不创建数组。 (3)与数组相关的工具类 System.arraycopy(scource,begin,dest,begin,sourcelength) PS: 1)source会覆盖dest对应位置的元素; 2)dest的空间应该是足够的,否则会报数组越界 Chapter05 ObjectsandClasses BasicconceptsinOOP Encapsulation: 隐藏实现过程,对外提供公开一致的接口、使软件易于更新与维护。 Polymorphism: 一个事物自动获得另一事物的状态行为的机制。 Inheritance: 一个类自动获得另一个类的属性或者方法的过程。 1.类的结构 类名 属性名 静态属性 实例属性: 必须依赖于对象/实例 方法 静态方法 实例方法 构造器 缺省构造器 带参的构造器 静态代码块 实例代码块 2.参数传递 对于基本类型,将实际参数的值原样的复制一遍传值; 对于引用类型,将引用类型变量的地址值复制给实参。 3.Wherecanweuse“this”? A.实例变量于局部变量同名,用this。 实例变量名来和局部变量加以区分; B.在构造器的重载的时候,用this来调用其他的构造器; C.在实例方法中,用来将当前对象的引用传递给另外的方法。 4.方法的重载 A.方法名要相同; B.在一个类中,多个方法具有不同的方法签名(参数类型/参数个数/参数顺序),方法可以重载 C.返回类型不作要求 5.类的初始化的过程: 类的静态成员在类被加载的时候进行初始化! (1)在堆中分配空间; (2)给对象的属性赋默认值 boolean=false; 基本类型=0; 引用类型=null; (3)调用构造器 构造器可能会初始化属性值; (4)进一步赋值 6.构造器 类中提供的用于初始化对象的特殊的方法,这个方法 与类名相同,无返回值 缺省构造器? A.类中没有提供构造器,JVM会提供一个不带参的缺少构造器 B.类中有带参的构造器,JVM不会提供了。 7.封装继承多态 (1)封装 A.将类的实现细节隐藏起来 B.对外提供一致的接口 C.提高系统的维护性 (2)继承(Inheritance) 定义: 一个类自动获得另一个类的属性或者方法的过程。 使用: publicvoidclassAextendsSubA{ } A.单根继承 B.所有的类都是object的子类 C.类没有显示地继承另外一个类,则缺省继承了object 基本规则 A.构造器不能被继承 B.子类初始化时会默认情况下调用父类缺省的构造器 C.子类调用父类的带参的构造器,则父类可以不用缺省构造器 怎样使用继承: A.区分"Has-a"与"Is-a"; B.子类要扩充父类的功能; C.子类需要大量置换父类的功能时,不应该使用继承; D.不要从工具类(一些辅助运算的方法)中继承。 继承的优缺点 优点: 1.继承是最容易的复用代码的形式 2.修改父类的功能是,子类可以自动获得新的功能 缺点: 最大的缺点是打破封装,继承只是类型(静态)复用。 PS: 静态类型的复用,牺牲了类的自由。 父类的引用类型变量可以调用子类的实例,反之则不成立,即子类可当父类用。 (3)多态: A.编译时,编译器检查声明类型(类型/方法信息) B.运行时,JVM对实例方法和引用变量实际引用的对象动态绑定,对静态方法和引用变量声明的类型静态绑定。 C.类的属性在编译阶段绑定。 8.instanceof: 判断实例是否为某个类型的或者其子类型的实例 A.只能在父子类进行比较; B.null可以进行比较,结果为false; C.判断实例的类型时,一般从子类开始,然后是父类 9.override: 方法覆盖是值子类重写父类中的方法。 子类要想override父类的方法有以下条件: A.方法名相同 B.方法签名相同 C.返回值相同 D.子类的修饰符>=父类的修饰符 E.子类抛出的异常要小于父类抛出的异常 F.父类中抽象方法可以被子类通过两种途径覆盖: 1)子类实现父类的抽象方法; 2)子类重新声明父类中的抽象方法。 10.Casting 1.子类可用作为父类用: 引用类型为类的变量可以指向子类型的实例 2.引用类型为子类的变量不可以指向父类型的实例 A、可用强制转换 SubAa=(SubA)newA()' B、编译能通过,但运行出错 3.在使用casting的时候,先使用instanceof判断实例类型。 如果为真,则可强制转换。 11.依赖关系 A.一个类中的方法,其局部变量类型是另外一个类,则这两个类具有依赖关系 B.一个类中的方法调用另外一个类的静态的方法,则A依赖B,记作A->B C.一个类的方法中的参数是另一个类的静态方法。 AdvancedFeatures: 1.在Java中,类的定义与实现必须一次完成,成员、方法都必须定义在类之中。 2.方法的局部变量是另一个类。 3.this Theorder“this”pointtothecurrentclassorobject. this是一个keyword,表示对象中指向自身的一个引用,在实例方法中用来指代当前对象。 this的主要用途: 4.private只能被当前public类访问,不能通过其他类访问。 5.Encapsulationcanenhancemaintainability. 封装能够增强系统的可维护性。 6.方法签名 方法签名就是指方法的参数类型、顺序或者个数不一致。 方法签名不一致,方法就可以被重载。 7.类的初始化过程 (1)先对父类初始化(先初始化实例成员,包括属性和代码块<无static修饰>,初始化构造器) (2)再对子类初始化 (3)如果有静态成员(静态属性和静态代码块),从父类到子类,先执行类的加载并且初始化这些静态成员。 8.Constructor(构造器) Constructorcannotbeinherited.构造器不能被继承。 Java程序员为对象提供初始化的构造器是一个良好的编程习惯。 构造器存在的唯一目的就是初始化。 如果存在多个构造器,就可以被重载。 如果不指定构造器,JVM就会提供缺省的构造器。 如果自定义的类中没有构造器,JVM会提供无参的default修饰的构造器。 如果类中已有带参的构造器,JVM不会提供默认的构造器。 9.继承,是静态复用或者说是类型复用的机制。 带有继承关系的类的初始化过程 (1)如果有static属性修饰的代码块,则从父类到子类,先执行类的加载,并且初始化这个静态成员; (2)如果没有static成员,则先初始化父类实例成员和构造器,再初始化子类实例成员和构造器。 10.为什么要使用继承? (1)继承者(子类)要扩展父类的功能 11.父类的引用类型可以指向其子类的实例: sample: Bb=newSubB(); 子类SubB可以当父类B来用。 但是,很显然地,父类B不能当子类用,我们可以把这种错误的继承行为比喻成“乱伦”。 12.SingleInheritance: (1)任何子类都只能有一个父类; (2)所有的类都是Object的子类; (3)如果说一个类不继承任何子类,会自动隐藏“extendsObject”。 13.构造器是怎么样运行的? 子类的构造器默认情况下会调用父类的构造器,如果子类的构造器指定调用父类带参的构造器,则父类可以不提供缺省的构造器。 14.Polymorphism 在多态中当中,类的属性在编译阶段确定,在编译阶段绑定。 静态方法不能override。 静态方法不能用
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Core Java笔记MS Word版 Java 笔记 MS Word