码迷,mamicode.com
首页 > 编程语言 > 详细

Java 基础复习

时间:2019-12-06 13:32:45      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:自动类型转换   数据丢失   http   null   默认值   tab   情况下   类型转换   编译器   

Java 基础

基础数据类型

java 中包含哪些基础数据类型,默认值分别是多少?

基础数据类型 byte short int long double float char boolean
默认值 0 0 0 0l 0.0 0.0f null false

基础数据在 JVM 中的存储模型

Java 中的基础模型因为其长度可知、生命周期(存活时间)可知,为了追求速度,基础数据都是存放在栈中的。另外栈有一个特点,就是栈中的数据可以共享。

例如:

int a = 3;
int b = 3;

基础数据类型的自动转换

基础类型的自动转换规则包括自动、强制、提升三种

自动类型转换是指:数字范围小的数据类型可以自动转换成数据范围大的类型

int a = 100;
long b = a;

具体可以残照下面这张图:

技术图片

实线表示自动转换时不会造成数据丢失,虚线则可能会出现数据丢失问题。

在自动转换的过程中也需要考虑溢出问题,例如:

int a = Integer.MAX_VALUE;
int b = 2;
long c = a + b;
System.out.println(c);

// out -2147483647

在这种情况下编译器不会报错,但是打印出来的结果是负数(溢出)。因为jvm 中对其进行计算的时候,是先计算两个 int 的和,再将其自动转换为 long,但是在计算过程中,a和 b的和已经大于 int 的最大值,也就是说在自动转换之前结果已经是负数了,所以转换成 long 之后依然是负数。

另外,向下转换的时候可以直接将 int 的常量直接赋予给char、short、byte,只要常量的数字小于这些基础类型的最大上限,所以可以自动转换

short d = 3;
char e = 4;
byte f = 1;

下图中的 g 报错了,是因为int 的常量超过了 byte 的最大限度。

short d = 3;
char e = 4;
byte f = 1;
byte g = 128;

Java 基础复习

标签:自动类型转换   数据丢失   http   null   默认值   tab   情况下   类型转换   编译器   

原文地址:https://www.cnblogs.com/joimages/p/11994428.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!