标识符与命名规范
标识符
什么是标识符
- Java对各种变量、方法和类等要素命名时使用的字符序列称为标识符
- 凡是可以自己起名字的地方都叫标识符
定义合法标识符的规则
- 由26个英文字母大小写,0-9,_或者$组成
- 数字不可以开头
- 不可以单独使用关键字和保留字,但能包含关键字和保留字
- Java中严格区分大小写,长度无限制
- 标识符不能包含空格
- 注意:在起名字时,为了提高阅读性,要尽量有意义(可以采用英文单词)
Java中的名称命名规范
- 包名:多单词组成时,所有字母都小写:xxxyyyzzz
- 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
- 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz
- 常量名:所有字母都大写,多单词时每个单词用下划线连接:XXX_YYY_ZZZ
变量的概念和定义
变量的概念
- 变量是内存中的一个存储区域
- 该区域有自己的名称(变量名)和类型(数据类型)
- Java中每个变量必须先声明,后使用
- 该区域的数据可以在同一类型范围内不断变化
定义变量的格式: 数据类型 变量名 = 初始化值 例如:int i = 2;
使用变量注意
- 需要初始化值
- 变量的作用域:一对{}之间有效
- 变量是通过使用变量名来访问这块区域的
变量的分类-按数据类型
对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间
基本数据类型
数值型
- 整数类型(byte,short,int,long)
- 浮点类型(float,double)
- 字符型(char)
- 布尔型(boolean)
引用数据类型
- 类(class)→String字符串也在这里
- 接口(interface)
- 数组([])
除了8种基本数据类型之外,其他所有的数据类型都是引用数据类型
整数类型:byte、short、int、long
- Java各整数类型有固定的表数范围和字段长度,不受具体OS的影响,以保证java程序的可移植性
- Java的整型常量默认为int型,声明long型常量必须在后面加“l”或者“L”(最好大写)
类型 | 占用存储空间 | 表数范围 |
---|---|---|
byte | 1字节=8bit | -128~127 |
short | 2字节 | -2的15次方~2的15次方 |
int | 4字节 | -2的31次方~2的31次方 |
long | 8字节 | -2的63次方~2的63次方 |
bit是什么单位? 0100110,这个就是7bit
浮点类型:float、double
- Java浮点类型也有固定的表数范围和字段长度,不受具体OS的影响
- Java的浮点型常量默认为double型,声明float型常量必须在后面加“f”或者“F”
浮点型常量的两种表示形式
- 十进制数形式:5.12 512.0F .512(必须有小数点)
- 科学计数法形式:5.12e 512E2 100e-2
类型 | 占用存储空间 | 表数范围 | 精度 |
---|---|---|---|
单精度float | 4字节 | 正负2的128次方 | 7位有效数字 |
双精度double | 8字节 | 正负2的1024次方 | 16位有效数字 |
字符类型:char
- char型数据用来表示通常意义上的“字符”(2字节)
字符型常量的表现形式
- 字符常量是用单引号(’ ‘)括起来的单个字符,涵盖世界上所有的书面语中的字符。例如:char c1 = 'a'; char c2 ='中'; char c3 = '9';
- Java中还允许是用转义字符 ‘ ’来将其后的字符转变成为特殊的字符型常量。例如char c3 = 'n',表示换行符
- char类型是可以进行运算的。因为它有对应的Unicode码。
布尔类型:boolean
boolean类型适用于逻辑运算,一般用于程序流程控制:
- if条件控制语句;
- while循环控制语句;
- do-while循环控制语句;
- for循环控制语句;
- boolean类型数据只允许取值true和false,无null
*不可以用0或者非0的整数替代false和true,这一点和C语言不同
引用数据类型:String类
- 值null可以赋值给任何引用数据类型(类、接口、数组)的变量,用以表示这个引用类型中保存的地址为空。也就是说,引用类型都可以用null作为值,可以在初始化的时候赋值为null
- String类属于引用类型,意味着可以使用null作为值
String类是一个典型的不可变类,String对象创建出来就不可能被改变。创建出的字符串存放在数据区,保证每个字符串常量只有一个,不会产生多个副本。
int i0 = 1; int i1 = 1; //以上情况会在内存中存储两个1的值 String s0 = "hello"; String s1 = "hello"; //而这种情况,不会在内存中存在两个“hello”,只存在一个“hello” /* 假设“hello”的内存地址是xxxxx,当声明s0变量时,给s0赋值“hello”,实际上是让s0变量引用“hello”的内存地址xxxxx;当我们再声明变量s1,也赋值“hello”的时候,实际上是直接把已经存在的“hello”的内存地址给s1引用 */
基本数据类型转换
- 自动类型转换:容量小的类型自动转换为容量大的数据类型。
- 有多种数据类型混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算。数字类型从小到大分别是:byte、short、int、long,float、double。
- byte、short、char之间不会相互转换,他们三者在进行计算时首先转换为int类型。
- 当把任何基本类型的值和字符串值进行连接运算时(+),基本类型的值将自动转换为字符串类型。
注意:当有一系列的+的运算的时候,如果某个部分其中含有字符串,那么这个字符串前边挨着的+号开始一直往后,都是要按照字符串拼接去看。例如:
public class Test{
public static void main(String[] args){
String str = 3 + 'a' + 5 + "b" + 2 + 6;
System.out.println(str);//输出结果是:105b26
}
}
强制类型转换
自动类型转换的逆过程,将容量大的数据类型转换成容量小的数据类型。使用时要加上强制转换符(),但可能造成精度降低或溢出,要格外注意。
byte b = 9; int i = b; //以上这两行属于正常隐式转换数据类型,是自动的 int k = 7; byte b0 = (byte)k; //这是强制转换数据类型,转换的数据类型要用英文小括号括起来
通常,字符串不能直接转换为基本类型,但通过基本类型对应的包装类,则可以实现把字符串转换成基本类型。例如:
String a = "43"; int i = Integer.parselnt(a);
- boolean类型不可以转换为其他的数据类型。