第二章 基础语法 v1.0
第一部分 语言基础
一、Java特征
基本特点图

运行内存空间分配

1.平台无关的语言
Java可运行于多个平台,如Windows,Mac OS,及其他多种UNIX版本的系统。
Java是平台无关的语言,用Java编写的应用程序不用修改就可以在不同的平台上运行。
Java虚拟机是可运行Java字节码的虚拟计算机系统,使用Java语言编写的程序,实际上是运行在JVM之上,而不是运行在操作系统上。
2.Java特点
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点,能够适应几乎任何类型的应用程序的需求,纯粹的面向对象是Java语言核心的思想与原则。
面向对象编程(OOP)的3个原则:封装性、继承性和多态性。
二、Java程序特点
1.Java的程序入口
- 每个Java程序都必须包含一个类。
- 每个Java程序(或者说类)都由public static void main(String[] args)方法开始执行。
public class Main {
public static void main(String[] args) {
//访问修饰符public:表示任何人都可以访问它
//静态修饰符static:表示该方法可以在不创建含main方法的类实例的情况下运行
//返回值类型void:表示该方法不会返回任何值
//方法名main:main是主方法的默认方法名
System.out.print("Hello World");
}
}2.Java语法规则
大小写敏感:Java是大小写敏感的,意味着标识符Hello与hello是不同的。
Java标识符:类名、变量名以及方法名都被称为标识符,关于标识符,我们应该注意以下几点:
标识符由字母、美元符、下划线或数字组成。
标识符应以字母、美元符($)、下划线(_)开始(不能以数字开始)。
Java标识符是大小写敏感的,长度无限制。
不能使用关键字作为Java标识符,关键字如class、void等等。
值与引用类型:Java中基本类型传的是值,对象(包括数组、字符串)传的是引用。
源文件名:源文件名必须和类名相同。保存文件时,应使用类名作为文件名保存,文件名的后缀为.java。
3.命名规范
- 工程名:全小写以下划线作分割,例如:my_porject
- 类名:对于所有的类来说,类名的每个单词的首字母应该大写,例如:MyJavaClass
- 方法名与变量名:第一个单词小写字母开头,后面的每个单词首字母大写,例如:myJavaVariate
- 常变量:标识符全大写,例如:JAVAPATH
4.简单Java语句
变量声明语句
基本运算(包括声明变量、自加减、复合赋值、逻辑运算、注释等)类C语言。
特别: var 关键字声明变量实现自动选择类型(Java10之后引入)。 在Java中,不同于C语言,任何局部变量使用前必须赋初值,直接使用会报错
如:
基本类型的声明与赋初值:<基本类型名> <变量名> = <变量初始值>;
创建对象语句:<类名> <对象名> = new <类的构造函数名[类名]>(<构造函数参数>);
Java中基本输入输出语句
// 输入语句
import java.util.Scanner; //导入Scanner类(键盘扫描器,非输入)
Scanner myVar = new Scanner(System.in); //创建类对象
var s1=myVar.next();
var s2=myVar.nextLine();
// 输出语句
System.out.print(); //不换行输出
System.out.println(); //换行输出二、符号与运算符
1.逻辑运算符
| 运算符 | 运算 | 说明 |
|---|---|---|
| & / && | 按位与/逻辑与 | 两边均为true时结果为true,区别在于后者可能只计算一遍 |
| | / || | 按位或/逻辑或 | 两边均为false时结果为false,区别在于后者可能只计算一遍 |
| ^ | 异或 | 两操作数同真或同假时结果为true |
| ! | 取反 | 取与后操作数的逻辑值相反的值 |
2.位运算符
| 运算符 | 运算 | 用法 |
|---|---|---|
| ~ | 按位取反 | ~var |
| & | 按位与 | var1&var2 |
| | | 按位或 | var1|var2 |
| ^ | 按位异或 | var1^var2 |
| >> / >>> | 按位右移/无符号右移 | var1>>var2(位移位数) |
| << | 按位左移 | var1<<var2(位移位数) |
3.注释
Java中基本注释语句类似于C语言
//单行注释
/*
* 这是一个多行注释
*/4.文档注释
Java中存在特殊的一种注释——文档注释,写在说明的方法之前,其允许在程序中嵌入关于程序的信息。
可以使用javadoc工具软件来生成信息,并输出到HTML文件中。Java文档注释以 /** 开始,以 */结束。
/**
* 这是一个文档注释
*//**
* @author hymsk
* @version jdk1.8.0
*/
public class Hello {
/**
* 该方法是程序的主方法,也可以叫入口方法
* @param args 该参数以字符串数组的方式接收命令行参数
* @return 返回值的说明
*/
public static void main(String[] args){
System.out.print("Hello World");
}
}Javadoc标签
| 标签 | 描述 |
|---|---|
| @author | 标识一个类的作者,一般用于类注释 |
| @deprecated | 指名一个过期的类或成员,表明该类或方法不建议使用 |
| 允许写入特殊字符等标签而不进行解析 | |
| 指明当前文档根目录的路径 | |
| @exception | 可能抛出异常的说明,一般用于方法注释 |
| 从直接父类继承的注释 | |
| 插入一个到另一个主题的链接 | |
| 插入一个到另一个主题的链接,但是该链接显示纯文本字体 | |
| @param | 说明一个方法的参数,一般用于方法注释 |
| @return | 说明返回值类型,一般用于方法注释,不能出现再构造方法中 |
| @see | 指定一个到另一个主题的链接 |
| @serial | 说明一个序列化属性 |
| @serialData | 说明通过 writeObject() 和 writeExternal() 方法写的数据 |
| @serialField | 说明一个 ObjectStreamField 组件 |
| @since | 说明从哪个版本起开始有了这个函数 |
| @throws | 和 @exception 标签一样. |
| 显示常量的值,该常量必须是 static 属性。 | |
| @version | 指定类的版本,一般用于类注释 |
Javadoc用法
javadoc [options] [包名] [源文件名]
| 名称 | 说明 |
|---|---|
| -public | 仅显示 public 类和成员 |
| -protected | 显示 protected/public 类和成员(默认值) |
| -package | 显示 package/protected/public 类和成员 |
| -private | 显示所有类和成员 |
| -d <directory> | 输出文件的目标目录 |
| -version | 包含 @version 段 |
| -author | 包含 @author 段 |
| -splitindex | 将索引分为每个字母对应一个文件 |
| -windowtitle <text> | 文档的浏览器窗口标题 |
第二部分 程序结构
一、条件结构
1.条件语句——if语句
if (条件表达式) { //Java企业级开发规范中大括号一概不省略
//如果此布尔表达式为true将执行的语句
}
else if (条件表达式) {
//如果此布尔表达式为true,且前面的布尔表达式为false将执行的语句
}
else {
//如果以上布尔表达式都为false将执行的语句
}2.条件选择结构——switch语句
switch(表达式){ //表达式可以是变量等
case value1: //常量或常量表达式
//语句块
break; //可选,若不使用后续case中的语句也都会执行
case value2:
//语句块
break; //可选
//你可以有任意数量的case语句
default: //可选
//语句块
}表达式的数据类型只能是能自动类型转化成int的类型、枚举类型、String(jdk>=1.7,但不建议使用)
case后只能跟以上类型的常量或常量表达式,且常量要求唯一
case后可以跟一段代码块,但是没有必要加{}
default和case的顺序可以更换而不影响结果(default均最后执行)
3.三目运算符
条件表达式?表达式1:表达式2; //条件表达式为True返回表达式1,条件表达式为False返回表达式2二、循环结构
1.while循环
while(条件表达式) {
//循环体
} //先判定,当指定条件为真执行循环语句2.do-while循环
do {
//循环体
}while(条件表达式); //先执行一遍语句,再判断当指定条件为真执行循环语句3.for循环
for(表达式1;条件表达式;表达式2){ //(循环前执行语句;循环条件;每次循环后执行语句)
循环体
}4.增强型for循环(for-each循环)
int[] anArray={......}; //此处int可以替换成各种元素
for(int a: anArray){ //变量a在循环体中表示每次循环对应的元素
//循环体
}