目录
1.1 Java概述
一、Java简介
Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 面向对象程序设计语言和 Java 平台的总称。由 James Gosling和同事们共同研发,并在 1995 年正式推出。
后来 Sun 公司被 Oracle (甲骨文)公司收购,Java 也随之成为 Oracle 公司的产品。
Java分为三个体系:
- JavaSE(J2SE)(Java2 Platform Standard Edition,java平台标准版)
- JavaEE(J2EE)(Java 2 Platform,Enterprise Edition,java平台企业版)
- JavaME(J2ME)(Java 2 Platform Micro Edition,java平台微型版)。
2005 年 6 月,JavaOne 大会召开,SUN 公司公开 Java SE 6。此时,Java 的各种版本已经更名,以取消其中的数字 "2":J2EE 更名为 Java EE,J2SE 更名为Java SE,J2ME 更名为 Java ME。
二、Java的特点
- 简单
- 面向对象
- 与平台无关 —— “一次编写,处处运行”
- 多线程
- 安全
- 动态
三、Java工作方式
源文件(*.java)——编译——字节码文件(*.class)——解释——机器码(011)
javac MyFirstApp.java java MyFirstApp
JVM(java virtual machine):将字节码文件解释为机器可以识别的二进制代码。
1.2 开发Java应用程序
一、一个简单的Java应用程序
- public class MyFirstApp声明了一个公共类,MyFirstApp是类的名称,由用户指定。
- public static void main(String[] agrs)声明了一个方法。(String[] agrs = String agrs[])
- 每个Java应用程序必须定义一个main方法,main方法是程序运行的起始位置,方法首部为public static void main(String s[]),除了括号内s可由用户自定义外,其他部分书写必须于此严格一致。
- System.out.println()实现输出功能,然后换行,光标出现在下一行的首位置。同时也可以使用System.out.print()实现输出功能,它们的区别在于后者输出内容后不换行。
二、代码编写及保存
public class MyFirstApp{
public static void main(String[] args){
System.out.println("哈哈,我的第一个Java程序!");
}
}
编写完成后,保存成MyFirstApp.java文件。
注意:
- Java规定,如果源代码中有公共类(public修饰的类),那么文件保存的名称必须和该类一致,并且main方法通常放在这个类中。
- 公共类只能写一个。
- 如果 源代码中没有公共类,那么文件名称和任意一个类名称一致就可以。
三、程序编译及运行
- DOS环境下进入相应文件夹。
- 编译源文件。——javac MyFirstApp.java
- 运行程序。——java MyFirstApp
四、初识类
这样的代码就是一个类:
可以在源程序中编一个一个或多个类,但都要符合这样的格式。
注意:
- class很重要,不能写错,它是定义类的关键字。
- class前面是访问修饰符,有时写public,有时不写。
- 如果在一个源程序中定义了多个类,则其中只能有一个公共类(public修饰),公共类的名称必须与文件名称保持拼写和大小写一致。
- class后类的名称要符合“标识符命名规则及规范”,书写要规范。
- 类的内容要在那对大括号 {} 里,不能忘记大括号。
1.3 main()方法与命令行参数
一、谁给main方法传递参数?
JVM给main()方法传递参数。具体通过DOS命令窗口中输入的实参传递给字符串数组。
二、命令行参数的使用
1.接受用户在命令行输入的内容并进行显示。
public class ArgsTest{
public static void main(String[] args){
System.out.println("您输入的第一个命令行参数是"+args[0]);
String s=args[1];
System.out.println("您输入的第二个命令行参数是"+args[1]);
}
}
编译并运行程序:
- Hello~ 123就是命令行参数。
- main()方法中args[ ]用来接收在命令行输入的数据。
- 命令行带有多个参数时,各参数之间用空格分开。
- 命令行都是字符串。
- 可以使用System.out.println( )直接输出参数内容,也可以将参数保存到String字符串类型的变量中再使用。
2.接收用户在命令行输入的两个整数,输出它们的和。
public class SumTest{
public static void main(String[] args){
int a,b,sum;
a=Integer.parseInt(args[0]); //将args[0]由字符串转换为整数
b=Integer.parseInt(args[1]); //将args[1]由字符串转换为整数
sum=a+b;
System.out.println(a+"+"+b+"="+sum);
}
}
编译并运行程序:
假设命令行参数输入了“7 3.5 ABC”,则:
- 将字符串 “7” 转换为整数 7 存到变量 a 中。 int a =Integer.parseInt(args[0]);
- 将字符串 “3.5” 转换为单精度实数 3.5 存到变量 b 中。 float b =Float.parseFloat(args[1]);
- 将字符串 “3.5” 转换为双精度实数 3.5 存到变量 c 中。double c =Double.parseDouble(args[1]);
- 得到字符串“ABC”中的第二个字符,存到变量 ch 中。char ch=args[2].chatAt(1); //位置索引值从0开始计数
用System.out.println()实现输出时,双引号内是照原样显示的内容,要输出变量、表达式的值,只需要用加号“+”把各部分连接在一起就可以了。
1.4 Java基本语法
一、基本数据类型
注意:布尔类型用来表示逻辑值,只有真、假两种取值,Java用true和false来代表。布尔类型变量不能保存这两个值之外的其他任何数据,而且不能转换为整数。
二、标识符命名规则及规范
Java标识符的命名规则:
- 由字母、数字、下划线(_)或美元符号($)组成。
- 不能用数字做第一个字符。
- 标识符区分大小写。
- 中间不能出现空格。
- 不能与关键字重名。
Java所有关键字如下:
Java的命名规范及约定:
- 每个名字可以由几个单词连接而成。
- 对于类名,每个单词的开头字母应该大写。 如MyFirstApp。
- 对于方法名和变量名,类似类名的命名规则,但第一个字母不用大写,即从第二个单词开始首字母大写。 如myMethod( )。
- 常量应该用全部大写的标识符定义。
- 包名应该全部小写。 如 java.awt.* 中的 awt 包。
三、注释语句
1.单行注释
// 注释内容
2.多行注释
/*
注释内容
*/
3.文档注释 (文档注释一般对程序的结构进行说明,如类、属性、方法和构造方法的说明,文档注释可以被提取出来形成程序文档的注释格式。)
/ * *
注释内容
* /
四、流程控制语句
三大结构 : 顺序、选择、循环
五、选择结构语句
1.单分支 if 选择结构语句
if (表达式){
//若干语句;
}
例:得到一个数的绝对值。
public class AbsTest{ //声明一个叫做AbsTest的公共类
public static void main(String[] args){ //main方法首部
int a = -7; //声明一个整型变量 a 并赋初值为-7
if(a<0)
a = -a; //如果 a 是负数就变成正的,得到绝对值
System.out.println("这个数的绝对值是"+a); //输出结果
} //main方法结束
} //AbsTest类结束
程序运行后在屏幕上显示:
2.双分支 if 选择结构语句
if(表达式){
若干语句;
}
else{
若干语句:
}
例:得到若干个整数中的较大值。
public class MaxTest{ //声明一个叫做MaxTest的公共类
public static void main(String[] args){ //main方法首部
int a=3,b=7,c=9,m=0; //声明4个整型变量并分别赋初值
m=max(a,b); //调用max方法得到a,b中的较大值存至变量 m 中
System.out.println("a 和 b 的较大值是"+m); //输出a、b的较大值
System.out.println("a、b、c 三个数的最大值是"+max(m,c)); //调用max方法得到 m 和 c 的 较大值
} //main方法结束
public static int max(int num1,int num2){ //max方法首部
//比较大小并返回较大值
if(num1>num2)
return num1;
else
return num2;
} //max方法结束
} //MaxTest类结束
程序运行后在屏幕上显示:
3.多分支 if 选择结构语句
if(表达式){
若干语句;
}
else if(表达式){
若干语句;
}
else if(表达式){
若干语句;
}
else{
若干语句;
}
例:台风预警。根据风力的所在范围,发出不同级别的预警信息。
public class StormLevel{
public static void main(String[] args){
int wind=Integer.parseInt(args[0]); //将命令行输入的风力转换为整数
if(wind<6)
System.out.println("白色台风信号");
else if(wind<=7)
System.out.println("绿色台风信号");
else if(wind<=10)
System.out.println("黄色台风信号");
else if(wind<=12)
System.out.println("红色台风信号");
else
System.out.println("黑色台风信号");
}
}
程序运行后在屏幕上显示:
if else 语句的使用注意事项:
- 条件要用小括号括起来。
- 小括号内必须是boolean类型表达式或数据。
- 小括号后不要乱加分号。
- 执行语句为多条时,要使用大括号把这一系列语句括起来。
- else 必须和 if 搭配使用。
- 多分支结构要注意 if else 的配对,建议执行语句均用大括号括起来。
- 多分支结构各个条件之间要注意共同构成的情况判断的完整性。
4.switch 多分支开关语句
switch(整数表达式){
case 常量表达式1:
若干语句;
break;
case 常量表达式2:
若干语句;
break;
case 常量表达式3:
若干语句;
break;
}
例:根据命令行输入的名次,看看能得到什么奖品。
public class RankTest{
public static void main(String args[]){
int rank=Integer.parseInt(args[0]); //将命令行输入的名次转换为整数
switch(rank){
case 1:System.out.println("得到一副羽毛球拍");break;
case 2:System.out.println("得到一副乒乓球拍");break;
case 3:System.out.println("得到一对哑铃");break;
case 4:
case 5:
case 6:System.out.println("得到一个运动水壶");break;
default:System.out.println("未取得名次,下次加油!");
}
}
}
编译及运行结果显示:
switch语句的使用注意事项:
- 小括号里的表达式只能是整型或字符型表达式。
- case中的值必须是整型或字符型常量,且互不相同。
- 多个case要执行相同的操作,可共用一组语句。
- 使用break语句完成开关功能,避免各个case执行混乱。
六、循环结构语句
1.while“当型”循环语句
while(表达式){
循环体语句;
}
例:求1~10的累加和,用while语句实现。
public class SumDemo1{
public static void main(String[] args){
int i=1,sum=0;
while(i<=10){
sum=sum+i;
i=i+1;
}
System.out.println("1~10的累加和是"+sum);
}
}
编译程序及运行:
2.do···while“直到型”循环语句
do
{
循环体语句
}while(表达式);
例:求1~10的累加和,用do···while语句实现。
public class SumDemo2{
public static void main(String[] args){
int i=1,sum=0;
do{
sum+=i;
i++;
}while(i<=10);
System.out.println("1~10的累加和是"+sum);
}
}
程序编译及运行:
3.for循环结构语句
for(表达式1;表达式2;表达式3){
循环体语句;
}
例:求1~10的累加和,用for语句实现。
public class SumDemo3{
public static void main(String[] args){
int i,sum;
for(i=1,sum=0;i<=10;i++)
sum+=i;
System.out.println("1~10的累加和是"+sum);
}
}
程序编译及运行:
4.break语句和continue语句
break语句用来结束当前循环体的执行,把控制转移到循环体下一个可执行语句。
continue语句用来跳过循环体中它后面的所有语句,控制转移到循环体的条件判断处。
例:找到能够同时被3,7,13整除的最小的数,使用break帮助实现。
public class FindNumber1{
public static void main(String[] args){
int i=13;
while(true){
/*由三个数中最大的13开始不断增大,查找,
若找到同时能够整除的数则立即退出循环,输出结果*/
if(i%3==0&&i%7==0&&i%13==0)
break;
i++;
}
System.out.println("能够同时被3,7,13整除的最小的数是"+i);
}
}
程序编译及运行:
例:在50~100之间,有谁是13的倍数?使用continue帮助实现。
public class FindNumber2{
public static void main(String[] args){
int i;
System.out.print("50~100之间13的倍数有:");
for(i=50;i<=100;i++){
if(i%13!=0) //若当前整数不能被13整除,则跳过输出进入下一循环
continue;
System.out.print(i+" ");
}
}
}
程序编译及运行:
循环结构语句的使用注意事项:
- 条件要用小括号括起来,小括号不要随便加分号。
- while与do···while语句不要忘记给变量赋初值,循环体内要有影响条件变化的语句。
- for循环语句小括号内有时根据情况可省略某些部分,如变量在前面使用赋值语句已赋好初值,则小括号内第一部分可省略。但注意两个分号无论何时都必须要写。
- 循环体为多条语句时,要用大括号将它们括起来形成复合语句。