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 - 参数"); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界