标识符
定义
Java对包、类、方法、参数和变量等要素命名时使用的字符序列称为标识符
标识符的命名规则
在标识符的命名中, 应该遵循以下命名的规则:
- 由字符(含英、中、日、俄等)、数字、下划线(_)和美元符号($ 音:dollar)组成
- 不能以数字作为开头
- 区分大小写
- 长度无限制(但是一般不要超过15个字符)
- 不能与系统关键字或者保留字重名
标识符的命名规范
- 见名知意,就是在取名时用英文,如:Student、getAge、getMax
- 驼峰式命名法
- 大驼峰命名法:每一个单词的首字母都大写
适用类型:类名,接口名
例子:SumOfSomething - 小驼峰命名法: 首字母小写,如果多个单词组成,第一个单词首字母小写,剩下的单词首字母大写
适用类型:变量名,方法名,参数名
例子:maxInTemp
- 大驼峰命名法:每一个单词的首字母都大写
- 对于包名:所有的字母都小写
- 对于常量:所有的字母都大写
关键字和保留字
关键字:Java中有一些赋予特定的含义,有专门用途的字符序列称为关键字(keyword),全部为小写
保留字:没有定义用途,但保留备用的字符序列。比如:goto、const
变量
定义
变量,可变化的量,可变化的数据,在计算机中,指的是一块数据空间,允许程序执行期间可以随时修改它的数据值,通俗一点来讲就是存数据的容器
变量三要素
- 类型:决定变量的格式和范围
- 变量名:该变量对外访问的代号
- 值:变量具体的数据值
变量的声明定义
语法1:数据类型 变量名 = 值;
public static void main(String[] args){
int number = 25;
}
语法2:数据类型 变量名;
public static void main(String[] args){
int number;
}
语法3:数据类型 变量名1,变量名2;
public static void main(String[] args){
int number1, number2;
}
语法4:声明多个变量,一些赋值一些可不赋值
public static void main(String[] args){
int number1 = 25, number2 = 30, number3;
}
注:定义在方法内部的变量使用前需要初始化值
变量的作用范围
- 全局变量
定义在方法外部,可以在整个类中使用,即便不赋值,系统也将为其初始化默认值 - 局部变量
局部变量只能其所在范围内使用。 局部变量使用前必须先赋值
注:相同作用域下变量 变量名不允许重复。不同作用域下,变量名可以重复,且使用时遵循就近原则
数据类型(重)
数据类型的分类
- 基本数据类型(8种)
- 整型:byte(1)、short(2)、int(4)、long(8)
- 浮点型:float(4)、double(8)
- 字符型:chart(2)
- 布尔型:boolean(1)
- 引用数据类型
- String
- 数组
- 自定义类
- …
整型
public static void main(String[] args){
byte number1 = 15;
short number2 = 30;
int number3 = 12345;
long number4 = 142536789L;
}
注:在定义long型,需要在数字后加上L或l
浮点型
public static void main(String[] args){
float x = 123.4f;
double pi = 3.14;
}
注:在定义float型,需要在数字后加上F或f
字符型
public static void main(String[] args){
// 标准赋值
char temp = '';
// ascii码赋值
char sex 10;
// unicode编码
char sex = '\u7537'
}
注:用单引号保存单个字符
布尔型
public static void main(String[] args){
// 标准赋值
boolean isVIP1 = false;
boolean isVIP2 = true;
}
注:boolean类型只有这两个值
类型转换
类型转换是变量赋值的一种特殊情况,详细来看分为两种
- 自动类型提升
当把一个 变量或者值赋值给一个比自身范围更大精度更高的变量时,是可以的,同时该变量或值的类型会被提升
public static void main(String[] args){
byte number1 = 11;
int number2 = number1;
double money = 52;
}
- 强制类型转换
相反,如果把一个范围更大精度更高的变量或值 赋值给一个跟小更低的变量,则编译器是拒绝的,如果非得要这么干,那么就需要强制。这样可能会导致数据精度的丢失
public static void main(String[] args){
double money = 12;
int m = (int)money;
}
数值类型精度排序
byte < short < int < long < float < double