二、Java 语言基础
标识符概述
Java中的标识符用来标记包、类、接口、对象、方法、变量等名称的字符序列。
标识符是以字母、下划线(__)、美元符号开头、后面可以跟随任意字母、数字、下划线、美元符号。
标识符注意
Java中的标识符不能以数字开头、对大小写敏感、标识符与关键字不能相同。
命名规则
1、类名、接口名的命名:单词的首字母大写,其他字母小写。
2、变量、方法的命名:第一个单词全小写,从第二个单词开始,单词的首字母大写,其余都小写。
3、常量的命名:每个单词都大写,单词之间用“__”连接。
4、包名的命名:包名的所有字母都小写。
关键字
Java中的关键字是有特定含义的,为编译器所保留的,不能作为标识符使用,且所有的关键字都是小写的。
用于数据处理的关键字:byte short int long float double char boolean
用于流程控制语句的关键字:if else switch case default while for break continue
方法、类型、变量的修饰的关键字:private public protected final static abstract synchronized
异常处理的关键字:try catch finally throw throws
对象相关的关键字:new extends implements class this super instance of
(用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上)
方法相关的关键字:return void
包相关的关键字:package import
其他关键字: true false null
分隔符及注释
分隔符: ; {} () . 注释: // 单行注释 /* 多行注释 */ /** 文档注释 */
变量
变量作为程序中最基本的存储单元,要素包括:变量类型,变量名,作用域
声明变量:
局部变量(local variable)
方法或语句内部定义的变量,必须先声明后赋值。
成员变量(member variable)
方法外部、类的内部定义的变量,成员变量会自动初始化
静态变量(static variable)
使用static定义,从属于类
变量和常量命名规范
- 所有变量、方法、类名:见名知意
- 类成员变量:首字母小写和驼峰原则:
monthSalary
- 局部变量:首字母大写和驼峰原则
- 常量:大写字母和下划线:
MAX_VALUE
- 类名:首字母大写,驼峰原则
- 方法名:首字母小写和驼峰原则:
run(),runRun()
数据类型:
Java中的数据类型分为两类:基本数据类型与引用数据类型
byte:1个字节 short:2个字节
int:4个字节 long:8个字节
float:4个字节 double:8个字节
char:2个字节 boolean:1位
引用数据类型:4个字节,用来代表对象的地址
整型变量/常量
十进制整数,如:99,-500,0
八进制整数,要求以0开头,如:015
十六进制数,要求 0x 或 0X 开头,如:0x15
二进制数,要求 0b 或 0B开头 如:0h01110011
浮点型变量/常量
十进制数形式,如:3.14 314.0 0.314
科学计数法形式,如314e2 314E2 314E-2 (e2 = 10^2 E-2 = 10^(-2))
注意: 浮点型变量不精确不能用于比较,如果要用于比较需要用到java.math包下的连个有用的类BigInteger和BigDecimal
字符型变量/常量
在内存中占2个字节,用Unicode编码表
Unicode具有从0到65535之间的编码,他们通常从’\u000’ 到 ‘\uFFF’ 之间的十六进制值来表示(前缀u表示Unicode)
转义字符
转义符 | 含义 | Unicode值 |
\b | 退格(backspace) | \u0008 |
\n | 换行 | \u000a |
\r | 回车 | \u000d |
\t | 制表符(tab) | \u0009 |
\” | 双引号 | \u0022 |
\’ | 单引号 | \u0027 |
\ | 反斜杠 | \u005c |
boolean类型变量
在内存中占一位(不是一个字节)不可以使用0或非0的整数来代替true和false,这点和C语言不同。boolean类型用来判断逻辑条件,一般用于程序流程控制
各类型数据间的相互转换
1.自动类型转换
自动类型转换是指从低级到高级由编译器自动完成的类型转换,规则如下
byte short int long float double
char int long float double
byte b=4; int x=b;
2.强制类型转换
强制类型转换是强制编译器进行类型转换形式,格式为: (类型)变量名
double money=76.69; int balance=(int) money;
运算符
运算符分类
算数运算符
二元运算符的运算规则:
整数运算
- 如果两个操作数有一个为Long,则结果也为Long
- 没有Long时,结果为int。即使操作数全为short,byte,结果也是int
浮点运算:
- 如果两个操作有一个为double,结果为double。
- 只有两个操作数都是float,则结果才为float。
取模运算
其操作可以为浮点数,一般为整数,结果是“余数”,“余数”符号和左边操作相同。
如:7 % 3 = 1 -7 % 3 = -1 7 % -3 = 1
算数运算符中++,- -属于一元运算符,该类运算符只需要一个操作数
赋值及其扩展赋值运算符
关系运算符
逻辑运算符
位运算符
字符串连接符
条件运算符
X ? Y : Z
运算符优先级的问题
逻辑与、逻辑或、逻辑非的优先级一定要熟悉!(逻辑非>逻辑与>逻辑或)。
如:a||b&&c的运算结果是:a||(b&&c),而不是(a||b)&&c
符号运算之 a++ 与 ++a
注意: a++ ++a
a++和++a 都属于自增运算符,区别是对变量a的值进行自增的时间不同。
a++是先进行取值,后进行自增。
++a是先进行自增,后进行取值。
例如:假设 x=3,y=4;
(1) (x++)+(++x)=8
解释:
对于第一个(x++),因为x++是先取值后自增,所以(x++)所取得值为3,然后x进行自增,此时x=4;
对于第二个(++x),因为++x是先自增后取值,所以(++x)所取得值为5,此时x=5,所以结果为8。
(2) (x++)/3+(–y)*2-(x–)%6+(y++)*3-(y–)
1+6-4+9-4=8
解释:
首先(x++)取值为3,然后x=4;然后(–y)取值为3,此时y=3;然后(x–)取值为4,然后x=3;然后(y++)取3,然后后y=4;最后(y–)取4,然后y=3;
注意:()可以提高算数优先级,所以先算括号里面的表达式,但是x++的取值为x,然后x在自增。
重点: ++ 运算优先级很高
面试题:
int i = 10 i = i++ ;
此时,i的值是多少?
答: 输入 i 的值为 10
解析:
首先 i++ 的取值结果为10, 然后 i 进行自增,此时 i=11 ,最后 进行赋值 ,所以 最后输出 i的值 为 10.