3.1关于注释
单行注释 //
多行注释 /*
*/
文档注释 /**
*/
3.2.2标识符规则
所谓标识符就是用于给程序中变量、类、方法命名的符号。Java语言的标识符必须以字母、下划线(_)、美元符($)开头,后面可以跟任意数目的字母、数字、下划线和美元符号。标识符中不可以包含空格,不能使用Java关键字和保留字,标识符的长度没有限制。
3.2.3Java关键字
Java一共包含48个关键字。其中enum是jdk1.5之后新增的关键字,用于定义一个枚举。除了这些关键字外,Java还有两个特殊的保留字goto和const,Java暂未使用这两个单词作为关键字,但可能会在未来使用其作为关键字。不仅如此,Java还提供了三个直接量:true,false,null。
3.3数据类型分类
Java语言是强类型(strongly typed)语言,也就是说每个变量和每个表达式都有一个在编译时就确定的类型,所以,所有的变量必须显示声明类型,即 所有变量必须先声明,后使用。
声明变量的语法如下: type varName;
Java语言支持的类型分为两类:基本类型(Primitive Type) 和 引用类型(Reference Type)。
基本类型包括 Boolean类型和数值类型。数值类型有整数类型和浮点类型。整数类型包括byte,short,int ,long,char,浮点类型包括float和double。有时候也把char型称为字符型,实际上字符型也是一种整数类型。
引用类型包括类、接口和数组类型,还有一种特殊的null类型。所谓引用数据类型就是对一个对象的引用,对象包括实例和数组两种。实际上,引用类型变量就是一个指针,知识Java语言里布再使用指针这个说法。
3.4基本数据类型
Java基本数据类型分为两大类:Boolean类型和数值类型。而数值类型又可以分为整数类型和浮点类型,整数类型里的字符类型也可以被单独对待。因此常常把Java里的基本数据类型分为4类,如下图所示:
Java语言里就包含了8中基本数据类型,字符串不是基本数据类型,字符串类型是一个类,也就是一个引用数据类型。
3.4.1 整型
byte : 一个byte类型整数在内存里占8位,表数范围是-128(-2^7)~127(2^7-1)
short:一个short类型整数再内存里占16位,表数范围是-32768(-2^15)~32767(2^15-1)
int :一个int类型整数再内存里占32位,表数范围是-2147 483 648(-2^31)~2147483647(2^31-1)
long :一个long类型整数再内存里占64位,表数范围是-9 223 372 036 854 775 808 (-2^63)~ 9 223 372 036 854 775 807(2^63-1)
int是最常用的整数类型,因此通常情况下,一个Java整数常量默认就是int类型。除此之外,有两种情况必须指出:
1.如果直接将一个较小的整数常量(在byte或short类型的表数范围内)赋给一个byte或short变量,系统会自动把这个整数常量当成byte或者short类型来处理。
2.如果使用一个巨大的整数常量(超出了int类型)时,Java不会自动把这个整数常量当成long类型来处理。如果希望系统把一个整数常量变成long类型来处理,应在这个整数类型后增加L作为后缀。
3.4.2 Java7 新增的二进制整数
3.4.3 字符型
字符型通常用于表示单个字符,字符常量必须使用单引号(')括起来。Java语言使用16位的Unicode字符集作为编码放方式,而Unicode被设计成支持世界上所有书面语言的字符,包括中文字符,因此Java程序支持各种语言的字符。
字符型常量有如下3种表示形式。
1、直接通过单个字符来指定字符型常量 。例如 ‘A’,’9‘
2、通过转义字符表示特殊字符型常量,例如’\n‘ 换行符,’\t‘ 回车符
3、直接使用Unicode值来表示字符型常量,格式是’\uxxxx‘,一共可以表示65535个字符,范围是‘\u0000’~'\uFFFF'.
char类型的值也可以直接作为整数类型的值来使用,但它是一个16位的无符号整数,即全部是整数,表述范围是0~65535.
如果把0~65535范围内的int整数赋给char类型变量,系统会自动把这个int整数当成char类型来处理。
char char1='a';
char char2=97;
System.out.println(char1); //a
System.out.println(char2);//a
System.out.println(char1+char2);//194
int int1=char1;
System.out.println(int1);//97
值得指出的是,Java语言中的单引号、双引号和反斜杠都有特殊的用途,如果一个字符创中包含了这些特殊字符,则应该使用转义字符的表示形式。例如,在Java程序中表示一个绝对路径: “c:\codes”,这种写法得不到我们期望的结果,因为Java会把反斜线当成转义字符,应该这样写“c:\\codes”,Java会把第一个反斜线当成转义字符,和后一个反斜线组成真正的反斜线。
3.4.4浮点型
Java的浮点类型有两种:float和double。Java的浮点类型有固定的表数范围和字段长度,字段长度和表数范围与机器无关。double类型代表双精度浮点数,float类型代表单精度浮点数。一个double类型的数值占8个字节、64位,一个float类型的数值占4个字节、32位。
Java语言的浮点类型默认是double类型。如果希望Java把一个浮点型值当成float类型处理,应该在这个浮点类型值后紧跟f或F。
除此之外,Java还提供了3个特殊的浮点数值:正无穷大、负无穷大和非数,用于表示溢出和出错。
例如使用一个整数除以0将得到正无穷大,7.5/0
使用一个负数除以0将得到负无穷大,-1.2/0
0.0除以0.0或对一个负数开方将得到一个非数。
正无穷大通过Double或Float的POSITIVE_INFINITY表示;
负无穷大通过Double或Float的NEGATIVE_INFINITY表示,
非数通过Double或Float的NaN表示。
**所有的正无穷大数值都是相等的,所有的负无穷大数值都是相等的;而NaN不与任何数值相等,甚至和NaN都不相等。
**只有浮点数除以0才可以得到正无穷大或负无穷大,因为Java语言会自动把和浮点数运算的0(整数)当成0.0(浮点数)处理。
如果一个整数除以0,则会抛出异常:ArithmeticException:/by zero(除以0异常)。
3.4.6布尔型
布尔型只有一个Boolean类型,并且其数值只能是true或false;
3.5 基本类型的类型转换
3.5.1 自动类型转换
Java中表数范围小的可以向表数范围大的进行自动类型转换,就如同有两瓶水,把小瓶的水倒入大瓶不会有任何问题。Java支持自动类型转换的类型如下图:
3.5.2强制类型转换
如果希望把上图中右边的类型转换为左边的类型,则必须进行强制类型转换,语法如下:(targetType)value.强制类型转换会造成数据丢失。
如:
以上代码不做解释。
其中这块比较典型的应用如下,生成一个随机的6位字符串:
其中还有一些容易出错的地方:
float f=4.5;这是错误的,因为浮点数默认是double类型,此处要么 float f=4.5F;要么强转 float=(float)4.5;
3.5.3表达式类型的自动提升
当一个算术表达式中包含多个基本类型的值时,整个算术表达式的数据类型将发生自动提升。Java定义了如下的自动提升规则。
1.所有的byte类型、short类型和char类型将被提升到int类型。
2.整个算术表达式的数据类型自动提升到与表达式中最高等级 操作数同样的类型。
short sValue=5;
sValue=sValue-2;//出错 sValue-2表达式的类型将被提升到int类型,这样就把右边的int类型值赋给左边的short类型变量,从而引起错误。
sValue-=2;//正确
3.6 直接量
字符串常量池
常量池(constant pool)指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。它包括关于类、方法、接口中的常量,也包括字符串直接量。
<span style="white-space:pre"> </span>String s1="abcd";
String s2="abcd";
String s3="ab"+"cd";
String s4=new String("abcd");
String s5=new String("abcd");
System.out.println(s1==s2);//true
System.out.println(s1==s3);//true
System.out.println(s1==s4);//false
System.out.println(s4==s5);//false
3.7 运算符
System.out.println(3.0/0);//Infinity
System.out.println(3.0%0);//NaN
3.7.6逻辑运算符
&& 短路与,前面的返回FALSE,后面的将不再判断
& 不短路与,不会短路,都会计算
|| 短路或,前面的返回TRUE,后面的将不再判断
| 不短路或,不会短路,都会计算
!非
^ 异或 当两个操作数不同时才返回TRUE,相同则返回FALSE。
第三章先到这,基本上都是从书上摘抄的原话。以后得锻炼做一些个人的总结。