类型转换

由于java是强类型语言,所以要进行有些运算的时候,需要用到类型转换

​ 低------------------------------------------------------>高

​ byte,short,char->int->long->float->double

运算中,不同的类型的数据先转化为同一类型,然后进行计算

强制类型转换(高->低)

语法

​ (要转换的类型)变量名

  1. int i=128;
  2. byte b=(byte)i;
  3. System.out.println(i);
  4. System.out.println(b);

输出结果

  1. 128
  2. -128

由于byte的范围是-128~127

因此内存溢出了,因此强转时需要注意范围

自动类型转换(低->高)

在运算时会自动转换

  1. int i=128;
  2. double c=i;
  3. System.out.println(i);
  4. System.out.println(c);

输出结果

  1. 128
  2. 128.0

注意点

  1. 不能对boolean进行转换
  2. 不能把对象类型转换为不相关的类型
  3. 把高容量的转换到低容量的时候,强制转换
  4. 转换的时候可能存在内存溢出,或者精度问题
  1. System.out.println((int)23.7);//double强转int
  2. System.out.println((int)-45.89f);//float强转int

输出结果:

  1. 23
  2. -45

精度丢失了。

  1. char d='a';//a的Unicode编码为97
  2. int f=d+1;//char自动转int
  3. System.out.println(f);
  4. System.out.println((char) f);//int强制转char

输出结果

  1. 98
  2. b
  1. //操作比较大的数的时候,注意溢出问题
  2. //JDK7新特性,数字之间可以用下划线分割
  3. int money=10_0000_0000;
  4. int year=20;
  5. int total=money*year;//计算的时候溢出了
  6. long total2=money*year;//默认是int,转成long之前就溢出了
  7. System.out.println(money);
  8. System.out.println(total);
  9. System.out.println(total2);

输出结果

  1. 1000000000
  2. -1474836480
  3. -1474836480

正确的做法是把其中一个int类型转成long(由于是低转高,另外一个计算时会自动转为long类型)

  1. long total3=money*(long)year;
  2. System.out.println(total3);

输出结果

  1. 20000000000

狂神说java

Day003 类型转换的更多相关文章

  1. 为C# as 类型转换及Assembly.LoadFrom埋坑!

    背景: 不久前,我发布了一个调试工具:发布:.NET开发人员必备的可视化调试工具(你值的拥有) 效果是这样的: 之后,有小部分用户反映,工具用不了(没反应或有异常)~~~ 然后,建议小部分用户换个电脑 ...

  2. c# 基础 object ,new操作符,类型转换

    参考页面: http://www.yuanjiaocheng.net/webapi/config-webapi.html http://www.yuanjiaocheng.net/webapi/web ...

  3. Struts2日期类型转换

    针对日期类java.util.Date进行类型转换,要求客户端使用"yyyy-MM-dd","yyyy/MM/dd"中的任意一种输入,并以"yyyy- ...

  4. 【.NET深呼吸】基础:自定义类型转换

    照例,老周在开始吹牛之前,先讲讲小故事,这是朋友提出的建议,老TMD写技术有什么了不起的,人人都会写.后来老周想想,也确实,代码谁不会写,能写到有品位有感悟,就不容易做到.于是,老周接受了该朋友的建议 ...

  5. C++四种类型转换方式。

    类型转换有c风格的,当然还有c++风格的.c风格的转换的格式很简单(TYPE)EXPRESSION,但是c风格的类型转换有不少的缺点,有的时候用c风格的转换是不合适的,因为它可以在任意类型之间转换,比 ...

  6. struts2类型转换

    1. Struts2中的类型转换 我们知道通过HTTP提交到后台的数据,都是字符串的形式,而我们需要的数据类型当然不只字符串类型一种.所以,我们需要类型转换! 在Struts2中,类型转换的概念除了用 ...

  7. C++_系列自学课程_第_11_课_类型转换_《C++ Primer 第四版》

    上次说了关于表达式的一些内容,说到还有一些关于数据类型转换的内容,今天我们接着八一八C++中的数据类型转换. 一.隐式类型转换 在表达式中,有些操作符可以对多种类型的操作数进行操作, 例如 + 操作符 ...

  8. Struts2入门(三)——数据类型转换

    一.前言 笔者一直觉得,学习一个知识点,你首先要明白,这东西是什么?有什么用?这样你才能了解.好了,不说废话. 1.1.类型转换为何存在?什么是类型转换? 在MVC框架中,都是属于表示层解决方案,都需 ...

  9. js条件判断时隐式类型转换

    Javascript 中,数字 0 为假,非0 均为真 在条件判断运算 == 中的转换规则是这样的: 如果比较的两者中有布尔值(Boolean),会把 Boolean 先转换为对应的 Number,即 ...

随机推荐

  1. Celery:进一步探索

    一.创建Celery专用模块 对于大型项目,一般需要创建一个专用模块,便于管理. 1.1 模块结构 proj/__init__.py /celery.py /tasks.py proj/celery. ...

  2. 过多if - else 的问题, 以及策略模式 + 反射解决方法

    策略模式解决if - else 的代码 业务场景: 外包企业的审批人需要审批打卡的场景: 审批人分为多种不同的级别,多种级别中具有方式相同但是内容不同的操作:审批. 原来场景: 有前端传来审批人参数, ...

  3. docker+compose+nginx+php

    Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化. 我用docker做什么? 快速搭建开发所需环境,测试实验新 ...

  4. WPF 应用 - 拖拽窗体、控件

    1. 拖拽窗体 使用 System.Windows.Window 自带的 DragMove() 方法即可识别窗体拖动. DragMove(); 2. 拖拽控件:复制.移动控件 <Grid> ...

  5. Tomcat搭建配置

    Tomcat是Apache软件基金会( Apache Software Foundation )的Jakarta项目中的一个核心项目,由Apache.Sun和其他一些公司及个人共同开发而成.受Java ...

  6. 跨端开发技术 | 拼团商城项目同时开发app和小程序的要点

    此项目为拼团商城类型,主要功能包括商品分类.商品详情.商品搜索.拼团.订单管理等. 项目源码在 https://github.com/apicloudcom/group-ec 仓库的 widget 目 ...

  7. P2089_烤鸡(JAVA语言)

    题目背景 猪猪hanke得到了一只鸡 题目描述 猪猪Hanke特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke吃鸡很特别,为什么特别呢?因为他有10种配料(芥末.孜然等),每种配料可以放1-3克, ...

  8. 剪切DOM节点中断transition执行【问题】

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  9. 推荐模型NeuralCF:原理介绍与TensorFlow2.0实现

    1. 简介 NCF是协同过滤在神经网络上的实现--神经网络协同过滤.由新加坡国立大学与2017年提出. 我们知道,在协同过滤的基础上发展来的矩阵分解取得了巨大的成就,但是矩阵分解得到低维隐向量求内积是 ...

  10. pytest进阶之fixture函数

    fixture函数存在意义 与python自带的unitest测试框架中的setup.teardown类似,pytest提供了fixture函数用以在测试执行前和执行后进行必要的准备和清理工作.但是相 ...