Java:数据类型、变量、运算符、控制流程

来源:互联网 发布:密度板的甲醛 知乎 编辑:程序博客网 时间:2024/05/02 01:27

每个Java程序都要包含一个main方法,其形式如下:

public class ClassName {    public static void main(String[] args) {        program statements    }}

Java的类和C++很类似,但还是有所不同。Java中所有函数都是属于某个类的方法,因此,main方法必须有一个外壳类。
main方法的String[] args参数表明main方法接收一个字符串数组,也即命令行参数。例如运行程序时:

java Message -g cruel world

则args数组将包含:

args[0]:"-g"args[1]:"cruel"args[2]:"world"

注意到和C++不同,此处的程序名没有存储在args数组中。

数据类型

在Java中,一共有8种基本类型,包括4种整型、2种浮点类型、1种用于表示Unicode字符单元的字符类型char和1种boolean类型。

整型

类型 字节数 取值范围 int 4字节 -2147483648~2147483647(20亿) short 2字节 -32768~32767 long 8字节 -9 223 372 036 854 775 808~9 223 372 036 854 775 807 byte 1字节 -128~127

在Java中,整型的范围与运行Java代码的机器无关,这就解决了跨平台时整数溢出等问题。
Java没有无符号类型(unsigned)。

浮点类型

类型 字节数 float 4字节 double 8字节

还有3个表示 溢出和出错情况的特殊浮点数值:

  • 正无穷大 Double.POSITIVE_INFINITY
  • 负无穷大 Double.NEGATIVE_INFINITY
  • NaN(不是一个数字) Double.NaN

然而,浮点数不适用于禁止出现舍入误差的金融计算。

char类型

Unicode编码单元可以表示为十六进制值,其范围从\u0000到\uffff。
设计Unicode的目的,是要统一原先不同的编码方案。
代码点是指与编码表中某个字符相对应的代码值。例如,U+0041就是字母A的代码点。Unicode的代码点可以分成17个代码级别。
char类型用UTF-16编码描述一个代码单元。

boolean类型

和C++不同,整型值和布尔值不能相互替换。Java中的布尔值只有false和true两个值。

大数值

如果基本的整数和浮点数精度不能够满足需求,那么可以使用java.math包中的BigInteger和BigDecimal类。
BigInteger类实现了任意精度的整数运算,而BigDecimal类实现了任意精度的浮点数运算。
使用valueOf方法可以将普通的数转换成大数值:

BigInteger a = BigInteger.valueOf(100);

但遗憾的是,和C++不同,Java没有提供运算符重载功能,因此不能使用普通的算术运算符(+、-、*、\),而要使用大数值类中的add和multiply方法。

BigInteger c = a.add(b); //c=a+bBigInteger d = c.multiply(b.add(BigInteger.valueOf(2))); //d=c*(b+2)

BigInteger类的其他常用函数有:

BigInteger subtract(BigInteger other); //减BigInteger divide(BigInteger other); //除BigInteger mod(BigInteger other); //取余int compareTo(BigInteger other); //如果相等,返回0;如果小于other,返回负数;如果大于other,返回正数

变量

常量

和C++中使用const定义常量不同,Java中使用关键字final定义常量,它表示这个变量只能被赋值一次。习惯上,常量名一般使用全大写。

运算符

位运算符

“>>”和“<<”运算符将二进制位进行右移或左移操作。
注意,“>>”是用符号位填充高位,而“>>>”是用0填充高位。

数学函数与常量

在Math类中,包含了各种数学函数,例如使用sqrt方法求取平方根:

double x=4;double y=Math.sqrt(x);

其他常用的方法还有:

Math.pow(x,a)Math.sinMath.cosMath.tanMath.atanMath.atan2Math.expMath.logMath.log10

另外,Java还提供了两个用于表示π和e常量的近似值:

Math.PIMath.E

其实不必在调用方法时添加前缀“Math.”,只要在源文件的顶部加上:

import static java.lang.Math.*;

这叫做静态导入。

强制类型转换

double x=9.997;int nx=(int) x;

强制类型转换通过截断小数部分将浮点值转换为整型。
如果想进行四舍五入,那就需要使用Math.round方法:

double x=9.997;int nx=(int)Math.round(x);

调用round时仍然需要使用强制类型转换,这是因为round方法返回的结果为long类型。

控制流程

和C++不同,Java中不能在嵌套的两个块中声明同名的变量,例如下面的代码就是错误的:

public static void main(String[] args){    int n;    {        int n;    }}

终止语句

和C++不同,Java中增加了一条**带标签的**break,用于跳出多重嵌套的循环语句。标签必须放在希望跳出的最外层循环之前,并且紧跟一个冒号。

int n=0;...read_data:while(...){    ...    for(...)     {        ...        if(n<0) break read_data;    }}//检查是break跳出还是正常结束循环if(n<0){...}else{...}
0 0
原创粉丝点击