概念:Java中,经常可以遇到类型转换的场景,从变量的定义到复制、数值变量的计算到方法的参数传递、基类与派生类间的造型等,随处可见类型转换的身影。Java中的类型转换在Java编码中具有重要的作用。
首先,来了解下数据类型的基本理解:数据是用来描述数据的种类,包括其值和基于其值基础上的可进行的操作集合。

  Java中数据类型主要分为两大类:基本数据类型和引用数据类型。
基本数据类型共有8种,分别是:布尔型boolean, 字符型char和数值型byte/short/int/long/float/double。由于字符型char所表示的单个字符与Ascii码中相应整形对应,因此,有时也将其划分到数值型中。引用类型具体可分为:数组、类和接口。因此,本文中Java类型转换的总结也将分为基本数据类型和引用数据类型两个方面展开。

   自动转换

  大小排列:byte----->shorrt----->int----->long----->float----->double类型依次从小到大排列

  整形,实形,字符类型数据可以混合运算,运算中,不同类型的数据先转化为同类型,然后进行运算,转换从低级到高级,转换前于转换后的数据类型如下

我们来做一个自动转换的案列

char类型能不能转换为int类型呢?

 package pkg1;

 public class Test1{
     public static void main(String args[]){
         //定义一个char类型,字符和int类型可以自动转换
         char c = 'a';
         int i = c ;

         System.out.println(i);    

     }
 }

边缘看运行效果:

可以看到char是可以自当转换成int类型的,但是输出的结果却是97,其实字符和整数有一种对应关系那就是ASCII表

看看刚刚我们得出的小a对应的数字就是97.

  如果两个int类型计算会不会自动提升类型。
 package pkg1;

 public class Test1{
     public static void main(String args[]){

         //如果两个int类型计算会不会自动提升类型
         int a = 2147483647;
         int b = 12;

         int d = a + b;
         System.out.println(d);
     }
 }

可以看到编译不报错,但是结果,是为负数,这表示数字已经超过了int类型的长度,但并不会自动转换

总结:int,long,float,double自身来计算的时候没有类型的提升,如果超出范围了就会出现精度的损失 。

  int类型和float类型的计算转换成float
 package pkg1;

 public class Test1{
     public static void main(String args[]){

         //int类型和float类型的计算转换成float
         float f = 1.4f;
         int y = 1 ;
         int f1 = f + y ;

         System.out.println(f1);

     }
 }

最后用int类型接收,编译是不成功的 ,在转换时一定要向大的类型转换才可以。所以一定要是float类型

问题一:

是可以的,因为小数的常量默认值是double类型的

问题二:

可以,为什么呢?

12.5f是表示float类型的常量,它是占4个字节,double类型占8个, 就好比大鱼吃小鱼一样,可以将小的吃掉。这个类型也是一样的。

总结:小的表数范围是常量或者变量可以自动的向大的表数范围的类型转换,包括int类型向double类型转换一样。大的表述范围的值不能自动的赋值小的表述范围的变量。

java--基本数据类型的转换(自动转换)的更多相关文章

  1. Java中数据类型及其之间的转换

    Java中数据类型及其之间的转换 基本的数据类型 基本类型有以下四种:1)int长度数据类型有:byte(8bits).short(16bits).int(32bits).long(64bits).2 ...

  2. Java中数据类型及其之间的转换(转)

    Java中数据类型及其之间的转换 基本的数据类型 基本类型有以下四种:1)int长度数据类型有:byte(8bits).short(16bits).int(32bits).long(64bits).2 ...

  3. java 写入int型时会自动转换成字符

    java  写入int型时会自动转换成字符

  4. java类型转换详解(自动转换和强制转换)

    自动转换 class Hello { public static void main(String[] args) { //自动转换 int a = 5; byte b = 6; int c = a ...

  5. Java中为什么long能自动转换成float类型

    刷题时候看到一个float和long相互转换的问题,float向long转换的时候不会报错,一个4个字节一个8个字节,通过baidu找到了答案. 下面转载自http://blog.csdn.net/s ...

  6. JSON字符串自动转换

    package com.zkn.newlearn.json; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObj ...

  7. javascript数据类型及类型的转换总结

    javascript 是浏览器客户端脚本语言,要想让网页与后台程序更好的交互效果,这里我们详细了解javascript 数据类型及类型的转换 1,数据类型 number number类型 数字类型,浮 ...

  8. java基本数据类型

    基本数据类型概念 java是一种强类型语言,意味着必须为每一个变量声明一种数据类型. java拥有8中基本数据类型,主要包含如下:4中整形类型(long.int.short.byte)表示整形数值:两 ...

  9. [Java 基础]数据类型

    基本类型和引用类型 Java中的数据类型有两类: l  基本类型(又叫内置数据类型,或理解为值类型) l  引用类型 基本类型和引用类型的区别 1.  从概念方面来说 基本类型:变量名指向具体的数值 ...

  10. 面试准备(四)Java基本数据类型

    Java语言是静态类型的(statical typed),也就是说所有变量和表达式的类型再编译时就已经完全确定.由于是statical typed,导致Java语言也是强类型(Strong typed ...

随机推荐

  1. 腾讯云发布runC容器逃逸漏洞修复公告

    尊敬的腾讯云客户,您好:  近日,腾讯云安全中心监测发现轻量级容器运行环境runc被爆存在容器逃逸漏洞,攻击者可以在利用该漏洞覆盖Host上的runc文件,从而在Host上以root权限执行代码. 为 ...

  2. [数据库锁机制] 深入理解乐观锁、悲观锁以及CAS乐观锁的实现机制原理分析

    前言: 在并发访问情况下,可能会出现脏读.不可重复读和幻读等读现象,为了应对这些问题,主流数据库都提供了锁机制,并引入了事务隔离级别的概念.数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务 ...

  3. Redis缓存穿透、缓存雪崩和缓存击穿理解

    1.缓存穿透(不存在的商品访问数据造成压力) 缓存穿透,是指查询一个数据库一定不存在的数据.正常的使用缓存流程大致是,数据查询先进行缓存查询,如果key不存在或者key已经过期,再对数据库进行查询,并 ...

  4. DateUtil日期工具类

    目录 (1)需要导入的包 (2)DateUtil类 (1)需要导入的包 主要用于Strings.isNullOrEmpty(date) <!--string处理类--> <depen ...

  5. Fiddler-弱网测试设置

    第一步:打开模拟弱网环境 第二步:打开配置文件 第三步:修改配置参数  m_SimulateModem,修改后最好 Ctrl+S 保存一下 第四步:修改好参数返回后需要再次打开弱网环境 以上弱网设置就 ...

  6. 详解docker实战之搭建私有镜像仓库 - kurbernetes

    1.实战目的 搭建企业私有的镜像仓库,满足从开发环境推送和拉取镜像.当我们使用k8s来编排和调度容器时,操作的基本单位是镜像,所以需要从仓库去拉取镜像到当前的工作节点.本来使用公共的docker hu ...

  7. kafka基础知识点

    1.安装: 1.1. 前置安装要求:java + zookeeper 1.2. 下载安装包:http://mirros.cnnic.cn/apache/kafka/0.9.00/kafka_2.10- ...

  8. JQuery 常用的那些东西

    CDN Google CDN Microsoft CDN CDNJS CDN jsDelivr CDN 选择器 jQuery 元素选择器和属性选择器允许您通过标签名.属性名或内容对 HTML 元素进行 ...

  9. JDK对CAS ABA问题解决-AtomicMarkableReference和AtomicStampedReference

    我们知道AtomicInteger和AtomicLong的原子操作,但是在这两个类在CAS操作的时候会遇到ABA问题,可能大家会疑问什么是ABA问题呢,请待我细细道来: ABA问题:简单讲就是多线程环 ...

  10. Spring Bean 生命周期测试

    本文代码GitHub地址 Bean的生命周期是开始创建到销毁的过程.需要实现相关的类BeanNameAware   ,DisposableBean, InitializingBean ,并注册Inst ...