第一节 基本数据类型
Java语言的数据类型非常丰富,除了基本的数据类型以外,还有一些引用数据类型。基本数据类型包含单一的值,包括我们在学习C语言中所用到的整型、浮点型、布尔型和字符型等。在引用数据类型中,变量的值是引用另一个变量所代表的真实的值,比如数组,类和接口等。在创建一个类的同时也创建了一个新的数据类型。
1.整数类型
Java定义了4种整数类型,分别是字节型(byte)、整型(int)、短整型(short)和长整型(long)。Java不支持仅仅是正的无符号整数。所有的数值类型都有正负号,所以不要去寻找无符号的数值类型,这点一定要注意,我们在学习C语言的时候,有一个无符号型,但是在java语言中不同,请大家注意区别。
在java中,整数类型的长度实际上并不是表示它占用的存储空间,而表示的是该类变量所能表示的最大数的二进制位数。
这一点大家要注意,和C语言中的数据类型不同。但是相似的是,java中八进制的数开头都是以数字0作为开头,十六进制的数都是以0X作为开头的,这里所说的数在java中属于字节型(byte)。
Short型的整数值也有八进制,十进制,十六进制,表示方法和byte型数表示相同,例如:
Short x=068; //表示short类型的八进制数
Short y=68; //表示short类型的十进制数
Short z=0x68; //表示short类型的十六进制数
[例2.1]short类型数值的不同表示方法
Public class ShortNum
{
Public static void main(String args[])
{
Short x=0134;
Short y=134;
Short z=0x134;
System.out.println(“转换成十进制数的x=”+x);
System.out.println(“转换为十进制数的y=”+y);
System.out.println(“转换为十进制数的z=”+z);
}
}
从这个例题中我们可以看出来,short类型中也拥有十进制,八进制和十六进制数,他们的表示方法也不相同,如果我们将程序代码中的short z=0x134;换成byte z=0x134; 这是不行的,编译的时候会出现错误,因为0x134这个数值不在byte类型的范围内,在这里大家一定要注意数据的取值范围,避免编译出错。
整数类型(int)无论是在C语言中还是在java语言中都比较常用,因为int类型的数据表示的范围比较大,可以满足一般情况下的使用,如果处理较为大的数据的时候,我们可以考虑使用long类型进行处理,long类型中也有十进制,八进制和十六进制的区别,表示方法和上文所讲到的short的表示方法类似,但是需要注意一点,在数据的最后加上大写字母L,例如:
Long x=0234L;
Long y=234L;
Long z=0x234L;
同样的,我们使用一个例子加以说明。
[例2.2]long类型数的使用和表示。
Public class LongNum
{
Public static void main(String args[])
{
Long x,y,z;
X=056635L;
Y=012443L;
Z=x*y;
System.out.println(x+”*”+y+”=”+z);
}
}
在这个例子中,我们看到,我们先声明了x,y,z三个变量是整型变量,这一点和C语言比较相似,变量都是先声明,然后使用,标为蓝色加粗的那一行表示x,y在这时自动变为十进制数显示。
2.浮点型
对于浮点型,和C语言中较为相似的是,java语言中的浮点型也分为单精度和双精度型,在对变量赋初始值的时候,对单精度数值后面要加上字母F作为标记,例如float x=1.2e+7F,对于双精度浮点型而言,在变量赋初始值的时候,应在数值后加上字母D作为标记,例如,double y=2.7e+14D。
3.字符型
字符类型(char)可以转换为整数,其整数值的范围介于0至65535之间。Char字符类型以2个字节表示每一个字符(C语言中是一个字节)。定义char字符的时候,必须使用一对单引号(’’)将字符围起来,例如:char tat=‘A’。除此之外,java语言中和C语言一样,还有一种以“\”来头的字符,也称为转义字符。
\b 表示空格
\n 表示回车
\r 表示光标换行
\t 表示一个制表符(TAB)
\\ 表示反斜杠
\‘ 表示单引号
\” 表示双引号
这里面提示一点,和C语言不同的是,java可以用’a’+1表示字符’b’,但是字符数据不可以作为整数,整数也不可以代替字符使用。
4.布尔型
这个数据类型,java和C语言不同,在java中,布尔型数据不和任何整数数值对应。布尔型数据只有两个值,true 和 false。例如:
Boolean x=true;
第二部分 常量和变量
Java中的常量和变量一样,也有不同的数据类型。常量通常指的是,在运算过程中不做任何改变的量。java中有整型常量,浮点型常量,字符型常量,布尔型常量,字符串常量等。
1.数值常量
显而易见,在数值类型中,常量可以是整型,字符型和浮点型等,他们都采用十进制,八进制和十六进制进行标示。
2.字符常量
字符常量代表一个字符,java中使用Unicode作为字符集来表示字符。
3.布尔常量
布尔常量只有两个数值,true 和 false。
常量在整个程序的运算过程中不能被改变,任何尝试改变常量的行为都会被报错,在定义常量的时候我们通常用final定义。
[例2.3]java中常量的定义
Public class TestFinal
{
Public class void main(String args[])
{
Final double PI = 3.1415926;
Double r = 4.0;
Double s = PI*r*r;
System.out.println(“the square of the circle is:”+s);
}
}
在这个例子中我们可以看到,这里面的PI是常量,如果我们在定义PI的语句后面为PI这个常量再次赋值,那么程序就会出现编译错误,系统就会报错。在定义常量的时候我们有以下的约定:单词之间使用下划线进行连接,并且所有标识符都用大写字母表示。例如TAT_SDF,YAF_SSF 等等。
Java语言中,用变量(Variable)来存放在程序执行过程中变化的数据,变量在程序的执行过程中是可以修改的。Java中每个变量都有一种类型,变量的类型也决定了变量可以进行的合法操作、变量的数据性质和范围,以及变量在内存中所占的大小(一般是以字节进行计算)等等。一个变量具有三个要素:名字、类型和值,我们可以对比一下C语言中的变量,也是有名字,类型和值这三个要素组成。
1.变量的声明
和C语言一样,我们在使用java中的变量之前必须进行声明。声明变量有两个,一是给变量分配内存空间,二是为了防止错误的输入对未声明的变量进行操作。一个变量包含数据类型和标记符两个部分:
type identifier [ , identifier ];
在这个语句中,我们以identifier为名字,建立了一个type类型的变量。方括号表示可以选择,即在一条语句中可以定义多个同类型的变量,中间用逗号隔开,分号表示语句结束。
数据类型决定了我们可以对变量进行哪些操作,如何定义这个变量。另外,数据类型也决定了变量所包含的值的取值范围。在一个声明语句中我们可以声明多个变量,这多个变量中的每一个变量都具有相同的类型,各个变量之间用逗号隔开。例如:
int lenth,abc,sre;
我们在使用变量,为变量命名的时候,要注意几点问题:
①变量名必须不是一个布尔型字符(true false),关键字或者保留字null
②必须在整个作用域中是唯一的。
③必须为合法标识符。一个标识符中间不能包含空格,必须以字母,下划线或者$字符开头的一串Unicode字符。
④java语言中的变量名区分大小写。这一点要特别注意,例如:Name和NAME是两个不同的变量。
提示一点,我们在命名变量的时候最好要做到见名知意,这样方便我们以后的程序修改,编辑。
补充一点,java语言中的关键字
abstract | ||||
strictfp | ||||
throws | ||||
|
|
我们来看一个例子:
[例2.3]变量的声明
public class VariableDeclare
{
public static void main(String [] args)
{
int i=-99, j=0xabcd;
char c = ‘c’;
long m=1L,n=123456789L;
System.out.println(“i=”+i);
System.out.println(“j=”+j);
System.out.println(“c=”+c);
System.out.println(“m=”+m);
System.out.println(“n=”+n);
}
}
请各位读者自行尝试编写程序进行运行。
2.变量的作用域
变量的作用域取决于变量什么时候创建或者取消,可以在声明特定变量的时候建立相应的作用域。变量的作用域是一段特殊的代码,只有在这段代码中才能访问该变量。变量作用域的主要类型有:成员变量作用域,本地变量作用域,方法参数作用域,异常处理参数作用域。
作用域可以嵌套。内部作用域的变量对外部是不可见的,但外部作用域的变量对内部是可见的。
本地变量时在一个方法或一个方法的某个代码块内部声明的变量。一般来说,一个本地变量从它声明部分开始到代码块结束都可以被访问。他们是在主方法中声明的,所以只能在主方法中应用他们。
成员变量不能在某一个类的方法里声明成员变量,它是在类中声明的类或对象的成员。在一个类的某个方法里声明一个变量的时候,只能在该方法中访问这个变量。也就是说,该变量被看成是这个方法的本地变量。类中的静态方法只能访问静态变量,不能够访问非静态的。
下面我们通过一个例子来看这个问题。
[例2.4]变量作用域。
public class VariableArea
{
String a = “I am outside”; //类属性变量a
public void print()
{
System.out.println(s);
}
public static void main(String args[])
{
VariableArea var=new VariableArea();
String a =”I am inside”; //局部变量a
System.out.println(s);
var.print();
}
}
第三节 各种数据类型之间的转换
和C语言一样,java中也有数据类型的转换,并且同样包括自动类型转换和强制类型转换。
1.自动数据类型转换
这种数据类型的转换是很常见的,在C语言中我们讲过,一般一个数据都会最后转换为double类型进行运算,java语言也相同,我们只要了解这个过程就行。
一般的转换顺序为:
byte,short,char→int→long→float→double
2.强制数据类型转换
在C语言中,我们知道,有的时候自动类型转换不是太符合我们的想法的时候,就需要使用强制数据类型转换来完成我们的要求 。
强制数据类型转换实际上是一种显式的类型转换。其通用的格式是:
(目标类型)值
例如:
int a=10;
byte b;
b=(byte)a;
提示一点:在进行强制数据类型转换的时候,将范围大的整数强制转换为范围小的整数类型时,会进行取模操作。将双精度浮点型强制转换为整数类型时,会将小数位全部截断。