基本数据类型

整数型

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. Android 文件路径(/mnt/sdcard/...)、Uri(content://media/external/...)

    一.URI 通用资源标志符(Universal Resource Identifier, 简称"URI"). Uri代表要操作的数据,Android上可用的每种资源 - 图像.视频 ...

  2. angular 设置全局常量

    一:在项目核心文件core.module.ts中设置全局静态常量 解释:相当于自动注入到inject中. providers:[ { provide:'BASE_CONFIG', useValue:' ...

  3. POJ 1274 The Perfect Stall || POJ 1469 COURSES(zoj 1140)二分图匹配

    两题二分图匹配的题: 1.一个农民有n头牛和m个畜栏,对于每个畜栏,每头牛有不同喜好,有的想去,有的不想,对于给定的喜好表,你需要求出最大可以满足多少头牛的需求. 2.给你学生数和课程数,以及学生上的 ...

  4. Haproxy 为 mysql 做负载均衡

    .tar.gz cd haproxy- uname -r vim /etc/haproxy.cfg global #日志 log 127.0.0.1 local0 maxconn chroot /tm ...

  5. Day2:字典

    一.定义 字典是一种“key-value”成对出现的数据类型,中间用冒号把key与value隔,不同的数据用逗号隔开,全部数据用大括号括起来 info = { 'stu1101': "Ten ...

  6. 基于Qt Assistant制作软件帮助文档

    Qt Assistant是Qt自带的一款可定制.可重新发行的帮助文件浏览器.Qt Assistant支持HTML文件,用户可以利用其定制自己的功能强大的帮助文档浏览器.关于Qt Assistant定制 ...

  7. window.print()打印网页(一)

    有时候需要将网页内容打印到纸上,最简单的一种方法是用window对象的print方法. window.print()默认打印当前网页的所有部分.(除了背景,默认打印都是白底黑字,如果有特别的设置 要另 ...

  8. mongodb查询部分满足条件的列

    db.tblorders.createIndex( { orderid : -1 },{background:true, name:"index_orderid"} ); db.o ...

  9. perl对比两个文件的行

    perl对比两个文件的行 对比两个文件的各行,得到A与B相同的行/A与B不相同的行 主要功能 得到相同行 得到A中包含,B不包含的行 得到B中包含,A中不包含的行 具体执行情况 Perl代码 #!/u ...

  10. LIGO找到首个超越广义相对论的证据?

    转自 麻省理工科技评论 原文 LIGO找到首个超越广义相对论的证据? 1915年,爱因斯坦根据简单的原理提出广义相对论,极大地改变了人们的时空观.广义相对论不仅解释了牛顿理论无法解释的现象,还做出许多 ...