java 金额数据类型_Java数据类型,你真的都掌握了?

Java是一种类型安全的语言,编译器存储在变量中的数值具有适当的数据类型。学习任何一种编程语言都要了解其数据类型,今天小象就给大家详细介绍Java中的数据类型。在构建一个编程世界中,分成【数字】和【字符】是有意义的,我们猜测【数字】是用来做计算的最关键因素,无论是日期,还是金额,都需要有【数字】,这是必不可少的运算基础。而【字符】则是因为我们还是处在文字世界,文字是我们用来传递信息最关键的信息,文字很少能用来计算,但经常会被用做查找,匹配,截断等。

数据类型分类:

a) 基本数据类型:八大基本数据类型

● 整数型:byte类型、short类型、int类型、long类型;

● 浮点型:float类型、double类型;

● 字符型:char类型;● 布尔型:boolean类型。

b) 引用数据类型:数组,接口,对象...

整数型

Short、int、long三个类型又被叫做:

短整型,整型,长整型,就像对应星巴克的中杯,大杯,超大杯。

三者之间的差别,就在于在内存中占据的字节数不一样。字节数代表什么呢?

代表着空间,字节数越大,就表示占据的空间越大。可以用包装箱来解释。中箱,大箱,超大箱分别三种款式,如果不做区分,只有一种箱子,为了保证能够把所有的数据都装进去,一定要统一做一个超大箱。

这样会带来什么结果?

占据的仓库会变大,物流会增加,交付时间会拖长,这就是统一数据类型的坏处。所以,Java的构建者决定用短,整,长三种方式来构建整型,Java程序员自由决定应该用哪几种数据类型。

注意事项:

1) 根据你需要存储的数据范围,来合理的选择使用数据类型。

2) 整数型固定值常量的默认类型是int类型。

3) 在整数型固定值常量末尾添加“L”或“l”,那么该常量就变为了long类型常量了。

浮点型

float和doule用来描述一些整型不可描述的场面(小数数值)。doule是在开发中常用的小数类型,但是我们在金融应用中往往不会使用这两种,常用BigDecimal类来代替Float和Double。

注意事项:

1) 实际开发中,我们使用double类型较多。

2) 固定值小数常量的默认数据类型为double类型。

3) 在小数固定值常量默认添加“F”或“f”,那么该常量就变为了float类型的常量了。

布尔型

【布尔】是一个很有意思的类型,他只有【true】或【false】。

true: 代表真或条件成立;false: 代表假或条件不成立。布尔类型常用于条件判断,例如:条件成立该做什么事,条件不成立又该做什么事。

字符型

char类型占用2个字节 常量:使用单引号包裹的一个字符,我们称之为字符常量,用来表示通常意义上"字符",涵盖世界上所有书面语的字符。例如:char c1 = 'a'; char c2 = '中'; char c3 = '9';

对于数值类型的基本类型的取值范围,我们无需强制去记忆,因为它们的值都已经以常量的形式定义在对应的包装类中了。请看下面的例子:

public class PrimitiveTypeTest {

public static void main(String[] args) {

// byte

System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE);

System.out.println("包装类:java.lang.Byte");

System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE);

System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE);

System.out.println();

// short

System.out.println("基本类型:short 二进制位数:" + Short.SIZE);

System.out.println("包装类:java.lang.Short");

System.out.println("最小值:Short.MIN_VALUE=" + Short.MIN_VALUE);

System.out.println("最大值:Short.MAX_VALUE=" + Short.MAX_VALUE);

System.out.println();

// int

System.out.println("基本类型:int 二进制位数:" + Integer.SIZE);

System.out.println("包装类:java.lang.Integer");

System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE);

System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE);

System.out.println();

// long

System.out.println("基本类型:long 二进制位数:" + Long.SIZE);

System.out.println("包装类:java.lang.Long");

System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE);

System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE);

System.out.println();

// float

System.out.println("基本类型:float 二进制位数:" + Float.SIZE);

System.out.println("包装类:java.lang.Float");

System.out.println("最小值:Float.MIN_VALUE=" + Float.MIN_VALUE);

System.out.println("最大值:Float.MAX_VALUE=" + Float.MAX_VALUE);

System.out.println();

// double

System.out.println("基本类型:double 二进制位数:" + Double.SIZE);

System.out.println("包装类:java.lang.Double");

System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE);

System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE);

System.out.println();

// char

System.out.println("基本类型:char 二进制位数:" + Character.SIZE);

System.out.println("包装类:java.lang.Character");

// 以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台

System.out.println("最小值:Character.MIN_VALUE="

+ (int) Character.MIN_VALUE);

// 以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台

System.out.println("最大值:Character.MAX_VALUE="

+ (int) Character.MAX_VALUE);

}

}

运行结果:

String

String 引用类型,又称为字符串类型。字符串分为常量和变量两种,其中,字符串常量使用双引号括起来的一串字符(字符串常量不可变亦不可赋值给字符串变量),系统为程序中出现的字符串常量自动创建一个String对象。

例如:

System.out.println("hello world!");

这句话将创建一个String对象,值为“hello world!”。

对于字符串变量,在使用之前要显式声明,并进行初始化。

字符串的声明方式有三种:

● 直接创建:String str1 = "Hello";

字符串是对象,虽然我们在这里没有用new创建对象,其实是编译器给我们做了这些操作。这种创建的字符串对象有一个特点,如果同样的对象如果存在了,就不会创建一个新的对象,而是指向了同样的对象。例如String str2 = "Hello";,则str1和str2是指向了字符串池中同样的内存地址,即str1 == str2;

● 使用字符串连接创建:String str = "Hello" + "World";

这种形式其实可以看做是第一种的形式的特殊形式。"Hello" + "World"在编译期会被自动折叠为常量“HelloWorld”,所以,最后只会创建一个对象:String str = "HelloWorld";

● new创建字符串:String str1 = new String("Hello");

用new关键字创建的字符串每次都会创建一个新的对象。即使这时创建一个字符串

String str2 = new String("Hello");

str1与str2是两个对象,str1 != str2;

数据类型转换

因为java是强类型语言,所以要求执行“赋值运算”和“算数运算”的时候,参与运算的数据类型必须保持一致。

数据类型转换分为两种:

a) 隐式类型转换,无需程序员手动处理;

b) 强制类型转换,需要程序员手动处理;除了boolean类型之外,其余的数据类型在内存中存储的都是数值。所以,除了boolean类型之外,其余的数据类型都可以相互转换。

隐式类型转换

原则:从低字节向高字节转换(提升)。

赋值运算:从低字节向高字节转换(提升)。特例:把int类型常量赋值给byte、short和char类型的变量时, 属于自动类型转换的特例,只需不超出其表数范围即可。代码所示:

long a的运算数值在结尾处未标明L,系统编译时将会默认数值为int类型,输出的结果为负数是因为运算的结果超出了int类型的取值范围,long b的为正确的long类型输出值。

强制类型转换

自动类型转换无法实现的时候,那么我们就使用强制类型转换。

● 强制类型转换的语法

目标数据类型 变量名|常量名= (目标数据类型)变量|常量;

● 强制类型转换的注意点

1) 强制类型转换之后的数据的数据类型保持不变。

int num1 = 10; byte num2 = (byte)num1; // 此处强转之后num1依旧为int类型。

2) 小数转换为整数

int num2 = (int)123.45;// 输出:123。

3) 使用强制类型转换的时候需要慎重!可能会丢失精度。

int num1 = 128; byte num2 = (byte)num1; // 输出:-128。

以上就是今天的技术分享,有任何不明白的问题记得私信小象哦~

- End -

部分图片来源于网络,版权归原作者所有,如有侵权,请告知删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值