Java 标识符与数据类型
1.Java 基本语法
-
语句和语句块
- java中是以";"为语句的分隔符,一个语句可写在若干行内。例如:
x = a + b + c; x = a + b + d + e;
- 一对大括号“{}”包含的一系列语句称为语句块
- Java源程序中允许在变量,标识符,表达式,语句等代码元素之间出现任意数量的空白。空格,Tab键和换行符都是空白。在程序中适当使用空白可以是程序层次清晰,增加程序的可读性。
-
注释
Java中有如下三种注释
-
// 注释一行。表示从//开始到行尾都是注释文字
-
/* 注释一行或多行,表示从/* 开始到 * / 之间1所有的内容都是注释 */
-
/** 文档注释。表示之间的文本,将自动包含在用javadoc命令生成的HTML格式的文档中。 javadoc是JDK中API文档生成器,该工具解析一组java源文件中的声明与文档注释,生成一组HTML页面描述这些源程序中定义的类,内部类,接口,构造方法,方法与属性。JDk的API文档就是用javadoc工具生成的。 */
-
2.标识符
-
标识符的定义规则
在Java语言中采用标识符对变量,类和方法进行命名。对标识符的定义需要遵守以下规则
- 标识符是以字母,“_”(下划线),或“$”开始的一个字符序列。
- 数字不能作为标识符的第一个字符
- 标识符不能是Java语言的关键字,但可用关键字作为标识符的一部分
- 标识符的大小写敏感,且长度没有限定
例如:
username,user_name,_sys_var,$change,thisOne
-
标识符风格约定
-
对于变量名和方法名,_和$不作为标识符的第一个字符,因为这两个字符对于内部类具有特殊含义
-
类名,接口类,变量名和方法名采用大小写混合的形式,即每个单词的首字母大写,其余小写。但是变量名和方法名的第一个单词的首字母小写,而类名和接口名的第一个单词的首字母大写
变量名,方法名: anyVariabeWorld 类名,接口名: HelloWorld
-
常量名完全大写并且用_作为标识符中的各个单词的分隔符
MAXXIMUM_SIZ
-
方法名应该使用动词,类名与接口名应该使用名词
calss Account //类名 interface AccountBook //接口名 balanceAccount() //方法名
-
变量名应该能够表示一定含义,因此应尽量不适用单个字符作为变量名,但临时性变量如循环控制变量可以采用i,j,k等
-
3.关键字
Java编译器在词法扫描时,需要区分关键字和一般的标识符,因此用户自定义的标识符不能与这些关键字重名,否则会产生编译错误。另外,true,false和null虽然不是关键字,但也被java保留,同样不能用来定义标识符
java语言的关键字
abstract continue for new switch
assert default goto package synchronized
boolean do if private this
break double implement protected throw
byte else import public throws
case enum instanceof return transient
catch extends int short try
char final interface static void
class finally long strictfp volatile
const float native super while
4.基本数据类型
Java语言定义了4类共8种类型
- 逻辑性:boolean
- 文本型:char
- 整型:byte,short,int和long
- 浮点型:double和float
-
逻辑性:boolean
boolean类型数据有两种取值true和false,在机器中只占1位。boolean型变量的默认初始值为false,例如:boolean truth = true; //定义truth为boolean类型,且初始值为true /** 注意:与其他高级语言不同,java中的布尔值和数字之间不能来回转换,即false和true不对应任何零或非零的整数值 */
-
文字型:char和String
char是文字型的基本数据类型,而String是类不是基本类型-
char
char是一个16位Unicode(国际码)字符,用单引号引上。例如:char mychar = 'Q'; //mychar变量的初始值被置为Q字符对应的16位Unicode值
字符型变量的默认值是\u000
-
String
String不是基本类型而是一个类。字符串在java中是对象,在java中有两个类可以表达字符串:String和StringBuffer。一个String的对象表示一个字符串,字符串要放在双引号(“”)中。字符串中的字符也是Unicode。与C和C++不同,Java中的字符串不以’\0’为结束符。例如:
//声明了两个字符串变量并初始化 String greeting = "good morning! \n"; String anotherGreeting = "How are you?"; /** 注意:String对象表示的字符串是不能修改的。如果需要对字符串修改,应该使用StringBuffer类 */
-
-
整型:byte,short,int和long
java整数类型和char类型长度与取值范围
类型 长度 取值范围 byte 8位 -27~27-1,即-128–127 short 16位 -215~215-1,即-32768–32767 int 32位 -231~231-1,即-2147483648–2147483647 long 64位 -263~263-1,即-9223372036854775808–9223372036854775807 char 16位 ‘\u0000’~‘\uffff’,即0—65535 ==注意:==Java中所有的整数类型都是有符号的整数类型,Java中没有无符号整数类型
所有整形变量的默认初始值为0
int类型是最常用的一种整数类型
-
浮点型:double和float
java浮点类型长度与取值范围类型 长度 取值范围 float 32位 1.4e-45~3.4028235e+38 double 64位 4.9e-324~1.7976931348623157e+308 ==注意:==双精度类型double比单精度类型float具有更高的精度和更大的表示范围,但float类型具有速度快,占用内存小的优点
浮点型变量的默认初值是0.0。浮点数在运算过程中不会因溢出而导致异常处理。如果出现下溢,则结果为0.0;如果出现上溢,则结果为正或负无穷大。此外,如果出现数学上没有定义的值,如0.0/0.0,则结果将被视为非法数,表示为NaN(Not-a-Number).
5.复合数据类型
//用class定义一个日期类,将日期相关的3个变量进行封装
class MyDate{
int day;
int month;
int year;
}
//声明MyDate类的变量
Mydate a,b;
//对于变量a中的日期进行赋值
a = new MyDate();
a.day = 30;
a.month = 12;
a.year = 1999;
6.基本类型变量与引用类型变量
-
基本类型变量与引用类型变量
- 基本类型(primitive type)
基本数据类型的变量包含了单个值,这个值的长度和格式符合变量所属数据类型的要求,可以是一个数字,一个字符或一个布尔值。如图所示(3-3 a) - 引用类型(reference type)
引用类型变量的值与基本类型变量不同,变量值是指向内存空间的引用(地址)。所指的内存中保存着变量所表示的一个值或一组值。如图所示(3-3 b)
- 基本类型(primitive type)
-
两种类型变量的不同处理
-
基本类型(primitive type)
int a; //声明变量a的同时,系统给a分配了空间 a = 12;
-
引用类型(reference type)
class MyDate{ int day; int month; int year; } MyDate today; taday = new MyDate(); today.day = 14;
-
-
引用型变量的赋值
java中引用型变量之间的赋值是引用赋值
MyDate a,b; //在内存开辟两个引用空间 a = new MyDate(); //开辟MyDate对象的数据空间,并把该空间的首地址赋给a b = a; //将a存储空间的地址写到b的存储空间中