一、
在Java中,一共有8种基本数据类型,其中4种整型(int、short、long、byte),2种浮点类型(float、double),1种字符类型char,1种用于表示真值的boolean。
1、整型
类型 | 存储需求 | 取值范围 |
---|---|---|
int | 4字节 | - 2 147 483 648 ~ 2 147 483 647 |
short | 2字节 | - 32 768 ~ 32 767 |
long | 8字节 | - 9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807 |
byte | 1字节 | - 128 ~ 127 |
通常情况下,int类型最常用。在Java中,整型的范围与运行Java代码的机器无关。这就解决了软件从一个平台移植到另一个平台,或者是在同一个平台中不同的操作系统之间进行移植给程序员带来的诸多问题。
长整型数据后面有个后缀L(如1000000000L)。十六进制数值有一个前缀0x(如0xABCD)。八进制前面有一个0,如010对应八进制中的8。二进制数有一个前缀0b,例如0b1001表示9。从Java7开始,还可以为数字字面量添加下划线,如用1_000_000表示一百万。下划线只是为了使人更易读,Java编译器会去除这些下划线。
注意:Java没有任何无符号类型。
2、浮点类型
类型 | 存储需求 | 取值范围 |
---|---|---|
float | 4字节 | 大约±3.402 823 47E + 38F |
double | 8字节 | 大约±1.797 693 134 862 315 70E + 308 |
通常情况下,浮点数采用double类型。double的数据精度是float类型的两倍,也成为双精度数值。float类型的数值通常有一个后缀F(例如3.14F),没有F的默认为double类型。
用于表示溢出和出错情况的三个特殊类型的浮点数值:1、正无穷大;2、负无穷大;3、NaN(不是一个数字)。例如一个正整数除以0的结果是正无穷大。负数的平方根结果为NaN。用常量Double.POSITIVE_INFINITY(正无穷大)、Double.NEGATIVE_INFINITY(负无穷大)、Double.NaN(NaN)来表示。
3、char类型
char类型用于表示单个字符,通常用来表示字符常量。例如‘A’(单引号)是编码为65所对应的字符常量。
注意:“A”(双引号)是一个包含字符A的字符串。
4、boolean类型
boolean(布尔)类型有两个值:false和true,用来判定逻辑条件。整型值和布尔值之间不能相互转换。
二、变量
在Java中,每一个变量属于一种类型(type)。在声明变量时,变量所属的类型位于变量名之前。示例:
int age=24;
double salary;
boolean is_true=flase;
三、常量
在Java中,利用关键字final指示常量,例如final int AGE=24;关键字final表示这个变量只能被赋值一次。一旦被赋值,就不能再修改。习惯上,常量名使用全大写。如果希望某个常量可以在一个类中的多个方法中使用,通常将这些常量称为类常量。使用关键字static final设置一个类常量。例如static final int AGE=24。如果一个类常量被声明为public,那么其他类的方法也可以使用这个常量。
四、枚举类型
自定义枚举类型,枚举类型包括有限个命名的值。例如:
enum Size {S,M,L,XL};
Size sz=Size.M;
五、字符串类型
在标准Java类库中提供了一个预定义类String。每个被双引号括起来的字符串都是String类的一个实例:
String s="";
String welcomeword="hello";
1、子串
String类的substring方法可以从一个较大的字符串提取出一个子串。例如:
String s="hello";
String ss=s.substring(0,3);
ss的值为“hel”。
2、拼接
Java语言允许使用+号连接(拼接)两个字符串,还可以将一个字符串与一个非字符串的值进行拼接,后者被转换成字符串。例如:
String s1="hello";
String s2="world";
int a=1;
String s3=s1+s2+a;
s3的值为“helloworld1”。
3、不可变字符串
String类没有提供用于改变字符串的方法。如果希望将“hello”改变为“help!”,不能直接地将s1的最后两个位置的字符修改为‘p’和‘!’。需要子串+拼接的方式,例如:s1=s1.substring(0,3)+“p!”。
由于Java不能修改字符串中的字符,所以在Java文档中将String类对象称为不可变字符串。
4、检测字符串是否相等
Java可以使用equals方法检测两个字符串是否相等。例如:s1.equals(s2),如果字符串s1与字符串s2相等,则返回true;否则,返回false。如果想要检测两个字符串是否相等,而不区分大小写,可以使用equalsIgnoreCase方法。
注意:一定不能使用==运算符检测两个字符串是否相等!这个运算符只能够确定两个字符串是否放在同一物理内存中。当然,如果字符串放置在同一个物理内存中,它们必然相等。但是,完全有可能将内容相同的多个字符串拷贝放置在不同的内存中。
5、空串与Null串
空串“”是长度为0的字符串,可以通过if(str.length()==0)或者if(str.equals(""))。空串是一个Java对象,有自己的串长度(0)和内容(空)。Null串表示目前没有任何对象与该变量关联。要检查一个字符串是否为null,通过if(str==null)判断。
六、运算符
算数运算符: +(加)、-(减)、*(乘)、/(除)、%(取余)、++(自增)、--(自减)
逻辑运算符:==、!=、>、<、≥、≤、||(逻辑或)、&&(逻辑与),逻辑运算符的结果为boolean值,true或者false。
位运算符:&(与)、|(或)、~(非)、^(异或)、<<(左移)、>>(右移),位运算符是在位模式下工作的。例如6 | 9=0b0110 | 0b1001 (二进制)=0b1111(二进制) =15
三元运算符:condition?expression1:expression2;当条件condition为真时,计算第一个表达式,否则,计算第二个表达式。例如:x>y?x:y;返回x和y中较大的那个值。
注意:x+=2等价于x=x+2,是一种简化的格式书写二元算术运算符。
七、数学函数
开平方:double a=Math.sqrt(x); a的值为x开平方。
指数:double a=Math.pow(x, y);a的值为x的y次幂。
Math类还提供了一些常用的三角函数:Math.sin,Math.cos,Math.tan等,指数函数:Math.exp,对数函数:Math.log。
Java还提供两个用于表示π和e常量的近似值:Math.PI和Math.E。