基本数据类型

整数型

byte --- 字节型 --- 1个字节 --- -27~27-1 -> -128~127

byte b1 = 25; byte b2 = 127;

short --- 短整型 --- 2个字节 --- -215~215-1 -> -32768~32767

int --- 整型 --- 4个字节 --- -231~231-1 --- 在Java中整数默认为int类型

System.out.println(5);

long --- 长整型 --- 8个字节 --- -263~263-1 --- 需要在结尾添加l/L作为标识

long l = 2L;

浮点型

---需要在结尾添加f/F作为标识

float f = 3.5f;

---在Java中小数默认为double类型

double d = 2.64;  double d2 = 5.21D;  double d3 = 7.33d;

double d = 4e4; 表示4*104 aeb表示a*10b,表示十进制的科学计数法

double d = 0x5p3; 表示十六进制的科学计数法 xpy表示x*2y

字符型

char --- 字符型 --- 2个字节 --- 0~65535 ---默认编码就是utf-16

char c = ‘a’;  char c2 = ‘4’; char c3 = ‘\u20ac’;

// 不存在空字符和负数的字符,无论这个字符是纯数字或者是字符

boolean类型

数据类型的转换

自动类型转换/隐式转换

byte b = 3;

int i = b;

int i =7;

long l = i;

float f = 3.57f;

double d = f;

规律一:小的类型可以自动转化为大的类型

long l = 10; --- Java中整数默认为int,所以10就是int类型,int可以自动提升为long类型 --- 如果一个整数在int的范围内,那么在赋值给long类型的时候可以不加L

int i = 10;

float f = i;

规律二:整数可以自动转化为小数,但是可能产生精度损失

float f = 500;

char c = ‘a’;

int i = c;

规律三:字符可以自动转化为整数

short类型和char类型范围没有完全重合也不能完全包含

short s = ‘a’; --- 可以 --- ‘a’是字面量,是一个确定的值。所以在编译的时候就能确定 ‘a’的值是否在short的取值范围内;如果在这个范围内,就允许转化

char c = 97; --- 可以 --- 97是字面量,是一个确定的值。所以在编译的时候就能确定 97的值是否在char的取值范围内;如果在这个范围内,也允许转化

char c = ‘a’;

short s = c; --- 不可以 --- c是变量,所以在编译期间只能确定c是一个char类型的值但是不能确定c的具体值;那么就会在编译期间比对两个类型之间是否能够完全转化,发现char类型不能完全转化为short类型,所以认为这个值会有超过short取值范围的风险,因此不允许转化

short s = 97;

char c = s; --- 不可以

byte/short/char可以参与自增/自减运算,运算完成之后结果类型没有改变 --- 因为在底层做了一次强制转换

规律四:byte,short,char在计算的时候会自动转换为int类型。以下代码报错。单纯的赋值不算是运算。

char c = 97;

c = c + 1;

规律五:在自增自减以及简化运算的时候会发生强转,所以以下代码即使在超出范围的情况下都不会报错。

char c = 97;

c *= 300;

现在的问题是

Float f = 2.6; // 报错①在Java中小数默认为double类型

但是char a = 5; // 成功②在Java中整数默认为int类型

他们两个都是字面量但是结果不同,自动int理论和字面量理论都遇到了挑战。按照字面量理论来说①的实际值没有超过但是报了错②完美运行。按照自动int理论来说,②应该报错但是它是按照字面量理论执行的。综上,所以不知道真正的假设。

Byte(等)的溢出问题

强制类型转换/显式转换

int i = 5;

byte b = (byte)i; 表示将变量i强制转换为byte类型之后再赋值给变量b

注意:大类型可以强转为小类型,但是在转化的时候因为字节的损失所以可能导致数据不准确

double d = 3.97;

int i = (int)d; --- 小数在转化为整数的时候会舍弃小数部分。

Java数据类型转换问题的更多相关文章

  1. Java数据类型转换浅析

    Java数据类型转换分为两种:自动类型转换和强制类型转换. 数据类型转换的关键是数据类型相应的表数范围大小 1.自动类型转换: 概念:小范围数据类型会自动转化成大范围数据类型 实例: int a=10 ...

  2. Java数据类型转换1

    1 如何将字串 String 转换成整数 int? A. 有两个方法: 1). int i = Integer.parseInt([String]); 或 i = Integer.parseInt([ ...

  3. java数据类型转换那点事

    public class kkk { /** * 先看看eclipse对于数值型转换会有哪些报错,但是有一点必须明确,eclipse不报错的,不一定就是说这种思维逻辑是对的 * 可以直接将代码复制过去 ...

  4. Java数据类型转换(自动转换和强制转换)

    数据类型的转换,分为自动转换和强制转换.自动转换是程序在执行过程中“悄然”进行的转换,不需要用户提前声明,一般是从位数低的类型向位数高的类型转换;强制类型转换则必须在代码中声明,转换顺序不受限制. 自 ...

  5. 2、java数据类型转换

    当数据类型不一样时,将会发生数据类型转换. 1.自动类型转换(隐式) 1. 特点:代码不需要进行特殊处理,自动完成. 2. 规则:数据范围从小到大. System.out.println(1024); ...

  6. 第24章 Java 数据类型转换

    每日一句 井底点灯深烛伊,共郎长行莫围棋. 每日一句 What we call "failure" is not falling down, but the staying dow ...

  7. Java 数据类型转换(转换成字节型)

    package com.mystudypro.byteutil; import java.io.UnsupportedEncodingException; public class ConToByte ...

  8. java数据类型转换的常见方法

    public class Testfun { public static void main(String[] args) { // (一)跨Number父类的类型转换 // 1.str转int =& ...

  9. Java 数据类型转换的骚操作和神奇现象

    问:银行用什么数据类型来表示余额?float还是double? 都不是!!下面说明为什么都不可以呢? public static void main(String[] args) { //浮点数他都是 ...

随机推荐

  1. HTML中select的option设置selected="selected"无效的解决方式

    今天遇到了一个奇葩问题,写HTML时有个select控件.通过设置option的selected="selected"竟然无效,可是在其它浏览器是能够的.问了一下Google大神, ...

  2. JS里的map与forEach遍历

    map 返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值. var numbers = [3,2,6,3] function func(num){ return num * documen ...

  3. 【Codeforces Round #433 (Div. 2) B】Maxim Buys an Apartment

    [链接]h在这里写链接 [题意] 你有n个位置,然后其中有k个地方是已经被人占据了的. 一个"好的位置"的定义是指,这个位置相邻的地方其中至少有一个被人占据了. k个被人占据的位置 ...

  4. Java ThreadLocal Example(java中的ThreadLocal例子)

    Java ThreadLocal is used to create thread local variables. We know that all threads of an Object sha ...

  5. amazeui页面分析5

    amazeui页面分析5 一.总结 1.把原模板当成样例集合就好 2.都是一块一块的,删改等操作都方便 3.list方面的操作很多都是ui配合li 4.其实容器本质还是div,所以真的算简单了 5.样 ...

  6. POJ 1753 Flip Game DFS枚举

    看题传送门:http://poj.org/problem?id=1753 DFS枚举的应用. 基本上是参考大神的.... 学习学习.. #include<cstdio> #include& ...

  7. 影响stm32仿真的因素

    可能是因为电池电量不足??? 电量不足可能会妨碍SD卡的挂载

  8. 20、在PC上测试虚拟驱动vivi

    在Ubuntu上测试 准备工作:安装xawtv(是一个应用程序,用来在Ubuntu上捕获摄像头数据并显示)sudo apt-get install xawtv 源码xawtv-3.95.tar.gz: ...

  9. MFC切换图片防止闪烁

    处理WM_ERASEBKGND消息,在消息处理函数中return TRUE;

  10. IWorkSpace与IWorkSpaceFactory与IWorkSpaceEdit

    樱木 原文 IWorkSpace与IWorkSpaceFactory与IWorkSpaceEdit 1.IWorkSpace是一个容器,里面存放着各种空间数据和非空间数据,比如Featureclass ...