<span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13.3333px; background-color: rgb(255, 255, 255);">一、变量</span>
Java语言是强类型(strongly typed)语言,也就是说每个变量和每个表达式都有一个在编译时就确定的类型,所以,所有的变量必须显式声明类型,也就是所有的变量必须先声明,后使用。
变量定义的格式:
type varName;
举例说明:int i; byte b1;
二、数据类型之基本类型
1、数据类型的分类见下面:
2、整型数据类型
由上图整数类型分为4种:
1)byte字节型:一个byte类型的在内存里面占8位,也就是2的8次方,其定义格式是: byte b1=100;
2)short:一个short类型在内存里面占16位,也就是2的16次方,其定义格式是 short s1=32000;
3)int:一个int类型在内存里面占32位,也就是2的32次方,其定义格式是 int i1=11111;
4)long:一个long类型在内存占64位,也就是2的64次方 其定义格式是 long l2=922225546554L;要在定义数据的类型 加大写字母L
int是最常用的整数类型,因此在通常情况下,一个Java类型常量默认就是int类型。
Java中整数常量有4种表示方式:十进制、二进制、八进制和十六进制,其中八进制整数常量以0开头,十六进制的整数常量以0X或者0x开头,其中10-15以a-f(不区分大小写)来表示。二进制以0b或0B开头表示。
下面以程序来说明以上数据类型:
/*
基本数据类型之整型测试程序
作者:Gee
*/
public class 整型Test
{
public static void main(String [] args)
{
byte b1=120;
short s1=1234;
int i;
i=4234343;
long l1=156497979797L;
System.out.println("字节型数据示例:"+b1);
System.out.println("short类型数据示例:"+s1);
System.out.println("int类型数据示例:"+i);
System.out.println("long类型数据示例:"+l1);
//整型常量数据示例:
int octalValue=013; //八进制数据以0开头;
int hexValue=0X13; //十六进制数据以0X开头;
int hexValue1=0XF; //十六进数据以0-9 A-F来代表16个数据;
int binVal1=0B11010100; //二进制数据以0B开头来表示;
int binVal2=0B01101001;
System.out.println("八进制数据示例::"+octalValue);
System.out.println("十六进制数据示例:"+hexValue);
System.out.println("十六进制数据示例:"+hexValue1);
System.out.println("二进制数据示例:"+binVal1);
System.out.println("二进制数据示例:"+binVal2);
}
}
提示:所有数字在计算机底层都是以二进制形式存在的,原码是直接将一个数值换算成二进制数。但计算机以补码的形式保存所有整数。补码的计算规则:正数的补码和原码完全相同,负数的补码是其反码加1;反码是对原码按位取反,只是最高位(符号位)保持不变。
3、浮点型数据
Java语言的浮点型有两种:float和double。Java的浮点类型有固定的的表数范围和字段长度,字段长度和表数范围与机器无关。Java的浮点数遵循IEEE754标准,采用二进制数据的科学计数法来表示浮点数。对于float型数值,第1位是符号位,接下来8位表示指数,再接下来的23位表示尾数;对于double类型数值,第1位也是符号位,接下来的11位表示指数,再接下来的52位表示尾数。
Java语言的浮点数有两种表示形式:
1)十进制数形式:这种形式就是简单的浮点数,例如:5.12,512,.512。浮点数必须包含一个小数点,否则会被当成int类型处理
2)科学计数形式:例如:5.12E2(即5.12*10^2),5.12E2(5.12*10^2)
Java语言的浮点类型默认是double类型,如果希望Java把一个浮点类型值当成float类型处理,应该在这个浮点类型后紧跟f或F,举例说明:
float floValue=5.12F;
double dValue=5.12;
除此之外,Java还提供了3个特殊的浮点数值:正无穷大,负无穷大和非数,用于表示溢出和出错。
正无穷大就是一个正数除以0,Double或Float的POSITIVE_INFINITY来表示;负无穷大通过Double或Float的NEGATIVE_INFINITY表示,非数通过Double或Float的NaN来表示。
必须指出的是,所有的正无穷大数值 都是相等的,所有的负无穷大数值都是相等的;而NaN不与任何数值相等,甚至和NaN都不相等。
以下程序说明浮点型数据:
/*
基本数据类型之浮点型测试程序
作者:Gee
*/
public class 浮点型Test
{
public static void main(String [] args)
{
float floValue=51.2F; //定义Float型数据必须使用F结尾;
double floval1=5.12E2; //使用科学记数法
double d1=51.2; //定义double型不需要使用D结尾;
System.out.println("float型输出:"+floValue);
System.out.println("科学记数法输出:"+floval1);
System.out.println("double型输出:"+d1);
//以下程序测试正、负无穷大、非数是否相等
double c1=Double.POSITIVE_INFINITY;
float f1=Float.POSITIVE_INFINITY;
double c2=Double.NEGATIVE_INFINITY;
float f2=Float.NEGATIVE_INFINITY;
System.out.println(c1==f1); //输出正无穷大是否相等,相等为true;否则为false;
System.out.println(c2==f2); //输出负穷大是否相等,相等为true;否则为false;
System.out.println(0.0/0.0==Float.NaN); //输出两个0相除之后是否等NaN;
System.out.println(0.0/0.0);
}
}
基本类型:
1、字符型
字符型通常用于表示单个的字符,字符常量必须使用单引号(')括起来。Java语言使用16位的Unicode字符集作为编码方式,而Unicode被设计成支持世界上所有书面语言的字符,包括中文字符,因此Java程序支持各种语言的字符。
字符型常量有3种表示形式:
1)直接通过单个字符来指定字符型常量,例如: 'A’,'9’
2)通过转义字符来表示特殊字符型常量,例如:'\n'
3)直接使用Unicode值来表示字符型常量,格式是'\uXXX',其中XXX代表一个十六进制的整数。
Java语言中常用的转义字符见下表:
转义字符 | 说明 | Unicode表示方式 |
\b | 退格符 | \u0008 |
\n | 换行符 | \u000a |
\r | 回车符 | \u000d |
\t | 制表符 | \u0009 |
\" | 双引号 | \u0022 |
\' | 单引号 | \u0027 |
\\ | 反斜线 | \u005c |
字符型常量也可以采用十六进制编码方式来表示,范围是'\u0000'-'\uFFFF',一共可以表示65535个字符,其中前256个字符和ASCII码中字符完重合。
举例说明:
/* 基本数据类型之字符型测试程序 作者:Gee */ public class charTest { public static void main(String [] args) { //直接指定单个字符作为字符类型常量; char aChar='a'; //使用转义字符来作字符类常量; char enterChar='\r'; //使用Unicode编码值来指定字符类型常量; char ch='\u9999'; //将输出一个'香'字符 System.out.println(ch); //定义一个'疯'字符类型常量 char zhong='疯'; int zhongValue=zhong; System.out.println(zhongValue); //直接把0-65535范围内的一个int整数赋给一个char类型变量 char c=97; System.out.println(c); } }
Java没有提供字符串的基本数据类型,而是通过String类来表示字符串,由于字符串由多个字符组成,因此字符串常量使用双引号括起来。
String s=”Hello, World!”;
2、布尔型
布尔型只有一个boolean类型,用于表示逻辑上的“真”或“假”。在Java语言中,boolean类型的数值只能是true或false,不能用0或者非0代表。其他基本数据类型的值也不能转换成boolean类型。
举例说明:
/* 基本数据类型之布尔型测试程序 作者:Gee */ public class booleanTest { public static void main(String [] args) { //定义b1的值为true; boolean b1=true; //定义b2的值为false; boolean b2=false; System.out.println(b1); System.out.println(b2); //使用boolean类型的值和字符串进行连接运算,boolean类型的值会自动转换成字符串 String str=true+""; System.out.println(str); //输出字符串str; } }
3、Java7新增的数值中使用下画线分隔
为了解决看不清或者看错了太多的数据位,Java 7引入了一个新功能:程序员可以在数值中使用下划线,不管是整型数值,还是浮点型数据,都可以自由地使用下划线。
例如:
/* 基本数据类型之Java下划线测试程序 作者:Gee */ public class underscoreTest { public static void main(String [] args) { //定义一个32位的二进制数,最高位是符号位 int binVal=0B1000_0000_0000_0000_0000_0000_0000_0011; double pi=3.14_15_92_65_36; System.out.println(binVal); System.out.println(pi); } }