资源描述
Java程序设计基础教程
Java程序设计基础教程
第一章 概述
本章技能目标
(1)了解Java语言的由来、特点、家族成员及实现机制。
(2)熟悉JDK开发环境的安装及配置。
(3)会使用Eclipse开发第一个Java应用程序。
重点和难点
开发环境的配置及使用。
1.1Java语言简洁
1.1.1Java语言的由来
Java是由SUN公司开发而成的新一代编程语言。
Oak。
咖啡(Java)。
Java大家庭:
(1)J2ME—即Java2 Micro Edition。
(2)J2SE—即Java2(Software Development Kit)Standard Edition。
(3)J2EE—即Java2 Enterprise Edition(可扩展的企业应用Java2平台)。
1.1.2Java语言的特点
面向对象及面向过程。
高级语言程序必须转换为机器语言程序才能执行,但不同的计算机系统所使用的机器语言不同。
一次编译,随处运行。
任何系统只有安装了Java虚拟机(Java Virtual Machine,JVM)后,才可以执行Java程序。
当JVM解释执行Java程序时,Java实时编译器(Just-In-Time,JIT)会将字节码译成目标平台对应的机器语言的指令代码。
编译器会产生一种具备结构中立性的对象文件格式,即Java字节码文件。
在Java中,这种供虚拟机理解的代码叫做字节码(ByteCode),它不面向任何特定的处理器,之面向虚拟机。
Java字节码可在任何安装了Java虚拟机的平台上运行。
每一种平台的解释器是不同的,但是实现的虚拟机是相同的。Java源程序经过编译器编译后变成字节码。字节码由虚拟解释执行,虚拟机将每一条要执行的字节码送给解释器,解释器将其翻译成特定机器上的机器码,然后再特定的机器上运行。其执行过程如图1-1所示。
1.2开发环境配置及使用
1.2.1JDK的安装及配置
在开发Java应用程序前必须首先下载并安装JDK。目前JDK最新版本是1.6。
2.认识JDK
(1)bin目录。提供了工具程序,包括javac、java、javadoc、appletviewer等程序。
1)javac用于将Java源代码编译成字节码。其语法为:
Javac [option] source
其中,[option]可包括以下几项:
①-classpath<路径>,指定将使用的类路径,以搜索.class文件。
②-d<目录>,制定用于存放经过编译的.class文件的目录。“.”表示当前目录。
Source是以扩展名.java结尾的一个或多个文件名。
2)java用于执行java字节码。其语法为:
Java [option] classname [arguments]
其中,[option]可包括以下几项:
①-classpath<路径>,指定将使用的备用类路径。
②-version<版本>,显示编译源代码的JDK版本。
3)javadoc用于生成API文档。
4)appletviewer用于运行编译好的Applet。
(2)jre目录。提供JDK附带的JRE资源包(运行环境)。
(3)lib目录。提供了java工具所需的资源文件。
(4)demo目录。提供了Java编写的范例程序。
(5)src.zip文件。提供了API类的源代码压缩文件。如需查看API的某些功能实现方法,可以查看这个文件中的源代码内容。
3。设置Patch及Classpath环境变量(在Windows XP环境下)
(1)设置Patch。具体方法是:用鼠标右键单击桌面上“我的电脑”图标,选择“属性”选项,再选择“高级标签”,系统显示如图1-3所示。
单击“环境变量”按钮,打开“环境变量”对话框。选择Path变量,单击“编辑”按钮,在“变量值”文本框中加入JDK的bin地址目录,如:C:\Program Files\Java\jdk1.6.0_21\bin,地址间采用“;”隔开,如图1-4所示。
设置完成后,单击“确定”按钮完成设置,并返回到“环境变量”对话框。
(2)设置Classpath。再“环境变量”对话框中单击“新建”按钮,设置变量名为Classpath变量值为:.;C:\Program Files\Java\jdk1.6.0_21\lib,如图1-5所示。
提示:“.”表示当前目录。
(3)测试。具体方法是:单击“开始”菜单,选择“运行”命令,输入cmd命令,进入DPS界面,若输入java –version命令会出现如图1-6所示的信息,则表明设置正确。
1.2.2开发第一个Java程序
(1)Eclipse。登录下载。
(2)安装Eclipse。
Eclipse是一个绿色软件,无需安装即可执行。
覆盖下列文件到程序目录即可。
(3)运行Eclipse。进入解压后的eclipse目录,双击eclipse.exe运行Eclipse集成开发环境。在运行时,Eclipse会提示选择工作空间,如图1-7所示(这里选择E:\黄伟林\第一章作为工作空间)
选择工作空间后,单击“确定”按钮,会出现一个欢迎界面,可以把欢迎界面关闭。
(4)用Eclipse编写程序。
1)新建项目(project):单击“文件”→“新建”→“项目”命令,在弹出的对话框中选择“Java项目”选项,单击“下一步”按钮,如图1-8所示。
输入项目名称:JavaStudy,单击“完成”按钮,如图1-9所示。
提示:项目又称“工程”。
2)新建Java程序:选中“包资源管理器”中的JavaStudy项目节点,单击鼠标右键,选择“新建”→“文件”命令,新建文件,如图1-10所示。在“文件名”文本框中输入:FirstClass.Java,单击“完成”按钮,系统将自动弹出如图1-11所示的Eclipse主窗口。
3)编写代码:在Java编辑器中输入如图1-12所示的内容。
public class FirstClass
{
public static void main(String args[])
{
System.out.println("Hello World!");
}
}
4)保存:单击工具栏中的“保存”按钮或“文件”菜单中的“保存”命令。在保存的同时,Eclipse将自动将源程序编译成字节码文件。若程序有错误,将显示在“问题”视图中。
5)运行:在“包资源管理器”中,选中FirstClass类节点,单击鼠标右键,选择“运行方式”→“Java应用程序”选项。如果看到如图1-13所示的输出结果,表明第一个程序开发成功。
1.2.3 Java程序框架
(1)给程序起个名字,我们把它叫做类名,图1-12中的FirstClass就是类名。类名前腰用public(公共的)和class(类)两个词修饰,他们的顺序不能改变,中间要用用空格分隔。类名后跟一对大括号,所有属于这个类的代码都放在“{”和“}”之间。
(2)写出main方法的框架
public static void main(String args[]){}
main方法是所有Java应用程序执行的起点。一个程序孩子能有一个main方法。
(3)在main方法中填写代码。
println()和print ()都是向控制台输出消息,唯一不同的是,println()在输出消息后会自动换行,而print()不会自动换行。
注意:
(1)public修饰的类名不能随便起,必须及Java文件同名。
(2)每条语句必须以“;”结尾。
(3)输出的字符串必须用双引号括起来,而且必须是英文的引号。
1.3案例:制作频道菜单
参考代码
class PinDao
{
public static void main(String arg[])
{
System.out.println("欢迎收看电视频道,请选择:");
System.out.println("\t1:少儿频道");
System.out.println("\t2:影视频道");
System.out.println("\t3:经济频道");
System.out.println("\t4:体育频道");
System.out.println("\t5:农村频道");
}
}
1.4本章小结
源程序以.java为后缀名,编译后生成的文件以.class为后缀名。
1.5实战训练
实战:开发简单的Java应用程序
参考方案
public class Practice1
{
public static void main(String args[])
{
System.out.println("姓名:张三");
System.out.println("年龄:21");
System.out.println("性别:男");
System.out.println("职业:学生");
System.out.println("住址:杭州市江干区139号");
System.out.println("电话:5");
}
}
第2章 Java语言基础
本章技能目标
(1)了解Java语言的基本符号,包括关键字、标识符、运算符和注释。
(2)了解Java语言的数据类型以及变量、常量的使用。
(3)会使用Java的运算符。
(4)掌握Java语言的控制语句,如分支语句、循环语句灯。
(5)掌握Java中数组的创建和使用。
重点和难点
(1)Java分支语句的使用。
(2)Java循环语句的使用。
(3)Java数组的声明、初始化和使用。
(4)数据类型转换。
2.1 Java符号
Java的符号可以分为:标识符、关键字、运算符和注释符号。
2.1.1标识符
在Java语言中,任何一个变量方法、对象和类都需要事先用一个名字来对它命名,这个名字就是标识符。
Java中标识符的使用有如下规定:
(1)标识符由字母、数字、美元符号“$”和下划线“_”组成,除此之外的任何其他符号是不能作为标识符使用的。
(2)标识符中的第一个字符不能为数字。
(3)标识符不能为Java的关键字,但Java的关键字可作为标识符的一部分。
(4)区分大小写,如Ad、ad、aD是不同的标识符。
(5)长度不限,但不宜过长,尽量做到知名达意。
(6)注意“_”和“-”的区别,减号是不能作为标识符的。
为了提高程序的可读性,SUN公司推荐在Java编程时使用一下的习惯约定:
(1)类名:可由一个或若干个名词组成,每个名词首字母大写,其他小写。如AccountBook、Complex Variable。
(2)接口:规则同类名。如Account。
(3)方法:由一个或多个动词组成,开头小写,动词间区分用大写,其他小写。如balanceAccount。
(4)变量:小写字母开头,单词间用大写字母讲个。如currentCustomer。
(5)常量:所有字母大写,单词间用下划线区分。如MAXIMUM_SIZE。
2.1.2关键字
关键字是Java语言本身使用的标识符,均采用小写形式。
2.1.3注释符
注释内容在编译时会被编译器忽略。
Java的注释有三种形式:单行注释、多行注释和文档注释。
(1)单行注释。也叫双斜杠注释,即在注释内容前使用一个双斜杠(//),表示从斜杠开始到本行结束都是注释内容,编译器不需要编译这部分内容。
【例2-1】单行注释示例。
class Example1
{
public static void main(String[] args)
{
System.out.println("单行注释示例"); //在屏幕上输出
}
}
(2)多行注释。这种注释以“/*”开始,以“*/”结束,两组符号必须成对出现。一般使用该注释来注销目前不再使用但仍想保留的代码行,或者像让它在调试过程中暂时失效。
【例2-2】多行注释示例。
class Example2
{
public static void main(String[] args)
{
/*
System.out.println("单行注释示例"); //在屏幕上输出
*/
System.out.println("多行注释示例");
}
} //程序结束
(3)文档注释。文档注释主要放在类、接口、方法和成员变量定义的前面,用于对这些对象的解释。除了便于阅读理解外,主要目的是为了用Javadoc工具生成API文档。这种注释以“/**”开始,以“*/”结束。
【例2-3】文档注释示例。
/**
* 标题:文档注释
* 描述:距离说明文档注释的注释方法
* 版权:Copyright(c)2008
* 公司:XXX
*@version version1.5
*/
class Example3
{
public static void main(String[] args)
{
System.out.println("文档注释示例");
}
} //程序结束
2.1.4运算符及分隔符
运算符,是用来执行某种运算(如加法+、减法-、乘法*)的符号。
Java中的运算符有很多,如算术运算符、逻辑运算符、关系运算符灯。
分隔符是为了将程序代码组织成编译器可以理解的形式,常见的分隔符有()、{}、[]、;和空格。
2.2 Java数据类型及使用
Java语言中包含两大类数据类型:基本数据类型和引用数据类型(如图2-1所示)。
Java的基本数据类型长度是固定的,可以跨平台自由移植。
在Java中,基本数据类型主要有4种。
1.整数型
Java定义了4种整数类型:byte、short、int、long,见表2-2
2.浮点型
浮点数即实数,包括整数和小数两部分。
Java中有两种浮点数—float和double,分别代表单精度型和双精度型。
3.字符型
在Java中,用于存储字符的数据类型是char。
4.布尔值
在Java中,用于存储布尔值的数据类型是boolean,占1位,其布尔常量只有两个值:true和false。
引用数据类型是指由基本数据类型组合成的较复杂的数据类型。
不同类型的数据既可以以变量的形式出现,也可以以常量的形式出现。
变量的值在程序执行期间是可变的,而常量的值是不可改变的,它们都代表内存中指定的存储单元。
将数据指定给变量,就是将数据存储至对应的内存空间;调用变量,就是将对应的内存空间的数据取出来使用。
在Java中要使用变量,必须先进行定义。
其语法为:
数据类型 变量名[=初值];
double javaScore=98.5;//定义一个双精度浮点型变量javaScore存储分数
String name=”jenny”;//定义一个字符串变量那么存储姓名
char sex=”女”;//定义一个字符型变量sex存储性别
变量必须经定义初始化后才能使用,否则编译器在编译时会报告这个错误。
variable var might not have been initiallzed.
在Java中写下“0.0”这么一个常数,其默认为double数据类型。
【例2-4】各种类型变量的使用。
class Example4
{
public static void main(String[] args)
{
int ageOfStudent = 3;
double scoreOfStudent = 90.0;
char levelOfStudent = 'A';
System.out.println("年级,得分,等级");
System.out.println(ageOfStudent+","+scoreOfStudent+","+levelOfStudent+",");
}
}
2.2.3常量
常量是不可改变的数值,按其类型可以分为整型常量、浮点型常量、布尔型常量、字符常量和字符串常量。
(1)整型常量。可分为int型和long型,默认为int型,long型在数值后加L。
(2)浮点型常量。有单精度和双精度之分,缺省为双精度,单精度在数值后加f,双精度在数值后加d或者D。
(3)布尔型常量。布尔常量只包括true和false两个值,表示逻辑运算结果的真或假。
C语言中布尔值用1或者0来表示。
(4)字符常量。用单引号(’’)括起来的一个字符。如’a’,’H’。
Java语言可使用转义字符转’\’来标记特殊字符。常用的转义字符见表2-4。
(5)字符串常量。用双引号(””)括起来的一串字符,如“Good monrning”。
但在Java中,字符串常量是作为String类的一个对象来处理的,而不是一个基本数据类型。
2.2.4类型转换
类型转换有3种情况:自动转换、强制转换和使用类的方法转换。
(1)自动转换。将低精度类型数据赋给高精度类型数据时能进行自动转换。如:
byte b1 = 10, b2 = 20;
int b3 = b1 + b2; //将byte类型数据转换为int型赋给int型变量。
(2)强制转换。高精度类型到低精度类型必须强制转换,这是数据可能会丢失部分信息。如:
char key = (char)(12+55); //变量key被赋值为Unicode值为67的字符’c’
(3)使用类的方法转换。如
String str = “123”;
int a = Integer.parseInt(str); //使用Integer类的方法parseInt将String转换为对应的整数。
2.3运算符及表达式
运算符是指对操作数所进行的运算。按照操作数的数目,可分为一元运算符(如++、--)、二元运算符(如+、-)和三元运算符(如?:),分别操作一个、两个和三个操作数。
表达式是用运算符把操作对象连接起来的、符合一定规则的式子。
表达式只有两类:数值和逻辑值。
整数相除,其值为整数。如表达式3/5的值为0,而不是0.6。
2.3.1算术运算符和算术表达式
其用法见表2-5
先乘除后加减,必要时加上括号表示运算的先后顺序。
System.out.println((double)(1+2+3) / 4);
注意在上面的程序代码中使用了double限定类型转换,如果不加上这个限定,程序的输出会是1而不是1.5,这是因为在该程序中,1、2、3、4这4个数值都是整数,程序运行(1+2+3)后的结果还是整数类型,若此时处以整数4,会自动去除小数点之后的数字再进行输出,而加上double限定,表示要将(1+2+3)运算的值转换为double数据类型,这样再除以4,小数点之后的数字才不会被去除。
int testNumber = 10;
System.out.println(testNumber / 3.0); //第一种方法
System.out.println((double)testNumber / 3); //第二种方法
如果表达式中有一个浮点数,则程序就会先转换使用浮点数来运用。
当将精确度小的数据类型(如int)指定给精确度大的数据类型变量(如double)时,精确度并不会失去。
如果确定要转换数值为较小的精度,必须明确加上转换的限定符,编译器才不会报告错误。
2.3.2关系运算符和关系表达式
关系运算符用来对两个值进行比较,返回布尔类型的值true和false。
关系运算符都是二元运算符,其用法如表2-6所示。
在Java中,条件成立时以true表示,不成立时以false表示。
【例2-5】关系运算的使用。
import java.util.*;
public class ComparisonOperator
{
public static void main(String[] args){
int jeny = 75; //jeny成绩为75
Scanner input = new Scanner(System.in); //输入的一种方法
System.out.println("请输入joe的成绩:");
int joe = input.nextInt();
boolean result = jeny > joe;
System.out.println("jeny的成绩高于joe吗?" + result);
}
}
String s1 = “hello”;
String s2 = new String(“hello”);
System.out.println(s1 == s2); //显示false
System.out.println(s1.equals.(s2)); //显示true
2.3.3逻辑运算符和逻辑表达式
表2-7列出了各种逻辑运算符的运算规则。
【例2-6】逻辑运算符示例。
public class LogicalOperator
{
public static void main(String args[])
{
int number = 75;
System.out.println((number > 70 && number < 80));
System.out.println((number > 80 || number < 75));
System.out.println(!(number > 80 && number < 75));
}
}
3.4 赋值运算符和赋值表达式
见表2-8。
可以提高运算的效率。
int i = 5;
int a = --i;
i的值是4,而对应的a也是4。
2.3.5条件运算符和条件表达式
其格式如下:
条件式 ? 成立返回值 :失败返回值
【例2-7】条件运算符示例。
import java.util.Scanner;
public class ConditionalOperator
{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入学生分数:");
int scoreOfStudent = scanner.nextInt();
System.out.println("该生是否及格?" + (scoreOfStudent >= 60 ? '是' : '否'));
}
}
【例2-8】判断使用者输入的是否为奇数。
import java.util.Scanner;
public class OddDecider1
{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入数字:");
int number = scanner.nextInt();
System.out.println("是否为奇数?" + (number % 2 != 0 ? '是' : '否'));
}
}
奇数表示不能被2整除,所以余数一定不是0。
2.3.6各类运算符的优先级和结核性
见表2-9。
2.4 Java语句及控制流语句
2.4.1 Java语句
2.4.2分支控制语句
1.Java提供了if条件式语句
if、else if、else,必须是逻辑表达式,其结果必须返回false或true。
true执行完后将跳出整个条件选择语句,否则接着判断后面的条件。如果所有条件的值都是false,则执行else后面的语句。如果这个条件选择语句中没有使用else部分,则什么都不做,继续执行后面的代码。
条件选择语句中除了if必须有之外,其他部分都可以省略。
【例2-9】判断输入的数是否为奇数。
import java.util.Scanner;
public class OddDecider2
{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入数字:");
int input = scanner.nextInt();
int remain = input % 2;
if (remain == 1)
System.out.println(input + "为奇数");
else
System.out.println(input + "为偶数");
}
}
【例2-10】按考试成绩划分等级。
import java.util.Scanner;
public class ScoreLevel1
{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入考试成绩:");
int score = scanner.nextInt();
if (score >= 90)
System.out.println("优秀");
else if (score >= 80 && score < 90)
System.out.println("良好");
else if (score >= 70 && score < 800)
System.out.println("中等");
else if (score >= 60 && score < 70)
System.out.println("及格");
else
System.out.println("不及格");
}
}
if(条件式1)
if(条件式2)
语句1;
else
语句2;
执行情况?
2.switch多分支语句
switch只能比较数值或字符。
default不一定需要。
【例2-11】按成绩排名jeny可出人不同的职务,第1名可出任班长,第2名可出任学习委员,第3-5名可出任副班长,其他名词不能担任班干部。请根据目前jeny的成绩,作出判定。
import java.util.Scanner;
public class ScoreLevel2
{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入jeny的名次:");
int level = scanner.nextInt();
switch (level)
{
case 5:
case 4:
case 3:
System.out.println("可出任副班长");
break;
case 2:
System.out.println("可出任学习委员");
break;
case 1:
System.out.println("可出任班长");
break;
default:
System.out.println("不能担任班干部");
}
}
}
case5、case4中没有任何语句,也没有使用break,所以程序会继续往下执行,直到遇见break跳出switch为止。
2.4.3循环语句
循环的意思就是反复执行某一段代码,直到满足一定的结束条件为止。
Java提供了4种循环控制语句:while、do……while、for和for……each。
1.while语句
其语法如下:
while(条件){
语句;
}
如果循环体只有一个语句,则while的{}可以省略;while循环一般适用于循环次数不确定的情况。
【例2-12】输入某班级的学员成绩,并计算平均值,输入-1时,结束。
import java.util.Scanner;
public class ScoreAverage
{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
int score = 0;
int sum = 0;
int count = -1;
while(score != -1) {
count++;
sum += score;
System.out.println("请输入学员的成绩(-1结束)!");
score = scanner.nextInt();
}
System.out.println("全班平均成绩为:" + (double)sum / count);
}
}
2.do……while语句
先执行循环体,然后再进行条件判断。
do……while的语法如下所示:
do {
语法一;
语法二;
……
} while(条件式);
【例2-13】重复判断输入数据的奇偶数。
import java.util.Scanner;
public class OddDecider3
{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
int input = 0;
int replay = 0;
do {
System.out.println("输入整数值");
input = scanner.nextInt();
System.out.println("输入数位奇数?" + ((input % 2 == 1) ? 'Y' : 'N'));
System.out.println("继续(1:继续 0:结束)?");
replay = scanner.nextInt();
} while(replay == 1);
}
}
3.for语句
for(初始表达式;循环条件;循环迭代)
{语句组;
}
【例2-14】定位输出’0’~’9’字符及ASCII码,每行5个。
public class ListCharacters
{
public static void main(String args[])
{
int i = 0;
for(char c = '0';c<= '9'; c++,i++){
if(i % 5 == 0){
System.out.println("");
}
System.out.print("c: " + (int)c + "\t");
}
}
}
4.for^each循环
21 / 21
展开阅读全文