类型转换

  1. class Test{
  2. public static void main(String[] args) {
  3. byte b = 3;
  4. // b = b + 2;
  5. /*
  6. Test.java:5: 错误: 不兼容的类型: 从int转换到byte可能会有损失
  7. b = b + 2;
  8. ^
  9. 1 个错误 错误: 编译失败
  10. 【这是Java是强类型语言导致的】
  11. */
  12. /*
  13. 错误地方:
  14. byte b = 3;
  15. b = b + 2;
  16. 错误原因:
  17. 2 是整数,默认是int型占4个字节、32位。不同数据类型之间不可以直接进行运算。对于整数类型来讲,可以进行运算,但前提是需要进行一个叫做 “ 自动类型提升 ”的操作,提升为同一种数值类型的操作
  18. //提升原则是:“ 以大为主 ,小的往大提升 ”
  19. */
  20. //将 b = b + 2; 改写成:
  21. b = (byte)(b + 2); //【要由括号】
  22. //这就是强制类型转换 变量名 = (数据类型)(表达式);
  23. System.out.println( b );
  24. }
  25. }
  26. /*
  27. 输出结果:
  28. 5
  29. */
  1. class Test{
  2. public static void main(String[] args){
  3. System.out.println('A' + 0);
  4. System.out.println('1' + 0);
  5. }
  6. }
  7. /*
  8. 输出打印结果:
  9. 65
  10. 49
  11. */
  • 自动类型转换(也叫隐式类型转换
  • 强制类型转换(也叫显式类型转换
  • 类型转换的原理
  • 什么时候要用强制类型转换
  • 表达式的数据型自动提升
    1. 所有的 byte 型、short 型和 char 型的值将被提升到 int 型。
    2. 如果一个操作数是 long 型,计算机结果就是 long 型
    3. 如果一个操作数是 float 型,计算机结果就就是 float 型。
    4. 如果一个操作数是 double 型,计算机结果就是 double 型。
  1. /*
  2. Q:
  3. int 和 float 在内存中都是占两个字节、32位, float 和 int 做运算时结果是 float 和 int?
  4. A:
  5. 结果是 float ,因为 float 小数点
  6. */
  7. class Test{
  8. public static void main(String[] args){
  9. int i = 3;
  10. float f = 3.14f;
  11. f = f - i;
  12. System.out.println(f);
  13. //System.out.println( (char)('a' +1 ) );
  14. }
  15. }
  16. /*
  17. 输出打印结果:
  18. 0.1400001
  19. */
  • 分析

    1. System.out.println( 'a' ) 与 System.out.println( 'a' +1 )的区别。
  1. class Test{
  2. public static void main(String[] args){
  3. System.out.println('a');
  4. //打印出a而不是97的原因是,因为计算机会把字符本身作为输出的效果显示
  5. System.out.println('a' + 1);
  6. // 'a' + 1代表在做运算 a对应的十进制数 + 1
  7. //字母 a 在ASCII表中对应的十进制数是97,97 + 1 = 98
  8. }
  9. }
  10. /*
  11. 输出打印结果:
  12. a
  13. 98
  14. */
  1. class Test{
  2. public static void main(String[] args){
  3. // char 型强制类型转换成 int 型
  4. System.out.println( (int)('a') );
  5. // int 型强制转换成 char 型
  6. System.out.println( (char)('a' +1 ) );
  7. }
  8. }
  9. /*
  10. 输出结果:
  11. 97
  12. b
  13. */

黑马程序员_毕向东_Java基础视频教程——类型转换(随笔)的更多相关文章

  1. 黑马程序员_毕向东_Java基础视频教程——java语言组成部分(随笔)

    java语言组成部分 Java是一种强类型语言,所谓强类型语言就是对具体的数据进行不同的定义.对类型的划分的十分细致,对内存中分配了不同大小的内u你空间 关键字 标识符 注释 变量和常量 运算符 语句 ...

  2. 黑马程序员_毕向东_Java基础视频教程——if 语句(单条语句)(随笔)

    if 语句(单条语句) 格式(三种) [注意]:如果 if 控制的语句只有一条,则 这个 { } 括号可以不写 if (条件表达式) { 执行语句; } class Test{ public stat ...

  3. 黑马程序员_毕向东_Java基础视频教程——三元运算符(随笔)

    三元运算符:三个元素参与运算的符号 [三元运算符:简略版的 if(){} else() {}语句] class Text { public static void main(String[] args ...

  4. 黑马程序员_毕向东_Java基础视频教程——位运算练习(随笔)

    位运算(练习) 最有效率的方式算出 2乘以 8等于几 2 << 3 = 2 * 2^3 = 2 * 8 = 16 对于两个整数变量的值进行互换(不需要第三方变量) class Test { ...

  5. 黑马程序员_毕向东_Java基础视频教程——位运算符(随笔)

    位运算符 左移和右移 左移 左移越移越大. 往左移几位就相当于这个数乘于2的几次方 3 << 2 --> 3 * 2^2 = 3 * 4 = 12 3 << 3 --&g ...

  6. 黑马程序员_毕向东_Java基础视频教程——逻辑运算符(随笔)

    逻辑运算符 逻辑运算符用于连接 boolean 型的表达式 & : 只要两边都是 boolean 表达结果,有一个为 false ,则结果就是 false 只要两边都为 true 则结果就为 ...

  7. 黑马程序员_毕向东_Java基础视频教程——赋值(随笔)

    赋值 class Test{ public static void main(String[] args) { int i = 3; // += -= *= /= %= 它们凑一块成为一个运算符 x ...

  8. 黑马程序员_毕向东_Java基础视频教程——转义字符(随笔)

    转义字符 转义字符 通过 \ 来转变后面的字母或符号的含义 \n :换行 \b :退格.相当于 backspace \r : 相当于回车键. Windows系统中,回车是由两个字符来表示 \r \n. ...

  9. 黑马程序员_毕向东_Java基础视频教程——算术运算符小点(随笔)

    算术运算符小点 ​ 取模 class Test{ public static void main(String[] args){ System.out.println( 1 % -5); System ...

随机推荐

  1. 几个可以提高工作效率的Python内置小工具

    在这篇文章里,我们将会介绍4个Python解释器自身提供的小工具.这些小工具在笔者的日常工作中经常用到,减少了各种时间的浪费,然而,却很容易被大家忽略.每当有新来的同事看到我这么使用时,都忍不住感叹, ...

  2. java Int类型转为double 类型;string转double

    int a=12; double b=(double)a; or double c=Double.valueOf((double)a); string a_s="12"; doub ...

  3. python 利用numpy同时打乱列表的顺序,同时打乱数据和标签的顺序

    可用于网络训练打乱训练数据个标签,不改变对应关系 方法一: np.random.shuffle (无返回值,直接打乱原列表) state = np.random.get_state() np.rand ...

  4. Nginx知多少系列之(十四)Linux下.NET Core项目Nginx+Keepalived高可用(主从模式)

    目录 1.前言 2.安装 3.配置文件详解 4.工作原理 5.Linux下托管.NET Core项目 6.Linux下.NET Core项目负载均衡 7.负载均衡策略 8.加权轮询(round rob ...

  5. git flow配置问题

    Mac使用 git flow 的时候,当 -m 进行换行有时消息会被截断,怎么解决? 原因: brew 上的 gnu-getopt 这个包未配置好 步骤: 1. 在 ~/.gitflow_export ...

  6. 创建线程的方式三:实现Callable接口-----JDK5.0 新增

    package com.yhqtv.java2; /* * 创建线程的方式三:实现Callable接口-----JDK5.0 新增 * * 如何理解实现Callable接口的方式创建多线程比实现Run ...

  7. 深入研究Clang(十) Clang Static Analyzer简介

    Clang Static Analyzer 官网地址:http://clang-analyzer.llvm.org/ Clang Static Analyer是一个源码分析工具,它可以发现C.C++和 ...

  8. 导入sql错误

    2019独角兽企业重金招聘Python工程师标准>>> 导入sql错误: This function has none of DETERMINISTIC, NO SQL, or RE ...

  9. vue 遮罩层阻止默认滚动事件

    vue中提供 @touchmove.prevent 方法可以完美解决这个问题. <div class="child" @touchmove.prevent ></ ...

  10. DFS--POJ 1190 生日蛋糕

    Description 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体. 设从下往上数第i(1 <= i <= M)层蛋糕是半径为Ri ...