一、关键字与保留字
- 被Java语言赋予了特殊含义,用做专门用途的字符串(单词)
- 关键字中所有字母都为小写
二、标识符
标识符:凡是自己可以起名字的地方都叫标识符。
- 比如:类名、变量名、方法名、接口名、包名
标识符命名规则
由26个英文字母大小写,0-9,_或$ 组成
数字不可以开头
不可以使用关键字和保留字,但能包含关键字和保留字
Java中严格区分大小写,长度无限制
标识符不能包含空格
Java中的名称命名规范:
包名:多单词组成时所有字母都小写:xxxyyyzzz
类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个
单词首字母大写:xxxYyyZzz常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
注意:
- 注意1:在起名字时,为了提高阅读性,要尽量有意义,“见名知意”
- 注意2:java采用unicode字符集,因此标识符也可以使用汉字声明,但是不建议使用
三、变量【重点】
3.1变量的概念
概念:计算机内存中的一块存储空间
3.1 变量的使用
- Java定义变量的格式:数据类型 变量名 = 变量值;
说明:
- Java中每个变量必须先声明,后使用
- 变量都定义在其作用域内。在作用域内,它是有效的。换句话说,出了作用域就失效了
- 同一个作用域内,不能定义重名的变量
3.2 java定义的数据类型
变量按数据类型来分:
基本数据类型:
- 整型:byte \ short \ int \ long
- 浮点型:float \ double
- 字符型:char(1个字符,两个字节)
- 布尔型:boolean
引用数据类型
- 类(class)
- 接口(interface)
- 数组(array)
- 变量在类中声明的位置
成员变量 VS 局部变量
3.3 整型
- 整数类型:byte、short、int、long
- java的整型常量默认为 int 型,声明long型常量须后加‘l’或‘L’
- java程序中变量通常声明为int型,除非不足以表示较大的数,才使用long
public class VariTest {
public static void main (String[] args){
//1.整型:byte(1字节=8bit)\short(2字节)\int(4字节)\long(8字节)
//byte范围:
byte b1 = 12;
byte b2 = -128;
System.out.println(b1);
System.out.println(b2);
//声明long变量,必须以”l“或”L“结尾
//通常,定义整型变量时,使用int型
short s1 = 128;
int i1 = 1234;
long l1 = 12345678;//从int型自动转为long型
long l1 = 12345678L;
System.out.println(l1);
}
}
3.4 浮点型
- 与整数类型类似,Java 浮点类型也有固定的表数范围和字段长度,不受具体操作
系统的影响。
浮点型常量有两种表示形式:
- 十进制数形式:如:5.12 512.0f .512 (必须有小数点)
科学计数法形式:如:5.12e2 512E2 100E-2
- 十进制数形式:如:5.12 512.0f .512 (必须有小数点)
float:单精度,尾数可以精确到7位有效数字。很多情况下,精度很难满足需求。
double:双精度,精度是float的两倍。通常采用此类型。
Java的浮点型常量默认为double型,声明float型常量,须后加‘f’或‘F’
浮点型,表示带小数点的数值
float表示的数值范围比long还大
定义float类型变量时,要以”f“或”F“结尾(因为默认是double)
通常,定义浮点型变量时,使用double型(范围更大,精度更高)
/*定义float类型变量时,要以”f“或”F“结尾*/
float f1 = 12.3F;
3.5字符型
字符型:char(1字符=2字节)
- 定义char型变量,通常使用一对‘ ’(单引号) ```java //字符型:char(1字符=2字节) //定义char型变量,通常使用一对’’,内部只能写一个字符 char c1 = ‘a’; c1 = ‘A’; System.out.println(c1);
char c2 = ‘1’; char c3 = ‘中’; System.out.println(c2); System.out.println(c3);
-
Java中还允许使用转义字符‘\’来将其后的字符转变为特殊字符型常量。
<br />例如:char c3 = ‘\n’; // '\n'表示换行符
-
可以使用ASCII
-
可以用unicode字符集
<a name="ee08ce60"></a>
#### 3.6布尔类型
1.
boolean只能取两值之一:true、false
2.
通常在条件判断、循环结构中使用
boolean isMarried = true; if(isMarried){i System.out.println(“你就不能参加单身party了!很遗憾”); System.out.println(“你就不能参加\”单身\”party了!\n很遗憾”); }else{ System.out.println(“你可以多谈谈女朋友”); }
<a name="8424d49c"></a>
## 四、类型转换
<a name="466841f2"></a>
#### 4.1基本数据类型之间的运算规则
前提:这里讨论的只是七种基本数据类型变量间的运算。不包含boolean类型的。
1.
自动类型提升:
<br />当容量小的数据类型的变量与容量大的数据类的变量做运算时,结果自动提升为容量大的数据类型
<br />**byte、char、short** --> int --> long --> float --> double
<br />特别的:当byte、char、short三种类型的变量做运算时,结果为int类型
<br /> **同种类型运算结果也是int类型**
```java
byte b1 = 2;
int i1 = 129;
byte b2 = b1 +i1;//编译不通过
int b2 = b1+i1;//转换成int型
long l1 = b1+i1;//转换成long型
System.out.println(b2);
float f = b1+i1;//转换成float型
System.out.println(f);
short s1 = 123;
double d1 = s1;//转换成double型
System.out.println(d1);
char c1 = 'a';//97
int i3 = 10;
int i4 = c1+i3;
System.out.println(i4);
short s2 = 10;
//short s3 = c1 + s2;编译不通过
byte b2 = 10;
//char c3 = c1 + b2;编译不通过
//short s3 = b2 + s2;编译不通过
//short s4 = b1+b2;编译不通过
强制类型转换:
需要使用强转符:()
注意点:强制类型转换,可能导致精度损失
说明:此时的容量大小指的是,表示数的范围的大和小。比如:float容量要大于long的容量
class VariTest2{
public static void main(String[] args){
double d1 = 12.3;
//精度损失举例
int i1 = (int)d1;//截断操作
System.out.println(i1);
//没有精度损失
long l1 = 123;
short s2 = (short)l1;
//精度损失举例2
int i2 = 128;
byte b = (byte)i2;
System.out.println(b);//-128
}
}
- 变量运算两种特殊情况
class VariTest4{
public static void main(String[] args){
//编码情况1;
long l = 123123;//定义long型没加L,实际上将123123作为int型,然后进行自动类型转换
System.out.println(l);
//过大的整数,编译失败,结尾没加L
//long l1 = 123123123123123;
long l1 = 123123123123123l;//编译通过
//****************
//默认为double型,往float转,编译失败
//float f1 = 12.3;
float f1 = 12.3f;
//编码情况2;
//整型常量,默认类型为int型
//浮点型常量,默认类型为double型
byte b = 12;
//byte b1= b +1;//编译失败
//float f1 = b + 12.3;//编译失败
}
}
五、String类型
String类型变量的使用
String属于引用数据类型,字符串
声明String类型变量时,使用一对“ ”
String可以和8种基本数据类型变量做运算,且运算只能是连接运算;+
运算结果仍然是String类型
class StringTest{
public static void main(String[] args){
String s1 = "hello,world";
System.out.println(s1);
String s2 = "a";
String s3 = "";
//char c = '';//不放字符,编译不通过(必须放一个字符)
//****************
int number = 1001;
String numberStr = "xuehao";
String info = numberStr + number;//+:连接运算
System.out.println(info);
boolean b1 = true;
String info1 = info + b1;//+:连接运算
System.out.println(info1);
//****************
//练习1
char c = 'a';//97 A:65
int num = 10 ;
String str = "hello";
System.out.println(c + num + str);//107hello
System.out.println(c + str + num);//ahello10
System.out.println(c + (num + str));//a10hello
System.out.println((c + num) + str);//107hello
System.out.println(str + num + c);//hello10a
//练习2
//* *
System.out.println("* *");
System.out.println('*' + '\t' + '*');//表示加法
System.out.println('*' + "\t" + '*');//表示连接
System.out.println('*' + '\t' + "*");//后面是连接
System.out.println('*' + ('\t' + "*"));
//****************
//String str1 = 123;//编译不通过
String str1 = 123 + "";
System.out.println(str1);//"123"
//int num1 = str1;//编译失败
//int num1 = (int)str1;//不通过
int num1 = Integer.parseInt(str1);
System.out.println(num1);//123
}
}