java 编程基础
java程序是由类和对象组成的,而对象和类又是由方法和变量组成的。方法是由语句和表达式组成的,表达式又由运算符组成。
2.1 语句和表达式
- 在编程语言中,语句是简单的命令,它导致计算机执行某种操作。
- 生成一个值的语句被称为表达式,而语句生成的值称为返回值。
- 在java中,使用左大括号({)和右大括号(})将语句编组。位于这两个字符之间的语句称为块(block)或块语句(block statement),这将在第4章更详细的介绍。
2.2 变量和数据类型
- 变量是程序运行时能够存储数据信息的地方。
- 在Java中有三种变量
1.实例变量:定义对象的属性
2.类变量:适用于类的所有实例
3.局部变量:用于方法定义乃至方法中更小的语句块中。仅当Java虚拟机执行这些方法或语句块时,它们才被使用,离开方法或块后,它们将不复存在。
2.2.1 创建变量
- 在Java程序使用变量之前必须先创建它——声明其名称和存储的信息类型。首先指出信息类型,然后是变量名。
- 对于局部变量,在程序中使用它之前,必须给它赋值,否则程序将无法编译。因此,良好的习惯是给所有局部变量指定初始值。
2.2.2 给变量命名
在Java中,变量名必须是以字母、下划线(_)或美元符($)打头。变量名不能以数字打头。在第一个字符之后,变量名可包含任何字母、数字、下划线和美元符号的组合。
- 变量的第一个字母小写
- 变量名中其他单词的第一个字母大写
- 其他字母都小写
2.2.3 变量类型
1.数据类型
除名称外,变量声明还必须包括存储的信息类型,这可以是:
- 基本数据类型,如int或boolean;
- 类名或接口名;
- 数组;
类型 | 长度 | 取值范围 |
---|---|---|
byte | 8 | -128~127 |
short | 16 | -32768~ 32767 |
int | 32 | -2147483648~ 2147483674 |
long | 64 | -9223372036854775808~9223372036854775807 |
float | 1.4E-45到2.4E+38 | |
double | 4.9E-324到1.7E+308 |
- 另一种类型是浮点数,其类型为float或double。
- char类型用于存储单个字符,如字母、数字、标点和其他符号。
- 最后一种类型是boolean。正如前面介绍过的,其取值为true或false
所有这些变量类型名都是小写的,在程序中必须这样使用它们。存在与这些数据类型名称相同,但大小写不同的类。
2.类的类型
除基本数据类型外,变量的类型还可以是类。当变量的类型为类时,它指的是这种类或其子类的一个对象。
2.2.4 给变量赋值
声明变量后,使用(“=”)给它赋值
2.2.5 常量
- 对于在程序运行过程中一直不变的值,可以用一种特殊的变量——常量。常量是值保持不变的变量。
- 在Java中,可以创建各种类型的常量:实例常量、类常量和局部常量
- 要声明常量,可在变量声明前加上关键字final,并指定初始值。
在上述语句中常量名都为大写,如DEBUG和LEFT。Java程序员都这样做,以表明这是常量而不是变量;虽然Java并未要求常量名必须大写,但您最好遵循这种做法 - 常量名由多个单词组成时,将整个常量名都大写将导致各个单词难以区分开。在这种情况下,应使用下划线将各个单词分开
final int ESCAPE_CODE = 27;
2.3 注释
- 单行注释以两个斜杠(//)打头。从这些斜杠到行尾的所有内容都是注释。
- 多行注释以 /* 打头, */ 结束。这两个分界符之间的所有内容(可以横跨多行)都被视为注释
- javadoc注释以 /**打头, */ 结束。这两个分界符之间的所有内容都被视为用于描述类及其方法的官方文档
- Javadoc注释可被诸如javadoc(JDK中的一个命令行工具)等实用程序读取。javadoc使用这种注释来创建一组网页,用于说明java类的功能、指出java类在继承层次结构中的位置、描述其每个方法。
2.4 字面量
除变量外,还可以在java语句中使用字面量。字面量可以是任何直接表示一个值的数字、文本或其他信息。
int year = 2016;
其中的字面量2016表示整数值2016.数字、字符和字符串都是字面量。
2.4.1 数字字面量
java有几种整形字面量。
- 可以在字面量后面加上字母L来指出字面量的类型为long.
- 所有的浮点数字面量都被视为double类型,而不是float类型。而要将字面量的类型指定为float,可加上字母F(或f)
- 指数表示法,例如12e22和19E-95
- 指数表示法字面量的值 3500000可以表示为 3_500_000。java编译器忽略这样的下划线
- java编译器也支持二进制、八进制和十六进制表示的数字字面量。其中二进制字面量以0b打头,如0b101(十进制5);八进制以0打头,如010(十进制8);十六进制以0x打头,如0x12(十进制18)
2.4.2 布尔字面量
布尔值true和false也是字面量。boolean变量的取值只能是true或false
- 在C中您可能认为1和true等价,而0和false等价。在Java中,情况并非如此,必须使用值true和false来表示布尔值
2.4.3 字符字面量
java使用16位的Unicode标准,除ASCII字符外,还支持其他数以千计的字符。
2.4.4 字符串字面量
- Java中的字符串是一种对象,而不是一种基本数据类型。同时,不像C语言那样,字符串被存储在数组中。
2.5 表达式和运算符
- 表达式是一条能提供值的语句。最常见的是数学表达式。
- 表达式可以是变量、字面量和运算符的任何组合,也可以是方法调用,因为方法能够将一个值返回给调用它的类或对象
2.5.1 算术运算符
+、-、*、/
2.5.2 再谈赋值
- x=y=z=7
- x*=y等
2.5.3 递增和递减运算符
x++,x–
2.5.4 比较运算符
==,!=,<, >, >=, <=
2.5.5 逻辑运算符
逻辑运算符组合:AND、OR、XOR和逻辑NOT
- &和&&的区别在于,如果使用&,则不管什么情况下,&两边的表达式都将被计算;如果使用&&,则当左边的表达式为false时,将不计算右边的表达式。因此&&的效率更高。
- 对于OR组合,可用逻辑运算符|或||。
- 用于XOR合并的逻辑运算符只有一个:^ 。仅当被合并的两个布尔表达式的值相反时,整个表达式的结果才为true;如果两个表达式都是true或都是false,则^运算符的结构为false。
- NOT组合使用逻辑运算符!,后面跟一个表达式。它对布尔表达式的值求反。
2.5.6 运算符优先级
通常情况,从先到后的顺序如下:
1.递增和递减运算;
2.算术运算;
3.比较运算;
4.逻辑运算;
5.赋值运算。
如果两个运算符优先级相同,则左边的比右边的先被处理。
2.6 字符串运算
运算符+有另一种功能:拼接多个字符串
- 拼接(concatenate)指的是将两样东西连接到一起。
运算符+将字符串、其他对象和变量合并为一个字符串。
练习题
- java中\t是制表符,表示用空格补全当前字符串为8的整数倍。