一、自动类型转换

1、java中不同类型的数据在计算时,为保证数据的精度,数据的类型会以大容量的类型为主;

2、自动类型转换的排序:

char、byte、short -> int -> long -> float -> double

3、字符串和任意类型的数据进行连接运算(+),都会自动转换为字符串;

4、赋值运算时常量可以进行自动类型转化,变量不可以,例如:

int a=1;
byte b=1;
System.out.println(a+b); // 结果:2 byte a=1;
a=a+1; //结果:java: 不兼容的类型: 从int转换到byte可能会有损失
//原因:byte 在进行计算时会自动转换为int类型,这时就会变成 byte=int+int int类型被要求转换为byte,导致产生上面的错误。

5、在进行加运算的时候比int小的数据类型(char、byte、short)之间的运算都会自动转化成int的加运算,例如:

byte a = 1;
byte b = 2;
a = b + a;
System.out.println("b="+a);
// 结果:java: 不兼容的类型: 从int转换到byte可能会有损失
// 原因:b+a 数据类型自动转化为int了,不能赋值给byte类型的a
byte a = 1;
byte b = 2;
int c = b + a;
System.out.println(c); // 结果:3

二、强制类型转换

1、将容量大的数据类型转换为容量小的数据类型,强制类型转换可能会造成精度的降低或者溢出;

2、强制类型转换符(),括号里为要强制转换为什么类型,例如:

double a = 1.91;
int b = (int) a;
System.out.println(b); // 结果:1
// 这里的 a 被强制转换为int类型,小数点被强制去了

3、字符串不能直接转换为基本数据类型,但可以通过基本类型的封装类型进行转换,例如:

String s = "12";
int a = Integer.parseInt(s);
System.out.println(a); //结果:12

4、boolean类型和字符串的类型转换;

//boolean 转 String
boolean f = true;
String s = f + "";
System.out.println(s);
//结果:true //String 转 boolean
String s = "true";
boolean f = Boolean.parseBoolean(s);
System.out.println(f);
//结果:true

5、在继承中,子类可以自动转型为父类,但是父类强制转换为子类时只有当引用类型真正的身份为子类时才会强制转换成功,否则失败;

class Father {}
class Son extends Father {} //Father 是 Son的父类
Father father = new Son();
Son son = (Son) father; //father虽然是Father类型的数据,但是它指向的其实是 Son对象
//所以 (Son) father 是可行的 Father father1 = new Father();
Son son1 = (Son) father1; //father指向的是 Father对象
//所以 (Son) father 是不可行的
//这将会报错 java.lang.ClassCastException

最新文章

  1. ASP.NET WebApi 文档Swagger深度优化
  2. 时间改成24小时制 和pc mobile链接自动转化
  3. 12.创建一个Point类,有成员变量x,y,方法getX(),setX(),还有一个构造方 法初始化x和y。创建类主类A来测试它。
  4. jquery easyui读取json文件乱码
  5. win7里边使用telnet命令提示telnet不是内部或外部命令
  6. 如何保护你的linux操作系统
  7. Javascript中setTimeout和setInterval的区别和使用
  8. rpm命令详解
  9. U盘美化(更换U盘logo和页面背景软件)
  10. MVC下判断用户登录和授权状态方法
  11. 获取url参数值(可解码中文值)
  12. Window Server配置Flask
  13. 聚类--K均值算法
  14. VLAN报文和非VLAN以太网报文的区别
  15. Maven 传递依赖冲突解决(了解)
  16. python 基础数据类型 之 列表
  17. sql server 2012 打开提示无效的许可证数据。需要重新安装
  18. 7.20python线程(2)
  19. ASP.NET MVC , ASP.NET Web API 的路由系统与 ASP.NET 的路由系统是怎么衔接的?
  20. 【Maven学习】Nexus OSS私服仓库的安装和配置

热门文章

  1. caj文件转word
  2. Android ListView的批量处理(多选/反选/删除)
  3. Python 文件&异常 初学者笔记
  4. 博客前端live2D实现
  5. cat基础用法
  6. HDU - 1159 Common Subsequence (最长公共子序列)
  7. hyper-v虚拟机不能访问外网的解决方案
  8. Spark学习之路 (三)Spark之RDD[转]
  9. C 库函数 - sprintf()
  10. Win10安装4 —— 通过BIOS进入PE