java基础之 类型转换
一、自动类型转换
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
java基础之 类型转换的更多相关文章
- Java基础之类型转换总结篇
Java中,经常可以遇到类型转换的场景,从变量的定义到复制.数值变量的计算到方法的参数传递.基类与派生类间的造型等,随处可见类型转换的身影.Java中的类型转换在Java编码中具有重要的作用. ...
- Java基础-数据类型转换
1).简单类型数据间的转换,有两种方式:自动转换和强制转换,通常发生在表达式中或方法的参数传递时. 自动转换 当一个较"小"数据与一个较"大"的数据一起运算 ...
- Java基础12 类型转换与多态
链接地址:http://www.cnblogs.com/vamei/archive/2013/04/01/2992662.html 作者:Vamei 出处:http://www.cnblogs.com ...
- java基础-- 之类型转换 和 一些运算符
--- 首先 看一个 Scanner 类 import java.util.Scanner; public class TestScanner { public static void ma ...
- Java基础12 类型转换与多态(转载)
类型检查 Java的任意变量和引用经过类型声明(type declaration),才能使用.我们之前见过对象数据.类数据.方法参数.方法返回值以及方法内部的自动变量,它们都需要声明其类型.Java是 ...
- Java基础-基本数据类型转换案例
java基本数据类型八中 byte = Byte short = Short char = Character int = Integer long = Long float = Float doub ...
- Java基础学习-类型转换之隐式转换
+是一个运算符,我们应该能够看懂,做数据的加法. boolean类型不能转换为其他的数据类型. 默认转换: byte,short,char--int--float--double by ...
- 4.Java基础_Java类型转换
import javax.swing.plaf.synth.SynthMenuBarUI; /* 类型转换 自动类型转换: 把一个表示数据范围小的数值或者变量赋值给另一个表示数据范围大的变量 强制类型 ...
- Java基础——常用类型转换
关于类型转化问题: (1)String--------->char / char[ ] String str = "ab"; char str1 = str.charAt(0 ...
随机推荐
- 常见sql注入的类型
这里只讲解sql注入漏洞的基本类型,代码分析将放在另外一篇帖子讲解 目录 最基础的注入-union注入攻击 Boolean注入攻击-布尔盲注 报错注入攻击 时间注入攻击-时间盲注 堆叠查询注入攻击 二 ...
- ansible-yaml语法
1. 基础语法 - yaml结果通过空格来展示 - 数组使用"- "来表示 //注意:-后边要有一个空格 - 键值对使用": "来表示 //注意::后边要有一个 ...
- 大json直接序列化成dataset
rtnDs= JsonConvert.DeserializeObject<DataSet>(strBuff);
- npx是什么
npx是一个执行npm软件包的二进制文件,通俗的讲,他可以执行npm的一些指令 在npm>5.2.0 的时候npm里面就集成了npx 比如npx webpack 他会执行node_modules ...
- python的循环语句
python的循环语句有两种:for 和 while,for循环是对可迭代对象进行迭代并处理,因此for的对象是一个可以迭代的对象,而while循环的条件则是一个布尔值可以是一个返回布尔值的表达式. ...
- [POI2015]PUS [线段树优化建图]
problem 线段树优化建图,拓扑,没了. #include <bits/stdc++.h> #define ls(x) ch[x][0] #define rs(x) ch[x][1] ...
- Spark Streaming:updateStateByKey报错 is not applicable for the arguments...
ones.updateStateByKey(new Function2<List<Integer>, Optional<Integer>, Optional<Int ...
- 题解【AcWing91】最短Hamilton路径
题面 看到数据范围这么小,第一眼想到爆搜. 然而这样做的复杂度是 \(\mathcal{O}(n! \times n)\) 的,明显会 TLE. 于是考虑状压 DP. 我们设 \(dp_{i,j}\) ...
- Python之路Day11
函数名的第一类对象及使用 当作值,赋值给变量 def func(): print(1) print(func) #查看函数的内存地址 a=func print(a) a() 可以当作容器中的元素 de ...
- [USACO08JAN] 手机网络 - 树形dp
经典问题系列 覆盖半径\(1\)的最小点覆盖集 \(f[i][0]\) 表示不在此处建信号塔,但\(i\)及其子树都有信号 \(f[i][1]\) 表示在此处建信号塔,但\(i\)及其子树都有信号 \ ...