11_数据类型

java中的数据类型
* 基本数据类型 (4类八种)
* byte short int long
* float double
* char
* boolean
* 引用类型 : 对象类型
* 说明
* java中存在基本类型,基本数据类型不是对象,不能调用方法,所以 才会有有基本类型的包装类
* java基本类型的包装类
* byte - Byte
* short -Short
* int - Integer
* long - Long
* float - Float
* double - Double
* char - Character
* boolean - Boolean
*
Scala中的数据类型
* 说明
* Scala中所有基本类型都是对象,且都是 Any 的子类
* 数据类型的分类
* 数值类型(AnyVal)
* 引用类型(AnyRef)
* 几个特殊类型
* 1. String 是java中String的增强
* type String = java.lang.String
* 2. Unit 类型
* 相当于java中的void,用于方法的返回值位置
* 与void的区别是 Unit是一个类,且只有()一个对象,而void是一个关键字
* 3. Null 类型
* Null是一个类型,只要一个对象null,他是所有引用类型(AnyRef)的子类
* 4. Nothing 类型
* 所有数据类型的子类,主要用在一个函数没有明确的返回值时使用,这样返回return的
* 返回值能被任何类型使用
* 数据类型分类
* Byte : 占1byte
* Short : 占2byte
* Int : 占4byte
* Long : 占8byte
* Float : 占4byte
* Double : 占8byte
* Char : 占1byte
* Boolean : 占1byte
*
* Unit : 表示方法没有返回值,和java、c中的void类似,只有一个对象 ()
* Null : null,所有引用类型的子类,只有一个对象null
* Nothing : 所有数据类型的子类,当函数 不知道返回值类型时,可以使用Nothing来接收
* 使用场景 : 抛异常
*
* 自动类型转换
* 转换原则 : 低精度的值向高精度的值,自动类型转换(隐式转换)
* 转换顺序 : 向自己精度最近的类型转换
* 注意事项
* 1. (byte、short)和char不会自动类型转换
* 2. byte、short、char 计算是会先将其转换成int类型
* 3. 当多种类型 混合计算时,会先将低类型数据转换成 高类型数据在计算
* val num = 1 + 2.1 (会先将1提升为1.0再计算)
*
* 强制类型转换
* 使用场景 : 高精度向低精度转换
* 风险 : 精度丢失
* 方法 : 数据对象.转换方法
* 示例 : 10.toByte
Scala 数据类型继承关系图

 

 代码示例

复制代码
/**
  * @author gaocun
  * @create 2021-10-16 7:01 PM */
object 数据类型_05 {
  /*
  *  java中的数据类型
  *     基本数据类型 (4类八种)
  *       byte short int long
  *       float double
  *       char
  *       boolean
  *     引用类型 : 对象类型
  *  说明
  *     java中存在基本类型,基本数据类型不是对象,不能调用方法,所以 才会有有基本类型的包装类
  *  java基本类型的包装类
  *     byte - Byte
  *     short -Short
  *     int - Integer
  *     long - Long
  *     float - Float
  *     double - Double
  *     char - Character
  *     boolean - Boolean
  *
  *   Scala中的数据类型
  *   说明
  *      Scala中所有基本类型都是对象,且都是 Any 的子类
  *   数据类型的分类
  *      数值类型(AnyVal)
  *      引用类型(AnyRef)
  *   几个特殊类型
  *       1. String 是java中String的增强
  *           type String        = java.lang.String
  *       2. Unit 类型
  *         相当于java中的void,用于方法的返回值位置
  *         与void的区别是 Unit是一个类,且只有()一个对象,而void是一个关键字
  *       3. Null 类型
  *         Null是一个类型,只要一个对象null,他是所有引用类型(AnyRef)的子类
  *       4. Nothing 类型
  *         所有数据类型的子类,主要用在一个函数没有明确的返回值时使用,这样返回return的
  *         返回值能被任何类型使用
  *   数据类型分类
  *     Byte : 占1byte
  *     Short : 占2byte
  *     Int : 占4byte
  *     Long : 占8byte
  *     Float : 占4byte
  *     Double : 占8byte
  *     Char : 占1byte
  *     Boolean : 占1byte
  *
  *     Unit : 表示方法没有返回值,和java、c中的void类似,只有一个对象 ()
  *     Null : null,所有引用类型的子类,只有一个对象null
  *     Nothing : 所有数据类型的子类,当函数 不知道返回值类型时,可以使用Nothing来接收
  *       使用场景 : 抛异常
  *
  *   自动类型转换
  *      转换原则 : 低精度的值向高精度的值,自动类型转换(隐式转换)
  *      转换顺序 : 向自己精度最近的类型转换
  *   注意事项
  *         1. (byte、short)和char不会自动类型转换
  *         2. byte、short、char 计算是会先将其转换成int类型
  *         3. 当多种类型 混合计算时,会先将低类型数据转换成 高类型数据在计算
  *             val num = 1 + 2.1 (会先将1提升为1.0再计算)
  *
  *   强制类型转换
  *      使用场景 : 高精度向低精度转换
  *      风险 : 精度丢失
  *      方法 : 数据对象.转换方法
  *             示例 : 10.toByte
  * */

  def main(args: Array[String]): Unit = {
    // Unit : 表示方法没有返回值,和java、c中的void类似,只有一个对象 ()
    def Test_Unit(): Unit = println("test Unit")

    var r1: Unit = Test_Unit
    println("打印Unit类型的对象:" + r1)

    // Null : null,所有引用类型(AnyRef)的子类,只有一个对象null
    var s1: String = null
    //var n1: Int = null
    // Error:(77, 19) an expression of type Null is ineligible for implicit conversion

    //Nothing : 所有数据类型的子类,当函数 不知道返回值类型时,可以使用Nothing来接收
    def Test_Nothing(x: Int): Nothing = {
      throw new Exception("error")
    }

    try {
      Test_Nothing(1)
    } catch {
      case ex: Exception => {
        println("捕获异常error")
      }
    }

    //数据类型转换
    var b1: Byte = 1
    var sh1: Short = 2
    var c1: Char = 'a'
    var i1: Int = 10

    //(byte、short)和char不会自动类型转换
    i1 = c1
    //b1 = c1
    //    Error:(108, 10) type mismatch;
    //    found   : Char
    //    required: Byte
    //    b1 = c1

    // byte、short、char 计算是会先将其转换成int类型
    var i2 = b1 + sh1 + c1
    printf("结果类型为%s 值为:%d\n", i2.getClass, i2)
    //结果类型为int 值为:100

    //当多种类型 混合计算时,会先将低类型数据转换成 高类型数据在计算
    var d1 = 10 + 20.1
    println(s"结果类型为${d1.getClass} 值为:${d1}")
    10.toByte

    //强制类型转换 (精度丢失案例)
    var n: Int = 130
    var b: Byte = n.toByte
    println(b)


  }

}
复制代码

java 数据类型转换面试题

复制代码
/**
 * @author gaocun
 * @create 2021-10-16 4:59 PM
 */
public class demo {
    public static void main(String[] args) {
        /*
        * java中自动类型转换
        *   1. 自动类型转换 优先先 举例自己精度最近的类型转换
        *       byte -> short -> int -> long
        *   2. char 和 int 可以自动类型转换 (char和byte、short、long不可以)
        * */
        byte id = 10;
        test(id);
    }

    private static void test(byte id) {
        System.out.println("byte - 参数");
    }

    private static void test(short id) {
        System.out.println("short - 参数");
    }

    private static void test(int id) {
        System.out.println("int - 参数");
    }

    private static void test(char id) {
        System.out.println("char - 参数");
    }

    private static void test(long id) {
        System.out.println("long - 参数");
    }


}
复制代码

 

 









posted @   学而不思则罔!  阅读(67)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界
点击右上角即可分享
微信分享提示