Java基础语法
注释
1 | // 单行注释 |
标识符
类名、变量名、方法名都被称为标识符。
- 关键字不能作为标识符
- 所有的标识符都必须以字母、
$
或下划线_
开始;首字符之后还可以选择数字作为字符。 - 标识符中不能使用
#
、*
、-
等字符 - 标识符是大小写敏感的
数据类型
强类型语言
要求变量的使用严格符合规定,变量都必须先定义再使用。Java就是强类型语言。
弱类型语言
JavaScript就是弱类型语言。
Java的数据类型分为两大类
基本类型(primitive type, 8个)
数值类型
整数类型
整数类型 大小 表示范围 byte 8位 -128($-2^7$) ~ 127($2^7-1$) short 16位 $(-2^{15})$~$(2^{15}-1)$ int 32位 $(-2^{31})$~$(2^{31}-1)$ long 64位 $(-2^{63})$~$(2^{63}-1)$ - long类型的变量,赋值时需要在最后加一个L,便于和int类型区分。(不加L也能通过编译,但是可读性差;小写的l辨识度低,可读性也差)
- float类型的变量,赋值时必须在最后加一个F
浮点数类型
浮点类型 大小 float 32位 double 64位 最好完全不要使用浮点数进行比较,因为浮点数是有限位的、离散的、有舍入误差的数据类型。
那么银行类业务应该用什么数据类型表示钱?——数学工具类 BigDecimal
字符类型
char,16位,赋值使用单引号
''
。字符串String不是关键字,而是一个类,赋值使用**双引号""
**。
1
2
3
4long num1 = 30L;
float num2 = 3.14F;
char c = 'A';
String str = "AS";JDK7的特性:赋值时,可以用下划线
_
分割过长的数字(整数&浮点数均可),提高可读性。布尔类型 boolean
1位,值为
true/false
,由所占空间大小可知,**实际是使用(1/0)**来表示。
引用类型(reference type)
类
String
判断字符串是否相等
str1.equals(str2)
(重写了继承自Object的方法)而不是通过
==
来判断,因为String是引用类型中的类,==
作用于对象实际比较的是地址。String str = "test" // 实际等价于 String str = new String("test");
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
**不用创建对象的写法可以看作Java为了方便的设计,并不意味着String类是和char一样的基本类型**。
- 接口
- 数组
---
### 数据类型扩展
#### 不同进制整数的特殊表示方法
- **二**进制:**0b**开头
- **八**进制:**0**开头
- **十六**进制:**0x**开头
```java
int num1 = 0b101; // 0b开头,2进制
int i = 10;
int i2 = 010; // 0开头,8进制
int i3 = 0x10F; // 0x开头,16进制
字符转换成数字后的输出
1 | char c1 = 'a'; |
类型转换
由于Java是强类型语言,所以进行某些运算的时候,需要用到类型转换。
基本数据类型的优先级
1 | // 低 --------------------------------------------> 高 |
- 虽然float是32位表示,long是64位表示,但浮点数优先级就是比整数高。
- 布尔类型不能进行强制转换
- 对象类型不能转换为不相干的类型
- 类型转换可能存在内存溢出或者精度问题
字符串连接符
String类型的操作数**+另外类型的操作数,会将其他类型的操作数都转换成Stirng类型**后再连接。
1 | System.out.println("" + 2 + 3); // 输出23 |
变量、常量、作用域
变量 Variable
1 | // 数据类型 变量名 = 值 |
可以使用逗号隔开来声明多个同类型的变量,但是不建议这样操作(后续查找、修改的操作会变得麻烦,可读性差)。
变量的默认初始化
基本数据类型:
- 整数类型:0
- 浮点数类型:0.0
- 字符类型:’\u0000’
- 布尔类型:false
引用数据类型:
默认初始化为空值null,如String。
作用域
- 类变量:从属于类,使用关键字static修饰
- 实例变量:从属于对象,需要创建出对象后,才能使用
- 局部变量:位于方法中
e.g. 见Demo1.java文件
常量 Constant
- 初始化后不能更改,使用关键字final修饰;
修饰符不存在先后顺序
e.g. 以下两种写法等效
1 | public static final double PI = 3.14; |
变量和常量的命名规范
变量
- 首字母小写和驼峰原则:monthSalary
- 方法名的规范同变量名
- 类名要求首字母大写和驼峰原则
常量
常量一般用大写字母和下划线命名,便于和变量区分,提高可读性;
Math类
很多运算,我们会使用一些工具类来操作。
pow(double a, double b)
返回一个结果为$a^b$的double值
运算符
位运算符
位运算与普通的四则运算相比,执行效率高很多,因为位运算是直接以计算机底层的运行机制为基础操作的。
&
与|
或~
取反移位运算符
<<
左移每移1位,等效于
*2
>>
右移每移1位,等效于
/2
三元运算符x?y:z
如果x == true
,结果为y
,否则结果为z
包机制
为了更好地组织类,Java提供了包机制,用于区别类名的命名空间,包的本质 == 文件夹。
一般利用公司域名倒置作为包名
如
com.hunter
包语句的语法格式
1
package package1[.pkg2[.pkg3...]];
必须是类文件中的首句。
为了能够使用某一个包的成员,需要在Java文件中使用import语句明确导入该包
1
import package1[.pkg2...].(classname|*); // *是通配符,导入指定包下所有的类
尽量不要让不同包下的类名重复
在同一个类文件中,无法使用位于不同包下相同类名的类(会报错)
JavaDoc生成文档
javadoc
命令是用来生成API文档的文档注释
1
2
3
4/**
*
*
*/- 加在类上就是类注释
- 加在方法上就是方法注释
参数信息
- @auther 作者名
- @version 项目版本号
- @since 指明需要最早使用的jdk版本
- @param 参数名
- @return 返回值情况
- @throw 异常抛出情况