一、关键字与保留字
- 被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、false2.通常在条件判断、循环结构中使用
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类型**```javabyte 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';//97int 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;//精度损失举例2int 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);//****************//练习1char c = 'a';//97 A:65int num = 10 ;String str = "hello";System.out.println(c + num + str);//107helloSystem.out.println(c + str + num);//ahello10System.out.println(c + (num + str));//a10helloSystem.out.println((c + num) + str);//107helloSystem.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}}
