2021-2-27-数据类型以及变量复习笔记

数据类型
Java是强类型语言,必须为每个变量声明一种类型。
在Java中一共有8种基本类型,其中4种整型(int-4字节,short-2字节,long-8字节,byte-1字节)、2种浮点型(float-4字节,double-8字节)、1种用于表示Unicode编码的字符char和1种表示真值的Boolean类型。

int作为最常用类型(范围与运行Java代码的机器无关);
byte和short通常用作底层的文件处理或需要控制占用存储空间量的大数组;
Java中所有的数值类型所占据的字节数量与平台无关;
float类型很少有情况适用,当需要单精度数据的库或者需要存储大量数据才有可能使用;
double表示数值精度是float的两倍,绝大多数应用程序都采用double类型;
浮点数不适用于无法接收舍入误差的金融计算(浮点数采用二进制系统,无法精确表示1/10,如同十进制无法精确表示1/3)相关计算应该使用BigDecimal类;
char类型可以用作表示单个字符,现在也可用来描述某些Unicode字符,还有些Unicode字符需要用两个char值。char类型的字面量值需要用单引号阔起来如’A’,它与"A"不同,"A"是包含一个字符A的字符串。
其中最好不要在程序中使用char类型,除非需要处理UTF-16代码单元,最好将字符串作为抽象数据类型处理;
boolean类型两个值:false,true。整型值和布尔值之间不能互相转换。

变量
Java中每个变量都有一个类型(type)。在声明变量时,变量类型位于变量名之前;
不能使用Java保留字作为变量名,其中逐一声明每一个变量可以提高程序的可读性;
声明变量,用赋值语句对变量进行显示初始化,未初始化的变量Java编译器通常认为是错误的。
不同的变量初始化方法不同。
变量包括:
类的属性(值域)
方法里的局部变量
方法的参数
对于第一种变量,Java虚拟机会自动进行初始化。如果给出了初始值,则初始化为该初始值。如果没有给出,则把它初始化为该类型变量的默认初始值。
int类型变量默认初始值为0
float类型变量默认初始值为0.0f
double类型变量默认初始值为0.0
boolean类型变量默认初始值为false
char类型变量默认初始值为0(ASCII码)
long类型变量默认初始值为0
所有对象引用类型变量默认初始值为null,即不指向任何对象。注意数组本身也是对象,所以没有初始化的数组引用在自动初始化后其值也是null。
对于两种不同的类属性,static属性与instance属性,初始化的时机是不同的。instance属性在创建实例的时候初始化,static属性在类加载,也就是第一次用到这个类的时候初始化,对于后来的实例的创建,不再次进行初始化。
对于第二种变量,必须明确地进行初始化。如果再没有初始化之前就试图使用它,编译器会抗议。如果初始化的语句在try块中或if块中,也必须要让它在第一次使用前一定能够得到赋值。也就是说,把初始化语句放在只有if块的条件判断语句中编译器也会抗议,因为执行的时候可能不符合if后面的判断条件,如此一来初始化语句就不会被执行了,这就违反了局部变量使用前必须初始化的规定。但如果在else块中也有初始化语句,就可以通过编译,因为无论如何,总有至少一条初始化语句会被执行,不会发生使用前未被初始化的事情。对于try-catch也是一样,如果只有在try块里才有初始化语句,编译部通过。如果在catch或finally里也有,则可以通过编译。总之,要保证局部变量在使用之前一定被初始化了。所以,一个好的做法是在声明他们的时候就初始化他们,如果不知道要出事化成什么值好,就用上面的默认值吧!其实第三种变量和第二种本质上是一样的,都是方法中的局部变量。只不过作为参数,肯定是被初始化过的,传入的值就是初始值,所以不需要初始化。

常量
在Java中利用关键字final指示常量(表示该变量只能被赋值一次,一旦被赋值就不能更改了,常量名使用全大写)
代码片

final double PRICE = 3.14;

另外希望某个常量可以在一个类中的多个方法中使用,通常被称为类常量。可以使用关键字static final设置。并且类常量的定义通常位于main方法的外部,因此同一个类的其他方法也可以使用这个常量。如果一个常量被声明为public,那么其他类的方法也可以使用这个常量
代码片

public class Constants
{
	public static final double PRICE = 3.14;
	
	public static void main(String[] args){
	double dog = 5.2;
	System.out.println("The dog price:"+dog*PRICE);
}
}

当我的变量设置为3.14时,编译器得出dog 的价格为16.328000000000003
为了更精准我们可以使用上面提到的BigDecimal类

package constant;

import java.math.BigDecimal;

public class Constants2 {
	public static final double PRICE = 3.14;
	public static void main(String[] args) {
		double dog = 5.2;
		double sum=dog*PRICE;
		BigDecimal bd = new BigDecimal(sum);
		sum = bd.setScale(3,BigDecimal.ROUND_HALF_UP).doubleValue();
		System.out.println("The Sum dog:"+sum);
	}
}

此时得出结果为 16.328

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值