java 回顾 2013-07-19 早间学习


Java基础——Java开发前奏


Java的特点

Java最主要的特点是:一次编译,到处运行(Write Once, Run Anywhere.)。

原理:Java源程序经编译后生成.class字节码文件,.class文件由Java虚拟机(JVM)解释执行。不同的操作系统下,只要有相应的Java字节码解释程序,.class文件就能够运行,这是Java跨平台性的根本。c和java编程与执行的过程如下图所示:

Java基础鈥斺擩ava开发前奏

 

Java的内涵

1、是一种编程语言

2、是一套开发工具

3、是一个运行环境

 

Java应用平台

1、J2EE(Java 2 Platform Enterprise Edition)——用于企业级应用程序的开发

2、J2SE(Java 2 Platform Standard Edition)——用于普通标准应用程序的开发

3、J2ME(Java 2 Platform Micro Edition)——用于小型消费类电子产品或嵌入式系统的开发

 

J2SE包括4部分——JVM、JRE、JDK与Java语言。

 

环境变量的设置

环境变量——在操作系统中定义的变量,可供操作系统上所有的应用程序使用。

1、查看环境变量

a.命令提示行:环境变量的命令——set (环境变量名)

b.窗口方式:我的电脑->属性->高级->环境变量

2、设置path环境变量

path环境变量的作用:设置操作系统寻找和执行应用程序的路径。

JAVA_HOME:C:\Program Files\Java\jdk1.6.0_14

path:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin 

3、设置classpath环境变量

classpath环境变量的作用:让Java执行环境找到指定的java程序(.class文件)。

classpath:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

注意:a.%JAVA_HOME%前面有“.;”,“.”表示当前目录,两个路径之间用“;”隔开。

b.设置classpath的路径中不能有空格,也不能有中文字符。

 

JVM的运行过程

Java基础鈥斺擩ava开发前奏 

 

Java反编译工具——JAD、FrontEnd

 

Java开发工具

1、记事本

注意保存时文件名应为*.java。

2、UltraEdit、EditPlus

使用EditPlus编辑和编译Java程序,需要进行相应配置。选择“工具”->“参数选择”->“工具”->“用户工具”->“添加工具”->“应用程序”。首先设置“javac”的参数,具体如下图,其中“命令”为javac.exe文件的地址。

Java基础鈥斺擩ava开发前奏

然后设置“java”的参数,如下图所示,其中“命令”为java.exe文件的路径。

Java基础鈥斺擩ava开发前奏

设置好后默认“javac”工具的快捷键为Ctrl+1,“java”工具的快捷键为Ctrl+2。当编辑好Java源程序后,使用Ctrl+1即可对其进行编译,然后按Ctrl+2运行程序。如下图所示:

Java基础鈥斺擩ava开发前奏

3、集成开发环境——Eclipse、MyEclipse、JBuilder等。

关于Eclipse和MyEclipse,刚用的时候感觉二者差不多,查了资料才知道Eclipse 是基础,如同操作系统;而MyEclipse是在Eclipse上面运行的程序,不过进行了增强并提供了新功能。

以前用过Microsoft的Visual Studio 2005,个人感觉VS2005是一个功能非常强大的集成开发环境,不过.NET和Java毕竟不是一家人,学Java还是要用Eclipse的。

 

JDK中的常用包

1、java.lang——包含一些Java语言的核心类,如String、Math、Thread、System、Integer类等。

2、java.awt——包含构成抽象窗口工具集的多个类,用来构建和管理应用程序的图形用户界面(GUI)。

3、java.applet——包含applet运行所需的一些类。

4、java.net——包含执行与网络相关操作的类。

5、java.io——包含能提供多种输入/输出功能的类。

6、java.util——包含一些实用工具类。

 

Java的命名习惯

1、包名中的字母一律小写。如:xxxyyyzzz

2、类名、接口名应使用名词,每个单词的首字母大写。如:XxxYyyZzz

3、方法名,第一个单词小写,后面每个单词的首字母大写。如:xxxYyyZzz

4、变量名,第一个单词小写,后面每个单词的首字母大写。

5、常量名中的每个字母一律大写。如:XXXYYYZZZ



Java基础——Java语法基础(1)


Java代码基本格式

Java中所有程序代码都必须存在于一个类中,用class关键字定义类,在class之前可以有一些修饰符。格式如下:

修饰符 class 类名

{

    程序代码

}

注:

1、Java是严格区分大小写的。

2、Java程序中一句连续的字符串不能分开在两行中写。

 

Java程序的注释

Java里的注释有三种类型:

1、单行注释

在注释内容前面加“//”,格式为:

代码;  //注释内容

2、多行注释

以斜杠加星号开头,以星号加斜杠结尾。

Java基础鈥斺擩ava语法基础(1)

3、文档注释

以斜杠加两个星号开头,以一个星号加斜杠结束。

Java基础鈥斺擩ava语法基础(1)

用这种方法注释的内容会被解释成程序的正式文档,并能包含进诸如javadoc之类的工具程序生成的文档里,用以说明该程序的层次结构及其方法。

补充:

1、多行注释中可以嵌套“//”注释,但不能嵌套多行注释符号。

2、程序注释一般占程序代码总量的20%-50%,“可读性第一,效率第二”。

 

Java中的标识符

Java中的包、类、方法、参数、变量的名字,可以由任意顺序的大小写字母、数字、下划线(_)、美元符号($)组成,但不能以数字开头,不能是Java中的保留关键字。

 

Java的关键字

1、用于类和接口的声明:class, extends, implements, interface

2、包引入和包声明:import, package

3、数据类型:byte, boolean, char, double, int, long, float, short

4、某些数据类型的可选值:flase, ture, null

5、流程控制:break, case, continue, default, do, else, for, if, return, switch, while

6、异常处理:catch, finally, throw, throws, try

7、修饰符:abstract, final, native, private, protected, public, static, synchronilzed, transient, volatitle

8、操作符:instanceof

9、创建对象: new

10、引用:this, supper

11、方法返回类型:void

12、保留字:const, goto

 

Java中的常量

1、整形常量

十进制

十六进制——以0x或0X开头

八进制——以0开头

长整形——以L(l)结尾

2、浮点数常量

单精度浮点数——后面加f(F)

双精度浮点数——后面加d(D) 

注:

a.小数常量的默认类型是double型,所以float类型常量后一定要加f(F)。

b.浮点数常量可以用指数形式表示,如5.022e+23f

3、布尔常量

true或false

4、字符常量

由英文字母、数字、转义序列、特殊字符等的字符所表示,如'a'、'\t'等。

Java中的字符占两个字节,是用Unicode码表示的,也可以使用'\u'加Unicode码值来表示对应字符,如'\u0027'。

常用的转义字符有:

\t——表示接受键盘输入,相当于按了一下回车键

\n——表示换行

\t——表示制表符,相当于Tab键

\b——表示退格键,相当于Back Space键

\'——表示单引号

\”——表示双引号

\\——表示反斜杠“\”

5、字符串常量

字符串常量用双引号括起来。

6、null常量

null常量表示对象的引用为空。

 

Java的变量类型

Java基础鈥斺擩ava语法基础(1)

 

基本数据类型之间的转换

1、自动类型转换(隐式类型转换)

条件:

a.两种类型彼此兼容

b.目标类型的取值范围要大于源类型

2、强制类型转换(显示类型转换)

格式:目标类型 常量 = (目标类型)值

注:字符串可以使用加号“+”同其他的数据类型相连而形成一个新的字符串。

 

变量的作用域

代码块决定了变量的作用域,作用域决定了变量的可见性和存在时间。

 

局部变量

在一个函数或函数里面的代码块中定义的变量称为局部变量。

局部变量在进行取值操作前必须被初始化或进行过赋值操作。

 

函数

1、定义函数的格式

返回值类型 函数名(参数类型 形式参数1,参数类型形式参数2,...)

{

    程序代码

    return 返回值;

}

2、函数的重载

函数的重载就是在一个类中可以同时存在一个以上的同名函数,只要它们的参数个数或类型不同即可



Java基础——Java语法基础(2)——运算符

Java中的运算符
1、算术运算符
Java基础鈥斺擩ava语法基础(2)鈥斺斣怂惴
a.字符串 + 其他类型 = 字符串
b.如果对负数求余,可以把除数负号忽略不计,如5 % -1 = 1。但如果被除数是负数就另当别论了。
 
2、赋值运算符
Java基础鈥斺擩ava语法基础(2)鈥斺斣怂惴
a.在Java中,可以把赋值语句连在一起,如:x = y = z = 5;
b.x += y相当于x = x + y
 
3、比较运算符
Java基础鈥斺擩ava语法基础(2)鈥斺斣怂惴
a.要注意比较运算符“==”和赋值运算符“=”的区别,特别是布尔型变量进行比较时。
b.可以将比较运算的表达式写为“false == 变量”的形式,以防止误写为赋值运算。
 
4、逻辑运算符
Java基础鈥斺擩ava语法基础(2)鈥斺斣怂惴
a.逻辑运算符用于对boolean型结果的表达式进行运算,运算的结果都是boolean型 。
b.“&”和“&&”的区别在于,如果使用前者连接,那么无论任何情况,“&”两边的表达式都会参与计算。如果使用后者连接,当“&&”的左边为false,则将不会计算其右边的表达式。“|”和“||”的区别与“&”和“&&”的区别一样。
 
5、位运算符
位运算——对数据按二进制位进行移位操作。
适用类型:byte, short, char, int, long
位运算包括:
& 位与
| 位或
^ 位异或
<< 左移,左移n位相当于乘以2的n次方
>> 右移,右移n位相当于除以2的n次方
>>> 无符号右移 
注:
a.位运算符也可以与“=”赋值运算符组合产生新的赋值运算符,如:&=, <<=等。
b.移位不会改变变量本身的值,如a>>1在一行语句中单独存在毫无意义。
c.对低于int型的操作数将先自动转换为int型再移位;对int型整数移位a>>b,系统先将b对32取模,得到的结果才是真正移位的位数;对于long型整数移位时则是先将移位位数对64取模。
 
运算符的优先级
Java基础鈥斺擩ava语法基础(2)鈥斺斣怂惴
编程技巧:
1、不要在一行中编写太复杂的表达式,可以将其分解为几条语句。
2、多用括号。


Java基础——Java语法基础(3)

程序控制流程

1、顺序结构

按顺序执行

 

2、if条件语句

a.if...

b.if...else...

可简写为:变量 = 布尔表达式? 语句1:语句2;

c.if...else if...else...

 

3、switch选择语句

switch(表达式)

{

case 取值1:

    语句块1;

    break;

...

case 取值n:

    语句块n;

    break;

default:

    语句块n+1;

    break;

}

 

4、while循环语句

while(条件表达式)

{

    执行语句

}

 

5、do while循环语句

do

{

    执行语句

}while(条件表达式)

 

6、for循环语句

for(初始化表达式;循环条件表达式;循环后操作表达式)

{

    执行语句

}

 

7、增强for循环

for (循环变量类型 循环变量名称: 要被遍历的对象)

{

    执行语句

}

 

8、break与continue语句

a.一个无标号的break语句会把控制传回当前最内层循环(while,do,for,switch)的下一条语句。

b.无标号的continue语句的作用是跳过当前循环的剩余语句块,接着执行下一次循环。

 

数组

1、数组的定义

如:int[] x = new int[100];

或int x[] = new int[100];

 

2、数组的静态初始化

如:int[] aa = new int[] {3,4,5};

 

3、多维数据

如:

int[][] xx = new int[3][];

xx[0] = new int[3];

xx[1] = new int[2];

 

4、一些与数组相关的函数

a. System.arraycopy(Object src,int srcPos,Object dest,int destPos,int length)复制数组,将源数组srcPos开始的length个元素从目标数组的destPos位置开始存储。

b. Array.sort()数组升序排序


Java基础——面向对象(1)——基本概念

面向对象的概念

1、对象和其方法是主语和谓语的关系,重点集中在主题/对象(主语)上。

2、封装性是面向对象的根源和最根本的属性。

3、是对某一类事物的描述,是抽象的、概念上的定义;对象(Object)是类(Class)的一个实例(Instance)。

 

Java中类与对象

1、定义类就是定义类的属性与行为(方法)。

2、类定义的基本格式:

修饰符 class 类名

{

    类的属性

    类的方法

}

3、如果一个方法中有与类的成员变量同名的局部变量,该方法中对这个变量名的访问是局部变量,而不是成员变量。

4、Java中比较两个对象可以用“==”运算符和equals()方法。“==”操作符用于比较两个变量的值(对象的内存地址)是否相等,equals()方法用于比较两个对象的内容是否一致。

5、匿名对象:创建完对象,在调用该对象的方法时,可以不定义对象的句柄,而直接调用这个对象的方法。

使用匿名对象的情况:a.该对象只需进行一次方法调用;b.将匿名对象作为实参传递给一个函数调用。

6、类的封装:将类的成员变量声明为private,再通过public方法来对这个变量进行访问。

7、在进行程序的详细设计时,应尽量避免一个模块直接操作另一个模块的数据,模块设计应追求强内聚、弱耦合,许多功能尽量在类的内部完成,只提供给外部尽量少的方法调用。

8、构造函数

a.构造函数的作用:为类的成员变量完成初始化工作。

b.构造函数的重载。Java会根据构造类的对象时传递的参数,自动选择相应的构造方法。

9、this引用句柄。

作用:

a.增强程序的可读性。

b.把当前对象作为作为一个参数传递给其他方法和构造方法。

10、垃圾回收:

a.finalize()方法。finalize()方法的作用类似于C++中的析构方法,其是在对象已变成垃圾即将从内存中释放前调用(不是在对象变成垃圾前调用)。这并不是一个可靠的机制

b.System.gc()。这个方法可以强制启动垃圾回收器来回收垃圾。

 

函数的参数传递

1、基本类型的变量作为实参传递,传递的是该数据的值本身,变量并不会改变。

2、引用类型(类、数组,String类除外)的变量作为实参传递,传递的是对象的引用(句柄),而非对象本身,通过方法调用可以改变对象的内容。

3、基本类型的变量作为方法参数传递,怎样在方法体内改变其值?待查

4、可变参数 待查

 

static关键字

1、静态变量。用static标识符修饰,在类被被载入时创建。访问静态变量不需要产生类的实例对象。

注:不能把方法体内的变量声明为静态。

2、静态方法。用static标识符修饰。可以用类名或类的实例对象(待考证)来访问,也可以在类的非静态方法中访问。

a.静态方法不能以任何方式引用this和super关键字。

b.在静态方法里只能直接调用同类中的其他静态成员(变量和方法),而不能直接访问类中的非静态成员。

3、静态代码块(static block):

class A

{

    static

    {

        //静态代码块

    }

    //……

}

静态代码块当类被载入时执行,且只被执行一次,其常用来进行类属性的初始化。

注:类是在第一次被使用时才被装载。

4、单态设计模式

所谓类的单态设计模式,就是保证在整个软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。

具体实现:将类的构造方法的访问权限设置为private,在类的外部只能调用该类的某个静态方法以返回类的内部创建的对象,而指向该对象的变量也必须是静态的。

 

内部类(略)

 

Java的文档注释(略)



Java基础——面向对象(2)——类的继承

Java中继承的特点
1、使用extends关键字表示继承,通过继承可以简化类的定义。
2、Java只支持单继承,可以有多重继承。
3、可以有多层继承,及一个类可以继承某一个类的子类。
4、子类继承父类所有的成员变量和成员方法,但不继承父类的构造方法。在子类的构造方法中可以super(参数列表)调用父类的构造方法。
5、如果子类的构造方法中没有显示的调用父类的构造方法,也没有使用this关键字调用重载的其他构造方法,则在产生子类的实例对象时,系统默认调用父类无参数的构造方法。
注:一个类中如果定义了有参构造方法而没有重写无参构造方法,无参构造方法将失效。所以我们在定义类时,只要定义了有参构造方法,通常还要定义一个无参构造方法。
6、子类覆盖父类的方法时,覆盖方法必须和被覆盖方法具有相同的方法名称、参数列表和返回值类型,且子类不能使用比父类中被覆盖方法更严格的访问权限。
 
子类对象的实例化过程
1、分配成员变量的存储空间并进行默认的初始化;
2、绑定构造方法参数;
3、如有this()调用,则调用相应的重载构造方法;
4、显式或隐式追溯调用父类的构造方法;
5、进行实例变量的显式初始化操作;
6、执行当前构造方法的方法体中的程序代码。
 
final关键字
1、在Java中说明类、属性和方法时,可以使用final关键字来修饰。
2、final标记的类不能被继承。
3、final标记的方法不能被子类重写。
4、final标记的变量即成为常量,只能赋值一次。如果final标记的是类的成员变量,则该变量必须在声明时或在构造方法中显示赋值,然后才能使用。
5、方法中定义的内置类只能访问该方法内的final型局部变量。
6、在Java中通常使用public static final的组合方式标识常量,这样的常量就成为了全局的常量,且只能在定义时赋值。
 
访问控制
访问控制修饰符共有四个:public、protected、default、private。
类成员的访问控制
1、private访问控制
成员只能在这个类的内部使用。
2、默认访问控制(无修饰符)
成员可以被这个包中的其他类访问。
3、protected访问控制
既可以被同一包中的其他类访问,也可以被不同包中的子类访问。
4、public访问控制
可以被所有类访问。 
类的访问控制
类本身只有两种访问控制:public和默认(定义时无访问控制符)。
1、public修饰的类能被所有的类访问。
2、默认修饰的类只能被同一包中所有的类访问。

Java基础——面向对象(3)——抽象类与接口

抽象类
1、抽象类——包含抽象方法的类就叫做抽象类。一个抽象类中可以有一个或多个抽象方法。
2、抽象方法的写法:abstract 返回值类型 抽象方法名 (参数列表)
3、抽象方法用abstract关键字修饰,只需要声明不需要实现。带有抽象方法的类必须也用abstract声明为抽象类。
4、抽象类不能被实例化,其子类必须覆盖所有的抽象方法后才能被实例化,否则其子类也还是抽象类。
 
接口
1、接口是一种特殊的抽象类,其中只包含常量和方法的定义,而没有变量和方法的实现。
2、接口中定义的变量是全局静态常量,默认是用public static final标记的。
3、接口可以继承接口。如果一个类只实现了接口中定义的部分方法,那么这个类是抽象类。
4、一个类可以在继承一个父类的同时实现一个或多个接口,此时extends关键字必须位于implements关键字之前。
5、设计接口的目的是为了让类不必受限于单一继承的关系,而可以灵活的同时继承一些共有的特性,从而达到多重继承的目的。
 
对象的多态性
1、子类能够自动转换为父类类型。如:Bird b = new Bird();   Animal a =  b;
2、父类转换为子类需要进行强制类型转换,强制类型转换的前提是需要提前知道要转换的父类引用类型对象的本来面目确实是子类类型的。
3、可以使用instanceof操作符判断一个类是否实现了某个接口,或用来判断一个实例对象是否属于某个类。其语法格式为:对象 instanceof 类(或接口)
4、Object类是Java类层中的最高层类,是所有类的超类。自定义类中必须覆盖Object类的equals方法,否则调用的是Object类的equals方法。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值