您的位置:首页 > 编程语言 > Java开发

读书笔记(一) 疯狂JAVA讲义 第三章 数据类型和运算符

2014-07-13 17:14 375 查看
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。

第三章先到这,基本上都是从书上摘抄的原话。以后得锻炼做一些个人的总结。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java
相关文章推荐