Java基础——Java开发前奏
Java的特点
Java最主要的特点是:一次编译,到处运行(Write Once, Run Anywhere.)。
原理:Java源程序经编译后生成.class字节码文件,.class文件由Java虚拟机(JVM)解释执行。不同的操作系统下,只要有相应的Java字节码解释程序,.class文件就能够运行,这是Java跨平台性的根本。c和java编程与执行的过程如下图所示:
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反编译工具——JAD、FrontEnd
Java开发工具
1、记事本
注意保存时文件名应为*.java。
2、UltraEdit、EditPlus
使用EditPlus编辑和编译Java程序,需要进行相应配置。选择“工具”->“参数选择”->“工具”->“用户工具”->“添加工具”->“应用程序”。首先设置“javac”的参数,具体如下图,其中“命令”为javac.exe文件的地址。
然后设置“java”的参数,如下图所示,其中“命令”为java.exe文件的路径。
设置好后默认“javac”工具的快捷键为Ctrl+1,“java”工具的快捷键为Ctrl+2。当编辑好Java源程序后,使用Ctrl+1即可对其进行编译,然后按Ctrl+2运行程序。如下图所示:
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、多行注释
以斜杠加星号开头,以星号加斜杠结尾。
3、文档注释
以斜杠加两个星号开头,以一个星号加斜杠结束。
用这种方法注释的内容会被解释成程序的正式文档,并能包含进诸如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的变量类型
基本数据类型之间的转换
1、自动类型转换(隐式类型转换)
条件:
a.两种类型彼此兼容
b.目标类型的取值范围要大于源类型
2、强制类型转换(显示类型转换)
格式:目标类型 常量 = (目标类型)值
注:字符串可以使用加号“+”同其他的数据类型相连而形成一个新的字符串。
变量的作用域
代码块决定了变量的作用域,作用域决定了变量的可见性和存在时间。
局部变量
在一个函数或函数里面的代码块中定义的变量称为局部变量。
局部变量在进行取值操作前必须被初始化或进行过赋值操作。
函数
1、定义函数的格式
返回值类型 函数名(参数类型 形式参数1,参数类型形式参数2,...)
{
}
2、函数的重载
函数的重载就是在一个类中可以同时存在一个以上的同名函数,只要它们的参数个数或类型不同即可
Java基础——Java语法基础(2)——运算符
Java基础——Java语法基础(3)
程序控制流程
1、顺序结构
按顺序执行
2、if条件语句
a.if...
b.if...else...
可简写为:变量 = 布尔表达式? 语句1:语句2;
c.if...else if...else...
3、switch选择语句
switch(表达式)
{
case 取值1:
...
case 取值n:
default:
}
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
{
}
静态代码块当类被载入时执行,且只被执行一次,其常用来进行类属性的初始化。
注:类是在第一次被使用时才被装载。
4、单态设计模式
所谓类的单态设计模式,就是保证在整个软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。
具体实现:将类的构造方法的访问权限设置为private,在类的外部只能调用该类的某个静态方法以返回类的内部创建的对象,而指向该对象的变量也必须是静态的。
内部类(略)
Java的文档注释(略)
Java基础——面向对象(2)——类的继承
Java基础——面向对象(3)——抽象类与接口