Java学习笔记(二)

与Java数据类型、变量、常量、运算符有关的探讨:

 1、Java数据类型

 在Java中,一共有8种基本类型(primitive type),其中有4种整形、2种浮点类型、字符类型char和boolean类型。

4种整型分别为int、short、long、byte。

通常情况下,int类型最常用。在int类型不够的情况下用long类型。short和byte类型主要用于特定的应用场合,例如底层

文件处理或者需要控制占用存储空间量的大数组。

 长整型数值有一个后缀L(例如 5000000000000L)。十六进制数值有一个前缀0X或者0x(例如0xCCAB)。二进制数值

一个前缀0b或0B(例如0b1001)。

  2种浮点类型float、double。

double类型所能表示的数值精度是float类型的两倍,这也就是为什么有人称double类型为双精度浮点类型的原因。绝大

数情况下都采用double类型,因为float类型很难满足需求。

  float类型的数值有一个后缀F或f(例如,3.14F)。没有后缀或者后缀为D或d的浮点数默认为double类型。

警告:浮点数值不适用于无法接受舍入误差的金融计算中。

  例如,命令System.out.println(2.0 - 1.1) 将打印出0.8999999999999999,而不是人们想像出来的0.9。

  这种舍入误差的主要原因是浮点数值采用二进制系统表示,而二进制系统无法精确的表示1/10。这就好像十进制无法

确的表示1/3一样。如果在数值计算中不允许任何舍入误差,应该使用BigDecimal类。

  char类型。

强烈建议不要在程序中使用char类型,除非确实需要处理UTF-16代码单元。最好将字符串作为抽象数据类型处理。

boolean类型。

boolean(布尔)类型有两个值:false和true,用来判定逻辑条件。注意,整型值和布尔型值之间不能进行相互转换。

注释:在C++中,数值可以代替boolean值。值0相当于布尔值false,非0值相当于布尔值true。在Java中则不可以这样。

2、Java的变量

 与Java变量有关的讨论并不多,主要在以下两点:

 第1点,虽然可以在一行中声明多个变量,例如:

 int i,j;

但是,不提倡这种风格。逐一声明每个变量可以提高程序的可读性。

 第2点,尽量把变量的声明尽可能靠近该变量第一次使用的地方,这依旧是个编程风格问题。

3、Java的常量

 在Java中,用关键字final指示常量。例如:

final double PI = 3.14;

关键字final表示这个变量只能被赋值一次。一旦被赋值之后,就不能再更改了。习惯上,常量名使用全大写。

在Java中,经常希望某个常量可以在一个类的多个方法中使用,通常将这种常量称为类常量。例如:

public class HelloWorld {
	
	public static final double PI = 3.14;

	public static void main(String[] args) {

		System.out.println("PI = " + PI);

	}

}

  需要注意,类常量的定义位于main方法的外部。因此,在同一个类的其他方法中也可以使用这个常量。

 而且,如果一个变量被声明为public,那么其他类的方法也可以使用这个常量。

4、Java运算符

 我们不讨论过于细微末节的东西,例如:+、-、*、/、% ······。哦,对了,有一点还比较重要:两个全都是整数类型的数

 相除,结果一定是整数。咦?还有一点:整数被0除将产生异常;浮点数被0除将会得到无穷大或NaN结果。

 在Java中,没有幂运算,因此需要借助于Math类的pow方法。语句:

double y = Math.pow(x,a);

 将y的值设置为x的a次幂。pow方法有两个double类型的参数,其返回结果也为double类型。

 要计算数值的平方根,可以使用sqrt方法。

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

   Math.PI;

    Math.E;

  当然,如果每次都要写Math就太麻烦了。我们可以这样做:在源文件的顶部加上下面这行代码就可以:

 import static java.lang.Math.*;

 Java类型转换算是比较重要的东西,那么接下来一起讨论它。

  so,类型转换是什么鬼?

  当两个数值进行二元操作时,要先将两个操作数转换为同一种类型,然后再进行计算。

  记住顺序就好了,虽然不精准,但够用。

   double > float > long > int

 类型转换OK掉了,再来探讨强制类型转换:

 强制类型转换的语法格式:

  double x = 9.889;

int y = (int)x;

  这样,变量y的值即为9。

  如果想对浮点数进行舍入运算,以便得到最接近的整数(很多情况下,这种操作更有用),需要使用Math.round方法:

  double x = 9.889;

int y = (int)Math.round(x);

  现在,变量y的值为10。那么问题来了,为什么调用round的时候,还要使用强制类型转换(int)?

   round方法的返回类型为long类型,由于存在信息丢失的可能性,所以转换成int类型。

  思考:

  int x = 5;

x += 3.5;

请问:“x的值是多少?” (答案为8)

  关系和boolean运算符。

  &&表示逻辑与,||表示逻辑或,!表示逻辑非,还有三元操作符 condition ? expression1 : expression2 。

  枚举类型初涉。

使用枚举类型的情况: 变量的取值只在一个有限的集合内。例如:

 销售的服装或者披萨只有小、中、大和超大这四种尺寸。可以将这些尺寸分别编码为1、2、3、4或S、M、L、X。

但这样存在一定的隐患。在变量中可能保存的是一个错误的值(如0或m)。

  准对这种情况,可以自定义枚举类型。枚举类型包括有限个命名的值。例如:

enum Size { SMALL,MEDIUM,LARGE,EXTRA_LARGE };

现在,可以声明这种类型的变量:

Size s = Size.MEDIUM;

 注意:Size类型的变量只能存储这个类型声明中给定的枚举值,或者null值,null值表示这个变量没有设置任何值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值