一、关键字(Keyboard)
定义:被Java语言赋予了特殊含义,用做专门用途的字符串(或单词)
特点:全部关键字都是小写字母
-
官方地址: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
说明:
-
关键字一共
50个
,其中const
和goto
是保留字
(reserved word)。 -
true
,false
,null
不在其中,它们看起来像关键字,其实是字面量,表示特殊的布尔值和空值。
二、标识符(Identifier)
定义:Java中变量、方法、类等要素命名时使用的字符序列,称为标识符。
标识符的命名规则 :
> 由26个英文字母大小写,0-9 ,_或 $ 组成
> 数字不可以开头。
> 不可以使用关键字和保留字,但能包含关键字和保留字。
> Java中严格区分大小写,长度无限制。
> 标识符不能包含空格。
标识符的命名规范 :
> 包名:多单词组成时所有字母都小写:xxxyyyzzz。
> 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz(大驼峰命名法)
> 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz(小驼峰命名法)
> 常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
注意:在起名字时,为了提高阅读性,要尽量有意义,“见名知意”。
三、变量
变量的概念:
-
内存中的一个存储区域,该区域的数据可以在同一类型范围内不断变化
-
变量的构成包含三个要素:
数据类型
、变量名
、存储的值(值最重要)
-
Java中变量声明的格式:
数据类型 变量名 = 变量值
-
变量的作用:用于在内存中保存数据。
-
使用变量注意:
-
Java中每个变量必须先声明,后使用。
-
使用变量名来访问这块区域的数据。
-
变量的作用域:其定义所在的一对{ }内。
-
变量只有在其
作用域
内才有效。出了作用域,变量不可以再被调用。 -
同一个作用域内,不能定义重名的变量。
-
Java中变量的数据类型分为两大类:
-
基本数据类型:包括
整数类型(byte、int、short、long)
、浮点数类型(float、double)
、字符类型(char)
、布尔类型(boolean)
。 -
引用数据类型:包括
数组(array)、
类(class)
、接口(interface)
、枚举
、注解
、记录
。
基本数据类型:
1.整型
-
定义long类型的变量,赋值时需要以"
l
"或"L
"作为后缀。 -
Java程序中变量通常声明为int型,除非不足以表示较大的数,才使用long。
-
Java的整型
常量默认为 int 型
2.浮点型
-
float:
单精度
,尾数可以精确到7位有效数字。很多情况下,精度很难满足需求。 -
double:
双精度
,精度是float的两倍。通常采用此类型。 -
定义float类型的变量,赋值时需要以"
f
"或"F
"作为后缀。 -
Java 的浮点型
常量默认为double型
。
说明:
-
并不是所有的小数都能可以精确的用二进制浮点数表示。二进制浮点数不能精确的表示0.1、0.01、0.001这样10的负次幂。
-
浮点类型float、double的数据不适合在
不容许舍入误差
的金融计算领域。如果需要精确
数字计算或保留指定位数的精度,需要使用BigDecimal类
。
public class Exercise1 {public static void main(String[] args) {double PI = 3.14; //圆周率double radius1 = 1.2;double radius2 = 2.5;int radius3 = 6;System.out.println("第1个圆的面积:" + PI * radius1 * radius1);System.out.println("第2个圆的面积:" + PI * radius2 * radius2);System.out.println("第3个圆的面积:" + PI * radius3 * radius3);}
}
3. 字符型
-
char 型数据用来表示通常意义上“
字符
”(占2字节) -
Java中的所有字符都使用Unicode编码,故一个字符可以存储一个字母,一个汉字,或其他书面语的一个字符。
-
字符型变量的三种表现形式:
-
形式1:使用单引号(' ')括起来的
单个字符
。例如:char c1 = 'a'; char c2 = '中'; char c3 = '9';
-
形式2:直接使用
Unicode值
来表示字符型常量:‘\uXXXX
’。其中,XXXX代表一个十六进制整数。例如:\u0023 表示 '#'。
-
形式3:Java中还允许使用
转义字符‘\’
来将其后的字符转变为特殊字符型常量。例如:char c3 = '\n'; // '\n'表示换行符
转义字符 说明 Unicode表示方式 \n
换行符 \u000a \t
制表符 \u0009 \"
双引号 \u0022 \'
单引号 \u0027 \\
反斜线 \u005c \b
退格符 \u0008 \r
回车符 \u000d -
-
char类型是可以进行运算的。因为它都对应有Unicode码,可以看做是一个数值。
4.布尔类型
-
boolean 类型用来判断逻辑条件,一般用于流程控制语句中:
-
if条件控制语句;
-
while循环控制语句;
-
for循环控制语句;
-
do-while循环控制语句;
-
-
boolean类型数据只有两个值:true、false,无其它。
boolean isFlag = true;if(isFlag){//true分支
}else{ //false分支
}
基本数据类型变量间运算规则:
在Java程序中,不同的基本数据类型(只有7种,不包含boolean类型)变量的值经常需要进行相互转换。转换的方式有两种:自动类型提升
和强制类型转换
1.自动类型提升(小变大)
规则:将取值范围小(或容量小)的类型自动提升为取值范围大(或容量大)的类型
char、byte、short --> int --> long --> float --> double
(注意:整数的默认数据类型是int,浮点数的默认数据类型是double)
(1)小范围数据类型能赋值给大数据类型
int i = 'A';
double d = 10;
(2)不同大小的数据类型变量进行运算时,结果的数据类型为运算过程中最大容量的数据类型
int i = 1;
byte b = 1;
double d = 1.0;double sum = i + b + d;//混合运算,升级为double
(3) 当byte,short,char数据类型的变量进行算术运算时,按照int类型处理。
byte b1 = 1;
byte b2 = 2;
byte b3 = b1 + b2;//编译报错,b1 + b2自动升级为intchar c1 = '0';
char c2 = 'A';
int i = c1 + c2;//至少需要使用int类型来接收
System.out.println(c1 + c2);//113
2.强制类型转换(大变小)
规则:将取值范围大(或容量大)的类型强制转换成取值范围小(或容量小)的类型。
//数据类型1 变量名 = (数据类型1)被强转数据值; ()中的数据类型必须小于等于变量值的数据类型
//以下述代码为例,变量d要从double转化为int,数据类型由大变小,所以是强制转换,就要在d前面加上(),并且在括号中写入要转化成的数据类型int。
double d = 1.2;
int num = (int)d;
(1)当把存储范围大的值(常量值、变量的值、表达式计算的结果值)强制转换为存储范围小的变量时,可能会损失精度
或溢出
。
(2)当某个值想要提升数据类型时,也可以使用强制类型转换。这种情况的强制类型转换是没有风险
的,通常省略。
(3)声明long类型变量时,可以出现省略后缀的情况。float则不同。
long l1 = 123L;
long l2 = 123;//如何理解呢? 此时可以看做是int类型的123自动类型提升为long类型//long l3 = 123123123123; //报错,因为123123123123超出了int的范围。
long l4 = 123123123123L;//float f1 = 12.3; //报错,因为12.3默认看做是double,不能自动转换为float类型
float f2 = 12.3F;
float f3 = (float)12.3;
基本数据类型与String(引用数据类型)的运算:
1、任意八种基本数据类型的数据与String类型只能进行连接“+”运算,且结果一定也是String类型
int num = 10;
boolean b1 = true;
String s1 = "abc";String s2 = s1 + num + b1;
System.out.println(s2);//abc10true//String s3 = num + b1 + s1;//编译不通过,因为int类型不能与boolean运算
String s4 = num + (b1 + s1);//编译通过
2、String类型不能通过强制类型()转换,转为其他的类型
String str = "123";
int num = (int)str;//错误的int num = Integer.parseInt(str);//正确的,借助包装类的方法才能转