2.1 Java 的基本语法
2.1.1 Java 代码的基本格式
修饰符 class 类名{
程序代码
}
在编写Java代码时,血药特别注意几个关键:
Java 中的程序代码可分为结构定义语句和功能执行语句,其中,结构定义语句用于声明一个类或方法,功能执行语句用于实现具体功能。每条执行语句最后都必须用分号(;)结束。如下:
System.out.println("这是第一个Java程序!");
值得注意的是,程序不要将英文(;)误写成中文(;),否则编译器会报“illegal character”(非法字符)这样的错误信息。
- Java程序是严格区分大小写的;
在编写Java 代码时,为了便于阅读,通常会采用良好的方式进行排版,但这并不是必需的,出于可读性的考虑,应该让自己编写的程序代码整齐美观、层次清晰、通常会采用下面这种形式:
public class HelloWorld{ public static void main(String[] args){ System.out.println("这是我的第一个java程序"); } }
Java 程序中一句连接的字符串不能分开在两行书写(为了便于阅读,对过长的字符串可以用(+)连接)
例如:System.out.println("这是我的第一个"+ "java程序");
2.1.2 Java 中的注释
1. 单行注释
单行注释通常用于对程序中的某一行代码进行解释,用符号“//”表示,“//”后面为被注释的内容,具体示例如下:
int c = 10; //定义一个整形变量
2. 多行注释
多行注释顾名思义就是在注释中的内容可以为多行,它以符号“/* ”开头,以符号“*/”结尾,多行注释具体示例如下:
/* int c = 10;
int c = 5; */
3. 文档注释
文档注释是以“/** ”开头,并在注释内容末尾以“*/ ”结束。文档注释是对一段代码概括的解释说明,可以使用javadoc命令将文档注释提取出来生成帮助文档,关于这点将在后面学习接触。
脚下留心
在Java中,有的注释可以嵌套使用,有的则不可以,下面列出两种具体的情况。
1、多行注释“/*…*/”中可以嵌套单行注释“//”,例如:/* int c = 10; //定义一个整形变量 int c = 5; */
2、多行注释“/*…*/”中不能嵌套多行注释“/*…*/”,例如:
/* /* int c = 10; */ int c = 5; */
上面的代码无法通过编译的
2.1.3 Java 中的标识符
在编程过程中,经常需要在程序中定义一些符号来标记一些名称,如包名、类名、方法名、参数名、变量名等,这些符号被称为标识符。标识符可以由任意顺序的大小写字母、数字、下划线(_)和美元符号($)组成,但标识符不能以数字开头,不能是Java的关键字,否则代码在编译时会报错。
为了增强代码的可读性,建议初学者在定义标识符时还应该遵循以下规则:
- 项目的命名规则:单词首字母大写(英文);
- 包的命名规则:所有字母一律小写,公司域名的倒序(com.baidu);
- 类的命名规则:类名首字母大写;
- 常量名命名规则:所有字母都大写,单词之间用下划线(_)连接,例如DAY_OF_MONTH;
- 变量名命名规则:首字母(字母;下划线‘’;美元符号‘’)其余部分(任意字母,任意数字,‘’,’$’)不能是关键字
2.1.4 Java 中的关键字
关键字是编程语言里事先定义好并赋予了特殊含义的单词,也称作保留字。和其他语言一样,Java中保留了许多关键字,例如,class、public等。
- 所有的关键字都是小写的;
- 程序中的标识符是不能以关键字命名的。
2.1.5 Java 中的常量
常量就是在程序中固定不变的值,是不能改变的数据。例如数字1、字符’a’、浮点数3.2等。在Java中,常量包括整形常量、浮点数常量、布尔常量、字符常量等。
1. 整形常量(二进制、八进制、十进制、十六进制4种表达形式)
- 二进制:有数字0和1组成的数字序列。JDK7.0允许字面值来表示进制数,前面以0b或0B开头,为了和十进制区分,如:0b01101100、0B10110101。
- 八进制:以0开头并其后由0~7范围内(包括0和7)的整数组成的数字序列。如:0342。
- 十进制:由数字0~9范围内(包括0~9)的整数组成的数字序列。如198。
- 十六进制:以0x或者0X开头并且其后由0~9、A~F(包括0和9、A和F)组成的数字序列。如:0x25AF。
2.浮点数常量(float单精度浮点数、double双精度浮点数)
其中,单精度浮点数后面以F或f结尾,而双精度浮点数则以D或d结尾。
2e3f 3.6f 0f 3.9d 5.201+12f
3.字符常量
'a' '1' '&' '\r' '\u0000'
上面的示例中,’\u0000’表示一个空白字符,即在单引号之间没有任何字符。之所以能这样表示,是因为Java采用的是Unicode字符集,Unicode字符以’\u’开头,空白字符在Unicode码表示中对应的值为’\u0000’。
4.字符串常量
"HelloWorld" "123" "Welcome \n XXX" ""
一个字符串可以包含一个字符或多个字符,也可以不包含任何字符,及长度为零。
5.布尔常量
布尔常量即布尔型的两个值true和false,该常量用于区分一个事物的真与假。
6.null常量
null常量只有一个值null,表示对象引用为空。
扩展
整形常量进制之间的转换
特殊字符—-反斜杠(\)是特殊字符,被称作转义字符。下面常见的转义字符:
- \r 表示回车符,将光标定位到当前行的开头,不会跳到下一行。
- \n 表示换行符,换到下一行的开头。
- \t 表示制表符,将光标移到下一个制表符的位置,就像在文档中用Tab一样。
- \b 表示退格符,就像键盘上的Backspace键。
2.2 Java 的变量
2.2.1 Java 变量的定义
在程序运行期间,随时可能产生一些临时数据,应用程序会将这些数据保存在一些内存单元中,每个内存单元都用一个标识符来标识。这些内存单元被称为变量,定义的标识符就是变量名,聂村单元中存储的数据就是变量的值。
int x= 0,y;
y=x+3;
上面代码中,第一行代码的作用是定义了两个变量x和y,也就相当于分配了两块内存单元,在定义变量的同时为变量x分配了一个初始值0,而变量y没有分配初始值。如图2-2所示;
第二行代码的作用是为变量赋值 ,在执行第二行代码,程序首先取出变量x的值,与3相加后,将结果赋值给变量y,此时变量x和y在内存中的状态发生了变化,如图2-3所示。
2.2.2 Java 变量的数据类型
在Java中变量的数据类型分为两种,即基本数据类型和引用数据类型。如图
- 输出Java课考试最高分:98.5
- 输出最高分学员姓名:张三
输出最高分学员性别:‘男’
public class Example01 { public static void main(String[ ] args) { double score = 98.5; String name = "张三"; //双引号 char sex = '男'; //单引号 System.out.println("本次考试成绩最高分: " + score);//连接输出信息 //输出其他…… } }
2.2.3 Java 变量的类型转换
程序中经常会遇到要将数据类型进行转换的情况(如:在一个表达式中存在不同类型的操作数时),数据类型转换有两种情况:
自动类型转换
/** * *某班第一次Java考试平均分81.29,第二次比第一次多2分,计算第二次考试平均分? */ class Example02{ public static void main(String[] args){ double firstAvg = 81.29; //第一次平均分 double secondAvg; //第二次平均分 int rise = 2; secondAvg = firstAvg + rise; //自动类型转换 System.out.println("第二次平均分是:" + secondAvg); } }
在某种条件下,系统自动完成类型转换:
–两种类型兼容
例如:int 和 double 兼容
–目标类型大于源类型
例如:double 型 大于 int 型
–对于表达式
如果一个操作数为double型,则整个表达式可提升为double型强制类型转换
/** * *去年Apple笔记本所占的市场份额是20,今年增长的市场份额是9.8,求今年所占的份额? * */ class Example03{ public static void main(String[] args){ int before = 20; //apple笔记本市场份额 double rise = 9.8; //增长的份额 int now = before + rise; //现在的份额 /*编译出错:不能完成 自动类型转换。 *应该更改为:int now = before + (int)rise; //强制类型转换 */ } }
在某种条件下,需要程序员强制转型
–两种类型兼容
例如:int 和 double 兼容
–目标类型小于源类型
例如:int 型小于double 型定义:不同数据类型之间互相转换
1、自动类型转换
char -> int byte | short -> int
int -> long int -> double int -> float float -> double
2、强制类型转换
在八种基本数据类型中,基本一般是将高精度,长类型数据转换成低精度,短类型数据,如:
double -> float , long -> int , int -> char| byte| short在引用数据类型中,一般是将有继承关系的类进行强转。
2.2.4 Java 变量的作用域
变量需要在它的作用域范围内才可以被使用,这个作用范围称为变量的作用域。下面用个案例熟悉变量的作用域。
class Example03{
public static void main(String[] args){
int x=12; //定义了变量x
{
int y=96;
System.out.println("x is"+x);//访问变量X
System.out.println("y is"+y);//访问变量y
}
y=x; //访问变量X,为变量y赋值
System.out.println("x is"+x); //访问变量X
}
}
编译程序报错,结果如图2-4所示:
出错的原因在于在给变量y赋值时超出了它的作用域。去掉第九行,则编译成功。